It usually arrives as a screenshot. Sent: 4,000. Replies: 2. Then the question, which barely changes from one company to the next: what is wrong with the email?
Almost nothing, usually. If your messages are going to spam, the words are the last place to look. Placement gets decided before a human being reads a sentence, by your list, your domain, your authentication records and how the sending was set up in the first place. Copy cannot fix a bad list or a weak sender. No subject line has ever rescued a domain that Gmail has quietly stopped trusting.
Below are the six causes, in the order I check them. Every deliverability rescue I have been part of started in the first two.
Before anything else, work out which problem you have
Three different failures produce the same screenshot, and they need opposite fixes.
The message never arrived at all. That is a bounce, and it shows in your sending logs.
The message arrived and went to spam. You cannot see this from your dashboard. You find it by putting seed addresses of your own into the list: one Gmail, one Outlook, one on a normal company domain, and then opening all three by hand after the batch goes out.
The message arrived in the inbox and nobody cared. That is a list or an offer problem, and nothing in this post will help you.
Do the seed test first. Plenty of the people who tell me they are in spam are sitting in the inbox being ignored, which is a different problem and a harder one.
Cause one: your list is telling the provider you do not know these people
This is the most common cause by a distance, and the one people least want to hear.
Every address that hard bounces is a signal that you collected this list carelessly. Providers read it exactly that way, and nobody is looking at one bad send in isolation. They are looking at the pattern across a week.
The published ceilings, and what actually causes a bounce, are in what counts as a good bounce rate. My own working standard sits under all of them, and it is mine rather than an industry rule: below 0.5 percent, every campaign, no exceptions.
The fix is dull. Verify every address immediately before the send, not on the day the list was built. A list verified six weeks ago is not a verified list. People change jobs, companies fold, aliases get turned off.
One vendor guide on list cleaning, citing a database decay study, puts the rot at 20 to 30 percent of a list per year, and that company sells verification, so read the number as directional. The direction is the point: your spreadsheet is going off while it sits there.
Then strip the role addresses and the catch-all domains: info@ and sales@ on one side, and on the other the domains that accept any address you throw at them, so a verification tool cannot tell you anything useful. Those two categories produce most of the damage that survives a clean verification report.
If you bought the list from somebody cheap, stop reading and go look at the spreadsheet. It is the campaign.
Cause two: the domain was never authenticated
Set up SPF, DKIM and DMARC before any volume goes out. This stopped being optional a while ago.
Gmail has since stopped being gentle about it. Non-compliant bulk mail gets rejected outright with a 550 error instead of being deferred or quietly filed in spam, which at least has the virtue of being visible in your logs.
The fix takes an afternoon. Publish all three records for every sending domain, then verify them on a real message you actually sent, not in your DNS panel. A record that exists and a record that passes are different things, and only the second one counts. Do it for every sending domain you own, including the ones you are not using this month.
Cause three: the domain is new and you sent like it was old
A domain with no history has no reputation, good or bad. You build it by sending small volumes of mail that get opened and replied to, for weeks, before the campaign starts.
People skip this because it is two weeks or more of doing nothing visible. Then they turn on 40 mailboxes at once and wonder why week one looked fine and week three collapsed. Reputation damage is slow to appear and slow to undo, which is the worst combination there is.
If you are already burned, the honest answer is that a badly damaged domain is usually cheaper to replace than to rehabilitate. Park it, stop sending from it, and start again properly on new domains.
Cause four: every message you send is identical
Same body, same links, same signature, same sending rhythm, thousands of times. Filters are looking for exactly that shape.
The fix is variation that does not damage the writing. Different openings and closings across the batch. Fewer links, and none of them a shortener. No images and no tracking pixel in a first cold message. Pacing spread across the day instead of a thousand messages hitting the wire in six minutes.
While we are here: I turn open tracking off in cold campaigns. It inserts a pixel and a redirect that cost you placement, in exchange for a number that was never reliable enough to make decisions on.
Cause five: people are marking you as spam
Complaints are the one cause where the message genuinely matters, and even then the root is your targeting.
As of September 2026, the bulk sender rules put the complaint ceiling at 0.3%, with 0.1% as the practical target. Run that against a real campaign. Send 4,000 messages and twelve people hitting the button puts you at the ceiling. Twelve. That is not a statistical event, it is a Tuesday, if you are writing to people who have no business receiving your email.
Nobody reports a relevant message. They ignore it, or they reply, or they delete it. The complaint button gets pressed by people who feel scraped. So the fix lives in the list again: tighter targeting, a reason for the message to exist, and a working way out for anyone who wants it.
Cause six: the plumbing around the message
Last, because it is the least common and the easiest to check.
A tracking domain shared with hundreds of other senders, a link shortener, a signature stuffed with images and social icons, or a sending tool nobody has looked at since it was configured. Each of these can hurt placement on its own. Together they finish the job.
Send yourself a message through the actual campaign tool and read the raw source. Whatever you find in there that you did not deliberately put there, remove it.
The twenty minute version
Run this in order, and stop at the first thing that is wrong.
- Seed addresses on Gmail and Outlook, one batch, opened by hand.
- Bounce rate from the last send. Anything above 0.5% and you stop here.
- SPF, DKIM and DMARC checked against a message you actually sent.
- Age of the domain, and whether it was warmed. Under ten days of warm-up and you have found your problem.
- Complaint rate, against 0.1% rather than 0.3%.
- Raw source of one sent message, read line by line.
Most campaigns fail on step two or step three, and both of those were decided weeks before anyone opened a blank document.
The good news is buried in that. Fix the list, the records, the warm-up and the pattern, and if the replies still do not come, you finally have a copy problem. Those are the cheap ones.
