1. Missing or misconfigured authentication
If your domain doesn’t have valid SPF, DKIM, and DMARC records, receivers can’t verify you — and increasingly won’t deliver you. This is the most common single cause, and since the 2024 Gmail and Yahoo requirements it’s often a hard block rather than a soft penalty.
Fix: publish all three records. Walk through it in the email authentication guide or jump straight to the SPF, DKIM, and DMARC generators.
2. Poor domain or IP reputation
Receivers track how recipients react to your mail. A new domain with no history, a shared IP that someone else abused, or a recent spike in complaints all drag placement down. Fix: warm up new sending domains gradually rather than blasting volume on day one, send from a domain you control, and prefer a provider that manages IP reputation for you. Check whether your domain or IP is on a major blocklist.
3. A mismatched or free-mail From address
Sending “from” a Gmail or Yahoo address through your own servers fails DMARC alignment and looks like spoofing. So does a Fromdomain that doesn’t match your authenticated domain. Fix: always send from a subdomain or domain you own and have authenticated, e.g. notifications@yourdomain.com.
4. Spam-trigger content and broken HTML
Filters score the message itself. Things that hurt you:
- All-caps or money-and-urgency subject lines.
- A single giant image with almost no text.
- Link shorteners, or link domains that don’t match the sender.
- Malformed HTML, or HTML with no plain-text alternative.
Fix: send a balanced HTML + plain-text message, keep a reasonable text-to-image ratio, and link to your own domain.
5. Bounces, complaints, and stale lists
High bounce rates and spam complaints tell receivers your mail isn’t wanted. Fix: remove hard bounces immediately, honor unsubscribes and spam reports fast, and never send to scraped or purchased lists. For transactional mail, only send to addresses that just performed an action (signed up, bought, requested a reset).
6. No one-click unsubscribe (for bulk mail)
Gmail and Yahoo now require bulk senders to include a one-click unsubscribe header and honor it within two days. Missing it gets commercial mail filtered. Fix: add the List-Unsubscribe and List-Unsubscribe-Post headers — see the List-Unsubscribe & RFC 8058 guide. (Purely transactional mail like password resets is generally exempt.)
How to diagnose it
Open a message that landed in spam and read the headers. Look for spf=pass, dkim=pass, and dmarc=pass in the Authentication-Results — any failor missing line points straight at the problem. A seed test to a few Gmail, Outlook, and Yahoo accounts tells you where you’re landing before a real send.
Fix authentication first; it resolves the majority of spam-folder cases on its own.