Home › Blog › Why Your Cold Emails Go to Spam (and How to Fix It)
A campaign that was landing is suddenly in spam. The cause is one of seven things, and they are worth checking in cost order: a broken record, a listing, pace that crept, a list that aged, a content change, a shared tracking domain, or a domain that is simply spent. Here is the diagnosis, the tool for each step, and the fix.

Cold email goes to spam for one of seven reasons, and the cheap ones to check are the common ones: an authentication record that broke, a blacklist listing, a bounce rate above 2% from an aged list, a daily pace that crept above about 15 per inbox on Google or 8 on Microsoft, a tracking domain shared with other senders, a content change such as a link in the first touch, and, last, a domain whose reputation is spent. Work down the list in that order. Each step has a free check, each takes minutes, and copy is the last thing to change, not the first.
Low replies have two causes that look identical from the sending tool: the mail is in spam, or it is in the inbox and nobody wants it. Before diagnosing deliverability, send the live campaign template from the live inboxes to three seed accounts you control, one on Gmail, one on Outlook.com, one on a Microsoft 365 tenant, and look at where they land. If all three inbox, your problem is targeting or offer, and the opens-but-no-replies article is the one to read. If any of them spams, continue.
Authentication is pass/fail and it fails quietly: a registrar migration drops a TXT record, a new sequencer signs DKIM with its own domain, an SPF include pushes the domain over the ten-lookup limit and the record goes to permerror while still looking valid. Run the authentication checker on every sending domain, then read the headers of one of the seed messages with the header analyzer. You want spf=pass, dkim=pass signed by your domain, and dmarc=pass. Anything else is the cause, and it is fixed in DNS the same day.
Run the blacklist checker on the domains and, if you send through a private server, the IPs. Most public lists carry little weight; a few carry a lot, and the checker names which. A SURBL listing means a link in your message, often the tracking domain, is listed rather than you. A Spamhaus listing is the one to take seriously; it usually indicates a spam-trap hit, which is a list-quality problem, and it is not something a free tool can check for you, because the DBL needs a paid key.
Pull the bounce rate per domain for the last seven days. Above 2% the list is old or was never verified; above 3% receivers are already treating you as a sender who does not know their recipients. Paste the bounce messages into the bounce analyzer: 5xx unknown-user codes say verify the list, 4xx deferrals clustered on one provider say that provider is rate-limiting you, which is a pace problem. Re-verify anything older than 60 days before sending another message to it.
Nobody decides to burn a fleet. Somebody approves 25 a day instead of 15 for one push, 25 becomes normal, 40 follows. Pull the per-inbox daily send count and compare it with the pace the fleet was launched at. The numbers that last are about 15 cold sends per inbox per day on Google Workspace, 8 on Microsoft 365, 2 on Azure tenants; the sending limits article explains why the provider ceilings are irrelevant to this. If pace crept, bring it back and give the domain a week; if it was never at a sustainable level, this is the cause and the rest of the list is secondary.
Open and click tracking rewrites your links through a tracking domain. If it is the sequencer's default, you share it with every other customer, and their reputation is yours. Run the tracking domain checker; if it resolves to a shared host, set up a custom tracking domain or turn tracking off. We turned open tracking off across our own fleet and the results are published.
Content is a real signal and an overrated one. The changes that matter: a link in the first touch, an image or logo, a signature with four links, HTML templates where plain text was, an attachment, a tracking pixel. The changes that do not matter much: one sentence for another, a different greeting, the word "free". Compare the current template with the one that was landing, revert the structural differences first, and run both through the spam checker and the link scanner to see what a filter sees.
If records pass, nothing is listed, bounces are under 2%, pace is sane, tracking is yours and the content is plain, and the seed test still spams, the domain has used up its reputation and no setting will restore it this week. Rest it on warmup-only traffic for one to two weeks and return at half pace to your most engaged segment, or retire it and move the campaign to a fresh domain. The decision tree says which, from the signature of the failure.
The last step is the one that hurts when there is no standby. It is why we keep prewarmed capacity in reserve for our own agency and why we sell it the same way: Google, Microsoft 365 and Azure inboxes on prewarmed domains with the DNS verified before you log in, delivered within 48 to 72 hours, so the day a domain burns is not the day a 21-day warmup begins. The inboxing playbook is the full operating pattern.
If nothing in your setup changed, pace or list quality. Someone raised the daily send count for a push, or the list is older and bounces climbed above 2%. If something did change, that change: a new sequencer that signs DKIM with its own domain, a new tracking domain, a link added to the first touch. Check authentication first because it is a two-minute test, then bounces, then pace.
Reply rate by recipient provider. Segment your list by ESP, compare positive reply rates, and the provider that collapsed is the one filtering you. Outlook-only trouble usually points at SCL scoring of an unfamiliar sender or a content signal Microsoft weighs harder; Gmail-only trouble usually points at engagement and complaint history. The Outlook spam, Gmail inbox article walks the Microsoft case.
Sometimes, if the cause was volume or list quality and the damage is shallow. Rest the domain for one to two weeks on warmup-only traffic, then return at half pace to your cleanest segment. If it does not recover in that window, or if the cause was a spam-trap hit or a Spamhaus listing, retire the domain. Warmup tools do not undo a listing.
Only when copy was the cause, which is less often than people assume. A link in the first touch, an image, heavy HTML or a tracking pixel on a shared domain are content signals that matter. Swapping one plain-text sentence for another plain-text sentence does almost nothing. Fix infrastructure and list first; test copy last, one change at a time.
No receiver publishes it. Google Postmaster Tools shows a coarse domain reputation band and your spam rate for Gmail traffic once volume is high enough, and that is the only receiver-side view. Everything else is inference from your own bounce, reply and seed-test data.
Google, Microsoft 365 and Azure inboxes with free prewarmed domains and DNS configured before you log in. Prewarmed inboxes send the day they land; every order is delivered within 48 to 72 hours.
Get Prewarmed & Fresh Inboxes