Why are my emails going to spam? Six checks, in the order they fail
The diagnostic we run when mail vanishes, ordered by how the failures actually happen. Every check comes with a five-minute test and the fix.
Emails land in spam for six reasons, and they fail in a predictable order: authentication, domain reputation, complaint rate, content, list quality, engagement. Work through the checks in that order and you will usually find the culprit inside an hour, because the failures at the top of the list are both the most common and the fastest to test. This is the diagnostic sequence from our email deliverability handbook, and it is the one we run on our own mail.
Here is the whole diagnostic on one screen. The rest of the article is each check in detail.
| # | Check | The 60-second test |
|---|---|---|
| 1 | Authentication | Gmail "Show original" on a message you send yourself |
| 2 | Domain reputation | Google Postmaster Tools plus a blacklist scan |
| 3 | Complaint rate | Postmaster spam-rate chart against the 0.1% line |
| 4 | Content triggers | mail-tester.com score on the real campaign |
| 5 | List quality | Hard bounces divided by delivered, against 2% |
| 6 | Engagement | Share of your list with no click in 90 days |
Check 1: authentication (the one that bounces now)
Since November 2025, Gmail rejects unauthenticated mail with a 550-5.7.26 error instead of filing it in spam (Google sender guidelines, enforcement documented across the industry in late 2025). Microsoft made the same move for Outlook, Hotmail and Live addresses in May 2025, with a 550 5.7.515 rejection. Partial authentication still lands you in the spam folder: SPF passing while DKIM fails, or both passing on a domain that does not match your From address, which is a DMARC alignment failure.
Test it today. Send a message to a Gmail address you own, open it, choose "Show original" from the three-dot menu, and read the summary table at the top. You want three PASS verdicts: SPF, DKIM, DMARC. Then confirm the DNS from a terminal:
dig TXT yourdomain.com +short
dig TXT _dmarc.yourdomain.com +short
The first should return a record starting v=spf1. The second should return one starting v=DMARC1. Silence on either line is your answer.
The fix: add the SPF include and DKIM records your sending provider lists in its dashboard, then publish a minimum DMARC record (v=DMARC1; p=none; plus a reporting address). Our SPF, DKIM and DMARC walkthrough shows the literal records.
One trap we hit ourselves: forwarding breaks alignment. In June 2026 we watched Gmail reject 73% of the mail we were mirroring through Cloudflare's forwarding, with no error visible on our side. The mail just vanished. We replaced the forward with an API insert and the failures stopped the same day. If your mail passes through any forwarder on the way to its destination, test the full path, not just your DNS.
Check 2: domain reputation (new domains are on probation)
Mailbox providers score your sending domain's history, and a new domain has none. Reputation matures over roughly 4 to 8 weeks, and during that window volume itself is a signal: a fresh domain pushing 5,000 emails on day 3 looks exactly like a spammer cycling through burner domains, because that is who else sends that pattern.
Test it: register your domain in Google Postmaster Tools (free, verified with one TXT record) and read the compliance and spam-rate dashboards. Fair warning: the charts need meaningful daily Gmail volume before they show anything. At dozens of emails a day, ours are mostly blank too. While you are logged in anywhere, run a blacklist check on the domain and your relay's IPs.
The fix is warm-up: start around 150 emails on day 1 and multiply by roughly 1.4 each day, reaching about 1,100 a day by day 7, then grow 10 to 20 percent daily. That curve comes from Resend's documented domain ramp, and it is the one our send path enforces in code. Send to your most engaged recipients first, and keep the cadence steady. Gaps cost progress.
Check 3: your spam complaint rate
Google's bulk-sender rules (in force since February 2024) draw two lines: keep user spam reports under 0.1% of delivered mail, and never reach 0.3%. At or above 0.3%, Gmail withholds delivery mitigation until you have been back under the line for 7 consecutive days. Seven days of spam-foldered mail is a long time for a newsletter.
The math is harsher than it looks at small scale. Three reports on a 1,000-email send is 0.3%. One report on 300 is worse. We work the numbers at every list size in our complaint-rate breakdown.
Test it: the spam-rate chart in Postmaster Tools, same login as check 2.
The fix has two parts. First, make unsubscribing one click, because a hidden unsubscribe converts bored readers into complainers. Stamp both RFC 8058 headers on every campaign:
List-Unsubscribe: <https://yourdomain.com/unsub/TOKEN>, <mailto:unsub@yourdomain.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Second, suppress anyone who complains, immediately and permanently.
Check 4: content triggers
Content filters matter less than reputation, but a few patterns still hurt on their own: image-only emails, link shorteners, a fake "Re:" or "Fwd:" on a first contact, ALL-CAPS subject lines, and HTML with no plain-text part.
Test it: mail-tester.com hands you a one-time address. Send it your actual campaign, not a lorem-ipsum stand-in, and read the score out of 10. We treat that score as a pre-send gate.
The fix: send multipart/alternative with a genuine plain-text part, keep the text-to-image ratio at 60:40 or better, link only to your own domain, keep the From name and address stable, and give every image alt text. None of this is exotic. It is just tedious enough that spammers skip it, which is why filters check for it.
Check 5: list quality
A bounce rate above 2% tells providers the list is scraped, bought, or stale, and stale lists carry spam traps: addresses that exist only to catch senders who never verified consent. Role accounts such as info@ and admin@ complain at far higher rates than personal addresses, and postmaster@ should never be on a list at all.
Test it: divide hard bounces by delivered on your last send. Over 2% means stop sending and clean the list before anything else.
The fix: suppress hard bounces permanently on a suppression list that is applied before every send, retry soft bounces about 3 times over 14 days, require double opt-in, and reject role accounts at signup. Our own playbook makes the last two non-negotiable, because retrofitting hygiene onto a dirty list is much harder than refusing the bad addresses up front.
Check 6: engagement collapse
Mailbox providers weight replies above clicks and clicks above opens. Gmail favors recent engagement, Outlook favors consistent history, and Apple Mail Privacy Protection auto-fetches images, so open rates read high even when nobody is looking (Litmus has tracked this effect since Apple shipped MPP in 2021). A list where most people have ignored you for months drags every future send down, and the damage compounds: low engagement causes spam placement, which causes lower engagement.
Test it: count subscribers with no click or reply in 90 days. If that is most of your list, you have found the problem, and no DNS record will fix it.
The fix: send the next campaign to the engaged segment only, run one winback attempt on the rest, then sunset anyone inactive for 60 to 90 days. A small list that gets read outdelivers a big one that gets ignored.
How to stop emails going to spam: run the checks in order
The order is the diagnosis. Authentication failures reject your mail outright. Reputation and complaint problems bury everything you send for weeks. Content triggers hurt one campaign at a time, and list or engagement rot erodes slowly enough that most senders never connect cause to effect. Start at check 1 tonight: it takes five minutes, it is the only one with a hard cliff, and since November 2025 it decides whether your mail arrives at all.