AI-generated emails go to spam for the same reasons any email does: the domain isn't fully authenticated, it's new and sends too much too fast, the list is stale or wasn't opted in, or recipients ignore and report the mail. Gmail's and Yahoo's published sender requirements are about SPF, DKIM, DMARC, one-click unsubscribe and complaint rates. They don't mention who wrote the text. AI copy hurts indirectly, when generic, padded emails get ignored or reported. Fix the sending setup first, then the list, then the copy.

This guide covers what filters actually look at, where AI-written email typically goes wrong, and a checklist to fix it.

What spam filters actually judge

Mailbox providers don't publish their algorithms, but their sender guidelines and years of shared experience point to the same few things, roughly in order of weight:

Signal What it means AI's role
Authentication SPF, DKIM and DMARC pass and align with the From domain None. It's DNS.
Domain and IP reputation Your history: volume, consistency, bounces, complaints None directly.
Recipient engagement Opens, replies, moves to inbox, deletes without reading High. Bland copy gets ignored.
Spam complaints People clicking "Report spam" High. Misleading or generic copy gets reported.
List quality Bounces, old addresses, spam traps None, but AI makes it tempting to mail lists you shouldn't.
Content and links Misleading subjects, link shorteners, broken HTML Medium. Drafts can overdo hype.

Gmail's and Yahoo's bulk sender requirements (since February 2024, for senders of about 5,000+ emails a day to Gmail) make the top of the table explicit: SPF, DKIM, DMARC of at least p=none, an aligned From address, one-click unsubscribe for marketing mail, and spam complaints under 0.3%, aiming for under 0.1%.

Authentication passing isn't the same as reaching the inbox

This is the part that surprises people most, and we've seen it ourselves. On our first day of sending, we sent two near-identical test emails to Gmail from two new domains. Both passed SPF, DKIM and DMARC. One landed in the inbox. The other went to spam with Gmail's note that it was "similar to messages identified as spam in the past."

Nothing was misconfigured. A brand-new or dormant domain has no reputation, so Gmail is cautious. The only fix is gradual, steady sending to people who engage. A clever rewrite of the text won't do it.

That matters for AI email because the pattern is common: someone sets up a new domain, has ChatGPT write a campaign, and sends it to their whole list on day one. The copy gets blamed, but the real problem is volume from a domain with no history.

Where AI-written email actually goes wrong

AI isn't the problem in itself, but it makes a few mistakes easy.

Generic copy that people ignore

Left to its defaults, a model writes "I hope this email finds you well," three paragraphs of preamble and a vague call to action. Readers delete it unread. Enough of that, and Gmail learns your mail isn't wanted. Give the model your voice, a word limit and one clear purpose, then cut what it adds.

Hype that gets reported

Ask for "an exciting promotional email" and you get exclamation marks, "limited time" and "don't miss out" in every line. That's what people report as spam. Ask for plain, specific copy instead: what's new, why it matters to them, one link.

A unique email for every recipient

Some people have the AI rewrite each copy so it "doesn't look like a bulk send." That's a spammer's trick, and it doesn't help: filters judge reputation and behavior, not whether two copies match byte for byte. It also means nobody reviewed most of what went out, details about people can be made up, and your open and click rates stop meaning anything. Send one email you've read, with fields like {{first_name}} filled in per person.

Mailing the wrong list

When drafting takes seconds, it's tempting to mail everyone you've ever had an address for: an old export, a list from a trade show, addresses you scraped. Old lists bounce, and bought or scraped lists hit spam traps and draw complaints. This does more damage than anything in the copy.

Is it the copy or your reputation? How to tell

Before rewriting anything, find out which problem you have. A few quick tests:

What you see Likely cause What to do
Everything from the domain goes to spam, even a plain "test" email Authentication or reputation Check SPF, DKIM and DMARC, then warm up. The copy isn't the issue.
Plain emails reach the inbox, the campaign doesn't Content or links Compare the two: links, images, subject line, hype.
Inbox at Gmail, spam at Microsoft (or the reverse) Provider-specific reputation Look at results by mailbox provider and slow down sending to the one that's struggling.
Fine for weeks, then suddenly spam A complaint or bounce spike, or a blocklist listing Check the last campaign's complaints and bounces, and check blocklists.
Only new subscribers' mail goes to spam Signup quality Look for typo addresses and bot signups. Consider double opt-in.

To check headers, open the message in Gmail, choose Show original, and look for spf=pass, dkim=pass and dmarc=pass. If any of them fails, fix that before anything else.

If you send through OwnMailServer, you can ask the AI directly: "did Gmail or Microsoft accept less of the last campaign?" or "which addresses bounced, and why?" It answers from your real delivery data, broken down by mailbox provider. See email campaign reporting with AI.

Checklist: fix AI emails going to spam

Work top to bottom. Most problems are solved before you touch the wording.

  1. Authenticate the domain. Publish an SPF record, sign with DKIM using a 2048-bit key, and publish a DMARC record. Check that the From domain aligns with the DKIM or SPF domain.
  2. Check reverse DNS if you run your own server. Your sending IP's reverse DNS should point to a hostname that resolves back to it.
  3. Warm up new domains and IPs. Start with a few hundred recipients a day, your most engaged ones, and raise volume gradually over 2–6 weeks. See IP warm-up.
  4. Mail only people who opted in, recently. Send to recent subscribers and customers first. Drop addresses that haven't engaged in many months.
  5. Make unsubscribing easy. One-click unsubscribe with List-Unsubscribe and List-Unsubscribe-Post headers (RFC 8058) is required for bulk marketing mail to Gmail and Yahoo. An easy unsubscribe also beats a spam report.
  6. Suppress bounces and complaints, permanently. Never mail an address that hard-bounced or reported you.
  7. Watch your complaint rate. Stay under 0.1%. If one campaign spikes it, stop and find out why before the next one.
  8. Then edit the copy. One purpose, a specific subject line that matches the body, no fake "Re:", no all-caps, few links, your own voice. Read it as the recipient would.
  9. Send a test to yourself at Gmail and Outlook before sending to the list.

If you've done all that and still land in spam, our general guide to why emails go to spam covers blocklists, shared-IP neighbors and the other causes.

Prompting AI for emails people don't report

A prompt that tends to produce deliverable copy:

Write a short email to our customers about [topic].
- Under 150 words. Plain text style, no exclamation marks.
- First line says what's new. No "I hope this finds you well".
- One link, to [URL], with a specific call to action.
- Subject line under 50 characters that says exactly what's inside.
- Start with "Hi {{first_name|there}}".
- Write like a person at a small business, not a marketing department.

Then edit it yourself. The model gives you a starting point, and your judgment about your readers is what keeps complaints down.

How OwnMailServer handles this when you send from AI

We built our Claude connector so an AI app can run campaigns, and so the steps people skip happen automatically:

  • Domain checks in the chat. Ask "check my domain health" and Claude checks SPF, DKIM, DMARC and the return path, and gives you the exact record to publish for anything missing.
  • Adaptive warm-up. The daily limit starts at a few hundred recipients and rises about 25% after each clean day (low bounces and complaints, no blocklist listings). A bad day holds it. A big campaign waits for the limit instead of blasting.
  • Unsubscribe built in. Every campaign copy gets a one-click unsubscribe link and RFC 8058 headers.
  • Automatic suppression and pauses. Hard bounces, complaints and unsubscribes are never mailed again. Sending pauses automatically above 5% hard bounces or 0.3% complaints in 24 hours, with warnings at 3% and 0.1%.
  • Draft, test, then send. The AI saves a draft and sends you a test. Nothing reaches the list until you say so.
  • Vetted accounts. We review every signup and don't allow bought or scraped lists. That protects the shared IP pool everyone below 200,000 emails a month sends from.

For the full picture of sending to a list from a chat, see bulk email with ChatGPT or Claude.

If you already send through another provider and just need the DNS side fixed, our Deliverability Fix audits and fixes SPF, DKIM, DMARC and PTR for one domain on whatever provider you use. To send from an AI app with these guardrails in place, see pricing: $0.20 per 1,000 emails, with a $10 monthly minimum that covers the first 50,000.