Spam filters do not explain themselves. A message either appears in the inbox or it does not, and the sender is left guessing. In practice, the great majority of legitimate mail that lands in spam does so for one of eight reasons.
1. Authentication is missing or misaligned
No SPF, no DKIM, or a DMARC policy that does not align with the From domain. Since 2024 this alone is enough for Gmail and Yahoo to quarantine bulk mail. A seed test shows the verdicts per provider; a fail or none here is where to start.
2. The sending IP or domain has a poor reputation
Shared IPs at a cheap sending service, a domain that sent to a bought list last year, or a sudden complaint spike all follow you around. Check public blocklists and the reputation dashboards of the large providers. Spam placement at every mailbox of one provider, with authentication passing, usually points here.
3. Nobody engages
Providers watch what recipients do. Messages that are deleted unread, never opened or marked as spam train the filter against you. Messages that are opened, replied to and moved to the inbox train it in your favour. Sending less often to people who read you beats sending more often to everyone.
4. The content looks like spam
All-caps subjects, excessive punctuation, image-only emails with no text, hidden text, and copy that reads like a lottery notification still trip content filters. So does a mismatch between the From name and the brand in the body.
5. Links point somewhere suspicious
Link shorteners, tracking domains with bad reputations, and links whose visible text shows one domain while the href goes to another are classic phishing signals. Keep links on your own domain or on a tracking domain you control.
6. The list is tired
Addresses that bounced, role accounts, spam traps harvested from old lists and subscribers who last opened two years ago all drag the sender score down. Remove hard bounces immediately and sunset inactive addresses.
7. Volume jumped overnight
A new domain or IP that goes from zero to 100,000 messages in a day looks like a compromised account. Warm up gradually, starting with the most engaged recipients.
8. Forwarding broke the chain
Mail forwarded by a recipient's old address, a mailing list or an internal alias can lose SPF alignment and sometimes DKIM. DMARC then fails at the final hop although your own setup is fine. ARC helps, but you cannot control it; what you can do is keep DKIM signing the whole body and avoid content that intermediaries rewrite.
Finding the cause
Run a seed test with the actual campaign. If authentication fails, fix that first. If authentication passes but one provider spams everything, it is reputation. If only some mailboxes at a provider spam it, engagement and content are the likely culprits. Repeat after each fix and keep the reports; trends across weeks tell you more than a single result.