Guides

Emails going to spam: find the cause, receiver by receiver

Last updated 2026-09-21

Your SPF, DKIM and DMARC checks pass and your mail still lands in spam. The filter is answering a different question. Authentication says who sent the message. The spam filter decides whether the recipient wants it.

Does passing SPF, DKIM and DMARC keep mail out of spam? No. They're the requirement to be considered. The verdict comes from complaints, the list, the content and your domain's history.

  1. Find out which receivers are filtering you. Send the same message to a Gmail, an Outlook.com and a Yahoo mailbox you control. Note where each one lands. A problem at one receiver has one cause. A problem at all three is usually the list or the content.
  2. Read Google Postmaster Tools. Verify your domain, then open the spam rate and domain reputation dashboards. This is the one place a receiver shows you its own numbers.
  3. Check who asked for this mail. Pull the addresses that bounced, the ones that unsubscribed, and the ones you added from a purchase or an export. Stop sending to all three groups.
  4. Check the content and links. Open the message in a plain client. Look at the link domains, the image-to-text ratio, the subject and the display name.
  5. Check the sending IP on the blocklists. A listing filters everything from that address regardless of how good your list is.

Filtering is silent, rejection is loud

A rejection comes back as a bounce with a code such as 550 5.7.1, and the sender gets told. Spam placement produces nothing. The receiver accepts the message and files it where the recipient rarely looks.

If you've got a bounce, you're on the wrong page. Our bounce and error pages cover the codes one by one. If the message was accepted and vanished, keep reading.

One exception blurs the line. A DMARC policy of p=quarantine asks receivers to file failing mail as spam, so a DMARC failure can look like filtering. Check the dmarc= result in the received message's Authentication-Results header before you look anywhere else. If it says fail, fix that first. Our quarantined email guide covers that path.

Gmail shows you its numbers in Postmaster Tools

Google publishes the threshold. Its sender guidelines tell every sender to keep the spam rate reported in Postmaster Tools below 0.3 percent, and to aim below 0.1 percent. The rate counts messages delivered to engaged recipients' inboxes that those recipients then marked as spam.

The domain reputation dashboard grades your domain. Google's dashboard definitions say a High reputation means a history of very low spam rates, and a Low one means a history of sending a significant volume of spam. A Low or Bad grade means Gmail expects spam from you and files accordingly.

Two Gmail behaviours put mail in spam on their own. Gmail's spam explanations say that if someone sends an email after you unsubscribe, their emails go directly to Spam. They also say that once a recipient reports a sender, later emails from the same sender might be sent to the Spam folder. Neither one responds to a better subject line. Stop mailing the people who opted out.

Dashboards can be empty on days your volume is low, because Google withholds data to protect users' privacy. A domain that sends a few hundred messages a day may never see a reputation grade. That's a limit of the tool, not a sign that something's wrong.

Outlook and Yahoo publish rules instead of dashboards

Yahoo's sender requirements ask for SPF and DKIM, a DMARC policy of at least p=none, and an aligned From domain. They also want a spam rate below 0.3 percent and a one-click unsubscribe honoured within two days. Miss one and your mail gets filtered before anything else is considered.

Microsoft applies the same shape of rule to Outlook.com, Hotmail and Live, and enforces it with a rejection rather than a filter. Our 550 5.7.515 page has the details. For mail that Outlook accepts and files as junk, read the compauth= value in the Authentication-Results header. A fail there means Microsoft's composite check decided the message was spoofed, even if SPF and DKIM each passed.

Microsoft and the blocklists keep their opinion per IP rather than per domain. Our domain reputation guide walks through each system's own lookup.

Complaints come from the list, not the message

A complaint is a recipient pressing the spam button. Recipients press it when they don't remember asking for your mail, when unsubscribing looks harder than reporting, and when the mail keeps coming after they left. All three are list problems.

Put a working one-click unsubscribe on every marketing and subscription message. RFC 8058 defines it: a List-Unsubscribe header with an HTTPS address, a List-Unsubscribe-Post header carrying List-Unsubscribe=One-Click, and a DKIM signature that covers both headers. Google requires it from bulk senders and Yahoo requires it from everyone it counts as bulk. Process the request within two days.

Remove hard bounces after the first one. A receiver watches how often you send to addresses that don't exist, and a high rate looks like a bought or scraped list. Our bounce guide says which codes mean the address is gone.

Send to people who asked, at the rate they expected. A list that hasn't been mailed in a year has forgotten you. Warm it back up in small batches and drop the addresses that don't open anything.

Content that trips a filter on its own

Gmail lists an empty subject or an empty body as a spam signal in its own right, because spammers send those. Send nothing that couldn't stand on its own as a message.

Look at every link domain. Tracking links on a shared domain carry the reputation of everyone else using that domain. If your platform offers a branded tracking domain, use it. A link shortener is a stranger's reputation attached to your message.

Keep the display name and the address consistent. A display name that reads like a well-known brand over an address that doesn't match is the pattern filters use to spot impersonation. Gmail describes it as an address that looks very similar to a known sender.

A message that's one large image with a line of text gets read as an attempt to hide content from the filter. Put the words in the body as text.

A shared IP or a young domain carries someone else's history

On a shared sending pool, the IP's reputation is the average of every customer on it. A bad neighbour puts your mail in spam. Ask your platform which pool you're on and whether a dedicated IP is available at your volume.

A domain that started sending last week has no history. Receivers treat a burst of mail from an unknown domain with suspicion. Start with low volume to engaged recipients and grow it over weeks, not days.

Check the sending IP against Spamhaus and the other lists. Our Spamhaus delisting guide shows which list has you and what each one wants fixed before removal.

DMARC reports show what passed, not where it landed

An aggregate report tells you which sources passed and failed, and what the receiver did with the failures. It doesn't say whether a passing message reached the inbox or the spam folder. No receiver reports placement in DMARC.

The reports still earn their place in this diagnosis. A source you don't recognise, sending as your domain and failing, drags your domain's reputation down while your own mail passes. On a paid plan we email you the first time a source fails DMARC, and the weekly digest shows the reported results by source. Your first domain is free.

Test the fix the way the filter will see it

After a change, send a fresh message to the test mailboxes from the same platform and the same address. A test from your personal account proves nothing about the marketing platform.

Read Postmaster Tools again after a week of sending. Reputation moves on volume over time, so a single clean day won't shift the grade. Keep the complaint rate down and the grade follows.

Check all three records for your domain

SPF, DKIM and DMARC in one pass, read the way receivers read them.

Free · No signup · The result names what to change

Questions

Why do my emails go to spam when SPF, DKIM and DMARC all pass?

Authentication proves who sent the message. The spam filter then judges whether the recipient wants it, using complaint rates, list quality, content and the history of your domain and IP. A pass is the entry ticket, not the verdict.

How do I find out why Gmail puts my mail in spam?

Verify your domain in Google Postmaster Tools and read the spam rate and domain reputation dashboards. Keep the spam rate under 0.3 percent and aim for under 0.1 percent. Then send a test to a Gmail mailbox you control and read its headers.

Does asking recipients to click Not spam fix it?

It helps that one mailbox and it feeds a small signal back to the filter. It won't repair a high complaint rate or a bad domain reputation. Fix the cause, then ask.

Is spam placement the same as a bounce?

No. A bounce is a refusal with an error code and you get told. Spam placement is silent: the message is accepted and filed where the recipient rarely looks. Only receiver dashboards, seed tests and recipients tell you it happened.

DomainCanary is a DMARC monitoring service that protects your domain from email spoofing without blocking your own mail.