When a campaign gets no replies, the instinct is to rewrite the email. Sometimes that is the answer. Far more often the email was fine and nobody read it, because it never reached an inbox. Deliverability is unglamorous, invisible, and it decides the outcome before your offer gets a vote.
Here is what actually determines whether your message arrives, roughly in order of how much damage each one can do.
Reputation attaches to the domain, not the campaign
Mailbox providers score the domain you send from and the address that sent it. That score follows you. It is not reset by changing your subject line, pausing for a week, or switching sending tools.
This is the single most important thing to understand about cold email, because it is what makes the mistakes permanent. A campaign that generates complaints does not just underperform — it damages an asset. And once a domain has been filed as a sender worth ignoring, the realistic path back is a new domain and another warmup, not an appeal.
It is also why we never send from a client's primary domain. If something goes wrong on a look-alike domain, we retire it. If it goes wrong on the domain your team's email runs on, you have a much larger problem than a campaign.
Authentication is the floor, not the fix
SPF, DKIM and DMARC are three DNS records that let a receiving server confirm the message really came from where it claims. Without them you are unlikely to be trusted at all.
But setting them is table stakes. Passing authentication does not make you welcome; it makes you eligible. We see plenty of accounts with perfect authentication and terrible placement, because the records say who you are, not whether people want to hear from you.
Two practical notes. First, check them against a real message header rather than trusting the provider's setup screen — "enabled" in a dashboard and "passing in the wild" are different claims. Second, a sending domain should redirect to your real website. Anyone who types it into a browser after getting your email should land somewhere real, not on a parked page.
Bounces burn domains faster than anything else
A high bounce rate is the clearest signal you can send that your list was not verified. It says, in a language every mailbox provider reads fluently, that you are mailing addresses you have no relationship with and did not check.
Verification is cheap and it is not optional. Every address gets checked before it is uploaded, and catch-all domains, role addresses like info@ and sales@, and duplicates come out. This is dull work that runs before a campaign exists, and skipping it is the most expensive shortcut in outbound.
Volume is a property of your infrastructure, not your ambition
A new mailbox that starts sending at full volume looks exactly like a compromised account, because that is what compromised accounts do. Warmup exists so that the ramp looks like a person who slowly got busier.
After warmup, the rule does not change — it just becomes about capacity. If you need more volume, you add mailboxes. You do not push the ones you have harder. A daily cap per inbox is a constraint you keep even when you are impatient, and especially when the campaign is working.
Content matters, but last
Once the infrastructure is sound, the message does start to matter — and the things that hurt are mostly the things that make an email look like bulk mail. Heavy formatting, tracking pixels, link shorteners, image headers, ten links in a five-line message. Plain text sent from a real mailbox looks like a person wrote it because that is what a person's email looks like.
It also helps that no two messages leaving your domains are identical. Not to trick a filter, but because a thousand byte-identical emails is not a thing that happens in normal correspondence.
The order to fix things in
If placement is bad right now, work in this order: confirm authentication against a live header, check what your bounce rate has been, check how much volume each mailbox is carrying, then look at the message. Rewriting copy first is the most common thing people do and the least likely to help.
And if a domain is already burned, accept it early. Waiting for it to recover costs more than replacing it.