Why Is My Email Going to Spam? A Checklist
Diagnose spam placement in five steps: check Authentication-Results, fix SPF/DKIM/DMARC, review sender reputation, inspect content, and separate transactional from marketing mail.

When mail lands in spam, the cause is almost always in one of four places: domain authentication, sender reputation, content, or recipient behaviour. Check them in that order. Most problems turn up in the first two steps.
Step 1: Read the verdict the receiver gave you
Don't guess; look at the evidence. In Gmail, open the message → "Show original" and find the Authentication-Results line:
Authentication-Results: mx.google.com;
dkim=pass header.d=yourcompany.com;
spf=pass smtp.mailfrom=bounces.yourcompany.com;
dmarc=pass (p=NONE) header.from=yourcompany.com
If all three say pass, authentication isn't the problem. Skip to step 3. If any of them says fail, softfail or none, fix that first; nothing further down matters until you do.
Step 2: Fix DNS authentication
SPF: a domain may have only one v=spf1 record. The most common mistake is adding a second one after switching providers, which makes both invalid. Merge them into one:
v=spf1 include:_spf.rovela.dev include:_spf.google.com ~all
SPF also allows at most 10 DNS lookups. Stack too many includes and the check fails outright.
DKIM: the record value is long and easy to truncate when copying, and some control panels add their own quotes and spaces. Run dig TXT selector._domainkey.yourcompany.com and make sure the result matches what your provider gave you, character for character.
DMARC: Gmail and Yahoo downgrade bulk senders that have no DMARC record. Start with the most permissive policy:
_dmarc.yourcompany.com TXT "v=DMARC1; p=none;"
After two quiet weeks with no legitimate mail failing authentication, tighten it step by step towards quarantine.
Step 3: Check your sender reputation
If authentication passes and mail still goes to spam, reputation is the likely cause:
- Too many bounces: repeatedly sending to addresses that don't exist is the fastest way to lose reputation. Stop sending to hard-bounced addresses immediately
- Too many complaints: Gmail requires a complaint rate below 0.3%, and below 0.1% is safer. Recipients who can't find an unsubscribe link press "Report spam" instead
- A new domain sending in volume: a domain with no history that sends tens of thousands of messages on day one will almost certainly be throttled. Warm it up gradually
Rovela adds hard-bounced, complained and unsubscribed addresses to a suppression list automatically, and later sends to them are skipped. Eligible messages also get the List-Unsubscribe one-click unsubscribe headers automatically.
Step 4: Check the content
Content matters less than most people think, but these do trigger filters:
- A message that is one large image with almost no text
- Links to domains unrelated to the sending domain, or through URL shorteners
- Broken HTML, such as markup pasted straight from Word
- HTML with no plain-text version
Step 5: Separate transactional mail from marketing
If verification codes and password resets go out from the same domain and address as promotions, the reputation those promotions lose drags the codes down with them. Split them by subdomain: notify.yourcompany.com for system mail, news.yourcompany.com for marketing.
Checklist
- In
Authentication-Results, do SPF, DKIM and DMARC all showpass? - Is there exactly one SPF record, with 10 DNS lookups or fewer?
- Is the DKIM record complete, not truncated?
- Is there a DMARC record?
- Is the bounce rate under 2% and the complaint rate under 0.1%?
- Do you stop sending to hard-bounced addresses immediately?
- Does marketing mail carry one-click unsubscribe?
- Does every message have both HTML and plain text?
- Are transactional and marketing mail sent separately?
Further reading: DKIM, SPF and DMARC explained, Handling bounces, IP warm-up and reputation.
When you add a domain to Rovela, the dashboard generates every DNS record above and checks each one until it is live. Start free.