Most articles about how to avoid spam filters in email marketing hand you a list of rules and leave you guessing. That is useless when you are staring at an open rate that fell from 34% to 9% overnight and you have no idea which of the twenty possible causes is the real one.
This guide takes a different approach: diagnose first, fix second, verify third. Every fix below is paired with a concrete verification method using free tools (seed testing, Gmail message headers, Google Postmaster Tools). By the end you will know exactly which lever moved the needle instead of changing ten things at once and learning nothing.
First, understand what you are actually fighting
Spam filters at Gmail, Outlook and Yahoo are not keyword scanners. They are machine learning systems that score your sending identity (domain, IP, authentication) and then adjust that score based on how real humans react to your mail. Content matters, but it is roughly the last 20% of the decision.
A filter is asking three questions in order:
- Are you who you claim to be? SPF, DKIM, DMARC, reverse DNS, TLS.
- Does your reputation say people want this? Complaint rate, spam trap hits, bounce rate, historic engagement on the domain and IP.
- Does this specific message look risky? Link reputation, image-to-text balance, HTML quality, redirect chains, attachment types.
If you fail question one, nothing else you do matters. That is why the fixes below are ordered by impact, not by how easy they are.
The 30-minute triage: find your failure mode before you touch anything
Deliverability problems leave fingerprints. Match your symptom to the likely cause before you start editing DNS records.
| Symptom | Most likely cause | Go to fix |
|---|---|---|
| Everything broke on one exact date | DNS change, ESP migration, new sending domain, expired DKIM key | Fixes 1 to 4 |
| Only Gmail is affected, Outlook is fine | Engagement collapse or complaint spike at Gmail | Fixes 6, 11, 12 |
| Only Outlook and Hotmail are affected | IP reputation, missing authentication, no unsubscribe header | Fixes 3, 5, 7 |
| Slow decline over 8 to 12 weeks | List fatigue, no sunset policy, dead contacts accumulating | Fixes 7, 9, 12 |
| Broke right after a big send or a new list import | Volume spike, purchased or scraped data, spam traps | Fixes 7, 8, 9 |
| One campaign fails, the rest are fine | Bad link domain, shortener, heavy image template | Fixes 10, 11 |
| Hard bounces above 2% with rejection text | Blocklisting or invalid addresses | Fixes 5, 7 |
Your free diagnostic toolkit
- Google Postmaster Tools: the only direct window into how Gmail scores your domain. Free, and required if Gmail is more than 20% of your list.
- Microsoft SNDS and JMRP: IP-level data and complaint feedback for Outlook, Hotmail and Live.
- A seed test tool such as Mail-Tester, or the free tier of a seed list provider: sends one message to a set of real mailboxes and reports inbox versus spam placement per provider.
- Gmail’s “Show original”: open any received campaign in Gmail, click the three dots, choose Show original. You get SPF, DKIM and DMARC results in plain language in about four seconds.
- MXToolbox blacklist check: tells you whether your sending IP or domain is on Spamhaus, SURBL, SpamCop or similar.
- A DMARC report parser: most vendors offer a free tier that turns raw XML aggregate reports into a readable dashboard.
Set a baseline before you change anything. Record your current spam rate in Postmaster Tools, your seed test inbox placement per provider, and your last four campaigns’ open and complaint rates. Without a baseline, you cannot prove a fix worked.

Fix 1: Publish a valid SPF record that does not exceed 10 DNS lookups
SPF tells receiving servers which servers are allowed to send on behalf of your domain. Two things break it constantly:
- More than one SPF record on the same domain. This is an automatic permanent error. You must merge everything into a single TXT record.
- The 10 DNS lookup limit. Every
include:costs a lookup. Stack your ESP, your CRM, your helpdesk, your invoicing tool and Google Workspace and you blow past it. The result ispermerror, which many filters treat as a failure.
A clean record looks like this:
v=spf1 include:_spf.google.com include:yourESP.com ~all
Use ~all (softfail) or -all (hardfail). Never use +all, and never leave a record ending in ?all, which tells filters you do not care.
How to verify
- Run your domain through an SPF validator and confirm the lookup count is 10 or under.
- Send yourself a campaign, open Show original in Gmail, confirm SPF: PASS with your sending domain listed.
- In your DMARC aggregate reports, check that SPF pass rates are above 98% across all sources.
Fix 2: Sign every message with DKIM using a 2048-bit key
DKIM is a cryptographic signature that proves the message was not altered and genuinely came from your domain. It is the single most important authentication signal because, unlike SPF, it survives forwarding.
Common failures we see during audits:
- Only the ESP’s shared domain is signing, not your own domain (this breaks DMARC alignment).
- 1024-bit keys still in place. Rotate to 2048-bit where your DNS provider supports it.
- A key that was rotated in the ESP but never updated in DNS, so signing silently fails.
- Multiple sending platforms with no key rotation plan. Keys should be rotated at least once a year with selectors like
s1ands2so you can swap without downtime.
How to verify
- Show original in Gmail should read DKIM: PASS and the signing domain must be your domain, not your ESP’s.
- Run a DKIM record lookup on your selector and confirm the public key resolves.
- Send a seed test and check that all major providers report a valid signature.
Fix 3: Move your DMARC policy beyond p=none
Since the bulk sender requirements introduced by Gmail and Yahoo took effect, and with Microsoft applying similar rules to consumer Outlook mailboxes, a published DMARC record is mandatory for anyone sending around 5,000 messages a day or more to a single provider. In practice, it is now expected of every commercial sender regardless of volume.
Start here and progress over roughly 6 to 10 weeks:
| Stage | Record | What it does |
|---|---|---|
| 1. Monitor | v=DMARC1; p=none; rua=mailto:[email protected] |
Collects reports, changes nothing. Run 3 to 4 weeks. |
| 2. Partial quarantine | p=quarantine; pct=25 |
Tests enforcement on a slice of traffic. Run 2 weeks. |
| 3. Full quarantine | p=quarantine; pct=100 |
All failing mail goes to spam. Run 2 weeks. |
| 4. Reject | p=reject |
Spoofed mail is blocked outright. The end goal. |
Do not jump straight to p=reject. If a legitimate system such as your CRM, your ticketing tool or a partner sending on your behalf is not aligned, you will block your own transactional mail.
How to verify
- Your DMARC dashboard should show 100% of legitimate volume passing with alignment before you escalate the policy.
- Google Postmaster Tools has a dedicated authentication view: SPF, DKIM and DMARC pass rates should all sit at or near 100%.
- Watch aggregate reports for two weeks after each escalation for unexpected sources.
Fix 4: Fix alignment, not just authentication
This is the fix most teams miss. You can have SPF pass and DKIM pass and still fail DMARC, because DMARC requires alignment: the domain in the visible From address must match the SPF return-path domain or the DKIM signing domain.
If your From address is [email protected] but your return-path is [email protected] and your DKIM signature is also the ESP’s domain, DMARC fails despite two green checks.
The fix is to configure a custom return-path (sometimes called a bounce domain, envelope sender or MAIL FROM domain) as a subdomain of your own domain, for example bounce.yourbrand.com. Every serious ESP supports this and it takes one CNAME record.
How to verify
- In Show original, check that the mailed-by and signed-by values both display your own domain.
- DMARC reports should show alignment rather than just authentication passing.

Fix 5: Get the infrastructure basics right (rDNS, TLS, one-click unsubscribe)
These are pass or fail checks. Missing any of them is a soft signal that you are not a professional sender.
- Reverse DNS (PTR): your sending IP must resolve to a hostname, and that hostname must resolve back to the IP. On a dedicated IP this is your responsibility.
- Opportunistic TLS: mail must be transmitted over an encrypted connection. Every reputable ESP handles this, but check if you self-host.
- List-Unsubscribe headers: you need both
List-UnsubscribeandList-Unsubscribe-Post: List-Unsubscribe=One-Click. The one-click header is now a hard requirement for bulk senders at Gmail, Yahoo and Outlook. The unsubscribe must process within two days and must not require a login. - A valid, monitored From address: no-reply addresses still deliver, but replies are one of the strongest positive engagement signals you can earn. Use a real, monitored mailbox.
- Consistent From name and address: switching identities resets recognition and suppresses engagement.
How to verify
- Send a test to a Gmail account. If the one-click header is present, Gmail shows a native Unsubscribe link next to the sender name.
- Run an rDNS lookup on your sending IP.
- Check Show original for
TLS = TLS1_3or similar in the Received headers.
Fix 6: Keep your Gmail spam complaint rate below 0.10%
This is the number that matters most. Gmail publishes a hard ceiling of 0.30% for bulk senders, but that is the threshold at which filtering becomes aggressive, not the target. Treat 0.10% as your operating maximum and 0.05% as healthy.
Here is how to read the Postmaster Tools user-reported spam rate:
| Spam rate | Status | Action |
|---|---|---|
| Under 0.05% | Healthy | Maintain, you can scale volume |
| 0.05% to 0.10% | Acceptable | Tighten segmentation, review acquisition sources |
| 0.10% to 0.30% | Warning | Cut frequency, suppress unengaged, audit signup forms |
| Above 0.30% | Critical | Stop broad sends, mail only 30-day engaged contacts |
Complaints usually come from three places: unclear opt-in, sending frequency that does not match expectations, and a hidden unsubscribe link. Fix the cause, not the symptom.
How to verify
- Postmaster Tools updates the spam rate with a lag of one to two days. Track it per campaign, not just as a monthly average.
- Enrol in Microsoft JMRP to receive Outlook complaint feedback directly.
- Compare complaint rates by acquisition source. One bad lead magnet or co-registration partner often causes the entire problem.
Fix 7: Run real list hygiene, not a one-off cleanup
Invalid addresses cause hard bounces. Abandoned addresses become recycled spam traps. Addresses that never existed become pristine traps. A single pristine trap hit from a major blocklist operator can throttle your entire domain.
Build hygiene into your process:
- Verify at the point of capture. Real-time validation on your signup form stops typos and disposable domains before they enter the database.
- Use double opt-in for any source you did not fully control, and for paid acquisition without exception.
- Remove hard bounces immediately. Never resend to a hard bounce. Ever.
- Suppress repeated soft bounces after three consecutive failures.
- Apply a sunset policy. If a contact has not opened or clicked in 180 days and has ignored a re-engagement sequence, stop mailing them. They are pure downside risk.
- Re-validate the whole list before any send to a segment that has been dormant for 90 days or more.
- Never buy, rent or scrape a list. There is no technical fix for purchased data. It is the fastest way to collect traps and complaints.
Your bounce rate target is under 2%, and ideally under 0.5% for a well-maintained list.
How to verify
- Bounce rate should fall within one or two campaigns after a purge.
- Run a blocklist check weekly on your sending domain and IP. Trap hits normally show up as a Spamhaus SBL or CSS listing.
- Postmaster Tools domain reputation should climb from Bad or Low toward Medium and High over 2 to 4 weeks of clean sending.
Fix 8: Warm up new domains and IPs on a disciplined ramp
If you moved ESP, added a new subdomain, or switched to a dedicated IP, you have no reputation at all. Sending 80,000 messages on day one from a cold IP looks exactly like a spam campaign, because that is what spam campaigns do.
A workable ramp for a mid-sized list, sending to your most engaged contacts first:
| Day | Daily volume | Audience |
|---|---|---|
| 1 to 2 | 50 to 100 | Staff, partners, top 30-day openers |
| 3 to 5 | 500 | Opened in last 30 days |
| 6 to 9 | 2,000 | Opened in last 60 days |
| 10 to 14 | 8,000 | Opened in last 90 days |
| 15 to 21 | 25,000 | Opened in last 180 days |
| 22 to 30 | Full volume | All active contacts |
Rule: if bounce rate exceeds 2%, complaints exceed 0.10%, or Postmaster reputation drops a tier, hold at the current volume for three days instead of increasing.
How to verify
- Watch the IP reputation graph in Postmaster Tools daily during the ramp.
- Run a seed test at day 7, day 14 and day 30. Inbox placement should improve at each checkpoint.
- Check Microsoft SNDS for a Green status on your IP.

Fix 9: Send on a predictable cadence and volume
Filters model your normal behaviour. A sender who mails 20,000 contacts every Tuesday is predictable. A sender who goes silent for six weeks then blasts 200,000 on Black Friday looks compromised.
- Keep week-over-week volume changes under roughly 30% outside of planned peaks.
- For seasonal peaks, ramp up over the preceding two to three weeks rather than spiking.
- Split large sends across the day instead of firing everything in one burst.
- Separate your streams by subdomain:
mail.yourbrand.comfor marketing,notify.yourbrand.comfor transactional. A bad promotional week then cannot take down your password resets.
How to verify
- Overlay your send volume chart against the Postmaster Tools reputation chart. Reputation dips that follow volume spikes are unmistakable.
- Check that your transactional subdomain maintains an independent, high reputation.
Fix 10: Clean up the technical content of your emails
Content filtering is real, but it is mostly about structure and links rather than vocabulary.
Links
- Never use public URL shorteners such as bit.ly in marketing email. They are heavily abused and carry poisoned reputation.
- Use a branded click-tracking domain on your own subdomain instead of your ESP’s shared tracking domain, which thousands of other senders share.
- All links should point to the same root domain where possible. Mixed and unfamiliar destinations raise the risk score.
- Check every destination domain against SURBL and Spamhaus DBL. One affiliate link on a listed domain can spam-folder the whole campaign.
HTML and structure
- Keep a reasonable image-to-text ratio, roughly 60% text to 40% images. An image-only email with a single link is a classic spam pattern.
- Always include alt text on images. Many clients block images by default, so alt text is both accessibility and deliverability.
- Always send a plain text alternative alongside the HTML version, and make sure it is a real rendering, not the word “newsletter”.
- Keep HTML under roughly 102KB. Gmail clips beyond that, which harms engagement and looks careless.
- Avoid pasting from Word or Google Docs, which injects broken markup. Avoid hidden text, white-on-white text and CSS tricks that hide content.
- Avoid attachments in marketing email. Link to a hosted file instead.
- Include a physical postal address and a visible unsubscribe link. This is a legal requirement under CAN-SPAM and is expected by filters.
How to verify
- Run each new template through Mail-Tester before launch. Aim for 9/10 or higher. It flags missing plain text, broken HTML, bad links and authentication gaps in one report.
- Seed test the template across Gmail, Outlook, Yahoo and at least one corporate filter such as Mimecast or Proofpoint if you sell B2B.
- A/B a lean text-forward version against your heavy template. On a struggling domain, the lean version often wins placement outright.
Fix 11: Treat spam trigger words as a minor factor, not a checklist
Plenty of guides publish 400-word lists of forbidden terms. The truth in 2026 is more nuanced: no single word sends you to spam. Reputable senders use the word “free” every day and land in the inbox. What filters actually detect is the combination of weak reputation plus high-pressure patterns.
Patterns that genuinely increase risk when your reputation is already shaky:
- ALL CAPS in the subject line, or three or more exclamation marks
- Excessive currency symbols and percentage claims stacked together
- Financial and pharmaceutical promises: guaranteed income, work from home, miracle cure, risk free, no credit check
- Manufactured urgency layered on every line: act now, final notice, last chance, urgent response required
- Subject lines that misrepresent the content, which drive complaints and therefore reputation damage
- Deceptive Re: or Fwd: prefixes on a first-contact message
The practical rule: if your subject line would embarrass you on a billboard, rewrite it. Otherwise, spend your time on authentication and list quality, where the actual leverage is.
How to verify
- Mail-Tester shows the SpamAssassin rule hits your content triggered and the point value of each. Anything scoring more than 1.5 points on content alone deserves an edit.
- Compare placement of two subject line variants on the same audience segment. If the toned-down version inboxes and the aggressive one does not, you have your answer.
Fix 12: Engineer positive engagement signals
Once authentication is clean, engagement is deliverability. Gmail weighs opens, clicks, replies, moving messages out of spam, adding you to contacts and archiving without deleting. It also weighs the negatives: deletes without opening, and spam reports.
Practical tactics that move these signals:
- Send to your engaged segment first. On a Tuesday morning send, deliver to 30-day openers in the first batch. Early positive engagement shapes how the rest of the volume is filtered.
- Ask a question in your welcome email. Replies are the strongest positive signal available and almost nobody optimises for them.
- Ask new subscribers to add you to their contacts. Simple, and it works.
- Segment by behaviour, not just demographics. Relevance is the cheapest deliverability upgrade available.
- Run a re-engagement sequence before sunsetting: three messages over two weeks, then suppress.
- Let people choose frequency. A preference centre converts would-be complainers into lower-frequency subscribers.
- Prune with confidence. A 40,000-contact list with 25% engagement outperforms a 120,000-contact list with 6% engagement, every single time.
How to verify
- Postmaster Tools domain reputation should move up a tier within two to four weeks of engagement-first sending.
- Track the spam rate per segment. Your unengaged cohort is usually generating most of the complaints.
- Seed tests should show the Gmail Primary tab rather than Promotions or Spam for your engaged-segment sends.

A 14-day recovery plan for a live deliverability drop
If you are in the middle of a real incident, work this sequence in order.
| Days | Actions | Success check |
|---|---|---|
| 1 | Pause broad sends. Verify SPF, DKIM, DMARC and alignment. Run blocklist checks. Set your baseline metrics. | Three green passes in Show original |
| 2 to 3 | Fix any authentication gaps. Add the custom return-path and branded tracking domain. Submit delisting requests if listed. | Clean blocklist status, DMARC alignment at 100% |
| 4 to 5 | Purge hard bounces, run list validation, suppress everyone inactive beyond 180 days. | Bounce rate projected under 1% |
| 6 to 8 | Resume sending to 30-day engaged only, at roughly 20% of normal volume. Lean, text-forward template. | Seed test shows inbox at Gmail and Outlook |
| 9 to 11 | Expand to 90-day engaged. Increase volume by no more than 50% per send. | Spam rate holds under 0.10% |
| 12 to 14 | Return to normal volume across active contacts. Document what changed. | Postmaster reputation at Medium or High |
Change one variable per send. If you fix DNS, purge the list and rewrite the template on the same day, you will never know which one saved you, and you will repeat the mistake.
Five mistakes that keep good senders in the spam folder
- Treating a deliverability drop as a content problem. It is almost always reputation or authentication.
- Mailing the full list to “make up” for lost opens. This accelerates the decline because the inactive cohort generates the complaints.
- Buying a new domain to escape a bad reputation. A brand new domain has no reputation, which filters treat with heavy suspicion. You also lose any equity you had.
- Ignoring Google Postmaster Tools. It is free, takes ten minutes to set up with one DNS TXT record, and is the only authoritative view of Gmail’s opinion of you.
- Using the same domain for marketing, transactional and cold outreach. Keep them separate with subdomains so one stream cannot poison the others.
Your pre-send checklist
- SPF passes, single record, under 10 DNS lookups
- DKIM passes with a 2048-bit key signed by your own domain
- DMARC published and aligned, moving toward enforcement
- Custom return-path and branded click-tracking domain configured
- List-Unsubscribe and one-click headers present
- Hard bounces and 180-day inactives suppressed
- Plain text version included, alt text on all images
- No URL shorteners, all link domains checked against blocklists
- Mail-Tester score of 9/10 or better
- Gmail spam rate under 0.10% on your last three campaigns
- Volume within 30% of your recent weekly average
Frequently asked questions
Why are my emails suddenly going to spam in Gmail when nothing changed?
Something changed, it just was not in your email. The usual culprits are a DNS edit that broke SPF or DKIM, an ESP rotating a DKIM key, a new list import bringing in spam traps, or a gradual engagement decline that finally crossed a threshold. Start with Show original in Gmail to confirm authentication, then check your Postmaster Tools spam rate for the exact date the drop began.
How do I check if my domain is blocklisted?
Run your sending domain and IP through a multi-blocklist checker such as MXToolbox. The lists that materially affect delivery are Spamhaus (SBL, CSS, DBL), SURBL, SpamCop and Barracuda. Most operators offer self-service delisting, but delisting without fixing the underlying cause guarantees a relisting within weeks.
Is double opt-in really necessary?
It is not legally required everywhere, but it is the single most effective protection against spam traps, typos and malicious signups. Use it without exception for paid acquisition, imported lists and any source you did not build yourself. For a high-intent signup on your own site with real-time validation, single opt-in with a strong welcome sequence is usually acceptable.
Does a dedicated IP improve deliverability?
Only if you send consistently, roughly 50,000 messages or more per month with a regular cadence. Below that, you will not generate enough volume to build and hold a reputation, and you are better off on a well-managed shared pool. Note that domain reputation now carries more weight than IP reputation at Gmail, so a dedicated IP is not the fix most people assume it is.
How long does it take to recover from a spam folder problem?
With authentication fixed and disciplined engagement-first sending, expect two to four weeks for a moderate reputation drop and six to eight weeks for a severe one. Recovery is not linear. Reputation rebuilds slowly and can be undone by a single careless send to an unengaged segment.
Do spam trigger words still matter in 2026?
Marginally. Modern filters weigh sender reputation and engagement far above vocabulary. A trusted sender can write “free trial” with no consequence. A sender with a damaged reputation will be filtered regardless of how carefully they write. Fix authentication and list quality first, then tidy your copy.
Should I use a subdomain for email marketing?
Yes. Separating marketing, transactional and outreach streams onto distinct subdomains contains reputation damage and lets you diagnose problems per stream. Your root domain keeps its reputation for corporate mail, and a rough promotional campaign cannot delay your order confirmations.
The bottom line
Learning how to avoid spam filters in email marketing is not about memorising forbidden words. It is about proving your identity with SPF, DKIM and DMARC, protecting your reputation with ruthless list hygiene and sensible volume, and earning engagement from people who genuinely want to hear from you.
Work the fixes in order, verify each one with seed testing and Postmaster Tools before moving to the next, and you will be troubleshooting with evidence rather than guessing. That is the difference between fixing a deliverability problem once and fighting it every quarter.




