Your sending tool says every email was delivered, and nobody has replied. Before you rewrite the copy, find out where those emails landed. "Delivered" only means a server accepted them.
Cold email deliverability is mostly decided before you press send: by who is on the list, which domains and mailboxes you send from, and how much goes out each day. The wording matters less than any of those.
The 7 steps below are the order we set up cold email for clients. After them come the rules Gmail, Yahoo and Microsoft publish for 2026, how to test, the numbers we act on and a checklist to copy.
What is cold email deliverability?
Cold email deliverability, also called inbox placement, is the share of your cold emails that reach the inbox and not the spam folder. Delivery is a different thing. It only means the receiving server accepted the email.
An email can fail in 2 ways. It can bounce, meaning the server refuses it and sends back an error: permanently for a hard bounce, usually a dead address, or temporarily for a soft bounce, such as a full mailbox. Or it can land in spam. Nothing comes back when that happens, so your sequencer reports it as delivered, and a campaign with no bounces and no replies can still have a spam problem.
Where a sent email ends up
Bounced
The server refuses it and sends back an error.
Inbox
A person can see it.
Spam
Filed out of sight. Nothing comes back.
Which folder you land in depends on sender reputation, the record Gmail, Microsoft and other providers keep of your bounces, spam complaints, volume and replies.
Why are my cold emails going to spam?
The cause is nearly always one of 5 things.
- The list is bad. Dead addresses bounce, and bounces tell the provider you are writing to people you do not know.
- The domain is not set up. Without SPF, DKIM and DMARC (step 3), the provider cannot confirm who sent the email.
- The mailbox is new or sending too much. A mailbox with no history that sends 200 emails on day one looks like spam.
- The email looks like marketing. Images, tracked links and heavy formatting all point that way.
- The wrong people are receiving it. They press the spam button, and a complaint costs you more than anything else.
Bounces do damage fastest and complaints do the most. Both start with the list, so the list is step 1.
How to improve cold email deliverability: 7 steps
1. Verify the list before anything else
Verification asks the receiving server whether a mailbox exists, without sending it anything. Run every list through a verifier, whatever the list cost, and remove every address marked invalid. Expect to lose a large share. A list that comes back with nothing removed was probably not checked properly.
Treat addresses marked "catch-all" or "risky" as unsafe until a second tool clears them. A catch-all domain accepts email for any address, real or not, so one check proves nothing. We run a free first pass with Reacher, which we host ourselves, and pay for No2Bounce only on catch-alls and on Microsoft 365 addresses, which Reacher sometimes marks invalid when they work. When the 2 tools disagree, the address comes off. Shared inboxes such as info@ come off too, because nobody reading them is the person you meant to reach.
2. Send from separate cold email domains
Never send cold email from your main domain. If something goes wrong, your invoices and client emails should not be the ones landing in spam.
Buy domains close to your company name: for acme.com, something like tryacme.com or acmehq.com. Each one forwards to your real website and needs an MX record so replies and bounces reach you, and the emails carry your real name and company.
We put 3 mailboxes on each domain. To size it, divide your daily volume by 20 to get mailboxes (step 5 explains the 20), divide that by 3 to get domains, and round up. 200 emails a day needs 10 mailboxes on 4 domains. Spreading the load means one bad mailbox does not stop the campaign.
How 200 emails a day are spread
acme.com
Your main domain. Clients and invoices only, no cold email.
tryacme.com
- maria@20
- dan@20
- lee@20
acmehq.com
- maria@20
- dan@20
- lee@20
getacme.com
- maria@20
- dan@20
- lee@20
useacme.com
- maria@20
- dan@20
- lee@20
acmemail.com
Backup, warming
240
emails a day of capacity: 4 domains × 3 mailboxes × 20 each
Keep at least 1 backup domain warming alongside, with its own 3 mailboxes, so a warmed replacement is ready when a sending domain needs a rest.
You pay for the domains, a mailbox subscription per address, a sequencer and a verifier. Setup takes someone comfortable editing DNS records for an afternoon, and a 2-person sales team can run it in-house if one of them owns it every week.
3. Set up SPF, DKIM and DMARC
Each sending domain needs 3 DNS records that prove its email is really from you.
- SPF lists the servers allowed to send email for the domain.
- DKIM signs each email so the provider can confirm nobody altered it.
- DMARC tells the provider what to do with email that fails both checks, and where to send reports.
Check them yourself, because a sequencer will connect a mailbox and show it as healthy whether these records exist or not. Put each sending domain into MxToolbox and run the SPF, DKIM and DMARC lookups. Each should return a record with no errors. If one is missing, send the result to whoever manages your domain. Your email host publishes the exact values.
Watch the SPF lookup count. SPF fails when the record needs more than 10 DNS lookups (RFC 7208), and every include: counts, along with the lookups inside it. A record can look correct and still fail.
4. Warm up the domain and every mailbox
New domains and mailboxes have no history with any provider, and warmup builds it. Your sequencer trades emails between your mailbox and others in its network, and those emails get opened and answered like normal mail.
Give every mailbox, backups included, at least 2 weeks. Instantly, the sequencer we use, scores each mailbox out of 100, and most tools have an equivalent. We send no cold email from a mailbox below 95, and we leave warmup on after campaigns start.
5. How many cold emails to send per day
Start each mailbox at 20 cold emails a day, counting follow-ups but not warmup emails. After 7 days of clean bounce and reply numbers, move to 30 and stop there. For more volume, add mailboxes. Many guides allow 30 to 50 a day. We cap lower because extra mailboxes are cheap and a damaged domain is not.
The cap is per mailbox, so 2 campaigns on the same mailboxes share one allowance.
Then check the schedule. In Instantly, "send next email in N days" sets the gap after an email, not before it, and we have got this wrong ourselves. A 0 on the first step sends the follow-up minutes later, and 2 near-identical emails within an hour is the pattern spam filters look for. Before launch, write out the day each email will send and check it against the plan.
6. Keep the email plain: text only, no tracking, few links
Providers are trying to separate emails a person wrote from marketing sends. Make yours look like the first kind.
- Plain text, under 100 words, with no colours, buttons, images, signature logo or attachments.
- No link in the first email, and at most 1 in a follow-up.
- Open and link tracking off. Open tracking hides an image in the email and link tracking rewrites your links. If you must track links, use your own tracking domain and not the sequencer's shared one. You lose open rates, which Apple Mail has made unreliable since 2021 anyway, so judge campaigns on replies.
- Varied wording. Rotate greetings, sign-offs and a few phrases so that 200 people do not get the same email. Sequencers call this spintax.
- A plain way to say no, such as one line asking the reader to tell you if you have the wrong person. In the US, the CAN-SPAM Act requires a working opt-out and a postal address in commercial email, and a reply-based opt-out covers the first. Other countries set different rules, and this is not legal advice.
Spam words matter least of anything on this page, but scanning for them is cheap. We look for pressure ("act now", "limited time", "urgent"), promotion ("risk-free", "best offer", "discount") and phishing ("click here", "click to verify", "security update").
7. Send to people with a reason to care
Good copy sent to the wrong company reads as spam to the person who gets it. They will not reply to tell you. They press the spam button and you never find out.
So we check fit before writing anything. We read the websites of 100 companies from the list against the campaign, and if too many miss, the list goes back. Before launch we check the full list the same way. A smaller list of companies with a real reason to hear from you does more for the domain than any DNS record.
Once you are live, read the replies. Most complaints are silent, so treat one angry reply as a sign that several other people felt the same.
Gmail, Yahoo and Microsoft sender requirements in 2026
At 200 emails a day, none of the bulk-sender rules apply to you. We set up all 3 records anyway, because company email filters check for them regardless.
The rules below come from Google's email sender guidelines, Yahoo's sender best practices and Outlook's requirements for high-volume senders. Spam rate is the share of delivered emails that people mark as spam.
| Provider | Applies to | What it asks |
|---|---|---|
| Gmail | Personal accounts ending @gmail.com or @googlemail.com | All senders: SPF or DKIM, valid forward and reverse DNS, TLS, spam rate under 0.3%. Over 5,000 a day: SPF, DKIM and DMARC, a From domain that matches one of them, and one-click unsubscribe on marketing email. Aim for a spam rate under 0.10% |
| Yahoo | Yahoo mailboxes | All senders: SPF or DKIM, spam rate under 0.3%. Bulk senders, which Yahoo does not put a number on: SPF, DKIM, a DMARC record that passes, one-click unsubscribe, and opt-outs honoured within 2 days |
| Microsoft | Consumer addresses: outlook.com, hotmail.com, live.com | Over 5,000 a day: SPF and DKIM must pass, with a DMARC record. Email that fails has been rejected since 5 May 2025 |
All 3 are written for personal mailboxes, and a B2B list is mostly company addresses. Many companies run a filter such as Proofpoint or Mimecast in front of their email, which can be stricter than Gmail without saying where its limits are. Treat the published numbers as a floor.
How to test cold email deliverability
Test before the first send, and again after any change to a domain, a mailbox or the email. The checks run from quickest to slowest.
- Check the DNS records in MxToolbox, as in step 3.
- Score one email. Mail-Tester gives you an address to send to and returns a score out of 10 covering your records, your content and whether you are on a blocklist. A few tests a day are free.
- Check the blocklists. MxToolbox's blocklist check tests each domain against the main lists, including Spamhaus. If one names you, fix the cause, then use that list's removal form.
- Run a seed test. Send the real email to mailboxes you control at Gmail, Outlook, Google Workspace and Microsoft 365, and see which folder it lands in. Paid tools such as GlockApps do this across dozens of mailboxes.
- Watch Google Postmaster Tools. It is free and shows the spam rate Gmail sees, but only for email to personal Gmail accounts, so for a B2B list it shows little.
A test tells you where one email landed today, which is enough to catch a setup fault. To judge a live campaign, use the numbers below.
Cold email deliverability benchmarks: the numbers to watch
| Signal | Healthy | Look into it | Stop sending |
|---|---|---|---|
| Bounce rate | Under 3%. Under 1% is good | 3% to 5% | Over 5% |
| Hostile replies, meaning angry ones or threats to report you | None | Any | Over 0.3% of emails sent |
| Opt-out requests | Few | Rising week on week | Over 2% of emails sent |
| Spam rate in Google Postmaster Tools | Under 0.10% | Rising towards 0.30% | 0.30% or more |
| Warmup score | 95 or more | Falling | Under 95 |
Only the spam rate comes from Google. The rest are our own rules, and they are tight on purpose: pausing a campaign costs a few days, and losing a domain costs far more. Read the replies as well as counting them, because a healthy reply rate can be made up of removal requests.
A worked example with made-up numbers
We invented the company and every figure here to show the arithmetic, so none of it is a client result.
A 15-person software firm buys a list of 2,000 operations directors at logistics companies.
What verification did to 2,000 contacts
1,380
kept, 69%
620
removed
- Passed the first check1,240
- Catch-all, passed the second check140
- Catch-all, failed the second check170
- Invalid, removed450
The setup.
- Total emails = send list x emails in the sequence: 1,380 x 3 = 4,140.
- Daily ceiling = mailboxes x 20: 4 domains with 3 mailboxes each is 12 mailboxes, so 240 a day.
- Sending days = total emails / daily ceiling: 4,140 / 240 = 18.
A fifth domain warms as the backup. With 2 weeks of warmup in front of 18 sending days, the last email goes out just under 6 weeks after the domains are bought.
The bounce rate. Bounces show up on the first email, so measure there. If 12 of the 1,380 first emails bounce, that is 0.9%.
Without verification. Now the firm sends the first email to all 2,000. If only half of the 450 invalid addresses bounce, that is 225 bounces, or 11%, about 27 a day at 240 emails a day. The campaign crosses the stop line in its first week, on domains with no history to fall back on.
Cold emails suddenly going to spam: how to find the cause
When replies stop or bounces jump overnight, leave the copy alone and work through these steps in order. Start with the bounce codes, because they show straight away whether you have a list problem or a sending problem.
Start with the bounce code
- 5.1.x or 5.4.1
List problem
Verify the unsent addresses again and find the source of the bad ones.
- 5.7.x or 4.7.x
Sending problem
Check DNS and blocklists on every domain, and whether volume changed.
- Bounces and DNS clean
Targeting problem
Read the replies. Hostile replies and removal requests mean the wrong people.
Then restart at 20 a day on the healthy mailboxes.
- Stop adding new leads. Leave warmup running.
- Read the bounce messages. Your sequencer keeps them, usually with the replies. Codes starting 5.1, most often 5.1.1, mean the address does not exist, and Microsoft sometimes reports the same thing as 5.4.1. That is a list problem. Codes starting 5.7 or 4.7 mean the server refused or slowed you on policy or reputation, which is a sending problem.
- If it is the list, verify the unsent addresses again and find which source the bad ones came from.
- If it is the sending setup, check the DNS records and blocklists for every domain, whether one domain is affected or all of them, and whether volume changed that week.
- If bounces and DNS are both clean, read the replies. Hostile replies and removal requests mean the targeting is wrong, and no setting will fix that.
- Restart low. Go back to 20 a day on the mailboxes that are still healthy. If one domain is the problem, rest it and bring in a warmed backup.
If you sent from your main domain. Stop the cold sends from it today and keep sending your normal email, because ordinary email that people open and answer is how reputation comes back. Then score an ordinary email with Mail-Tester, check the domain in MxToolbox's blocklist check, and send to personal Gmail and Outlook accounts you own to see which folder it lands in. If all 3 are clean, one customer's junk folder does not prove any damage. If not, fix what Mail-Tester lists and ask any blocklist that names you for removal. Recovery time depends on how much was sent and how many people complained.
If you still cannot find the cause, book a free audit. It is a 30-minute call on your setup, and you keep what we find whether we work together or not.
The cold email deliverability checklist
Hold the launch if any of the first 13 fails.
Before you send
- Every address verified, with a bounce target under 3%.
- A sample of 100 companies read for fit.
- Sending domains separate from your main domain, with 3 mailboxes on each.
- At least 1 backup domain warming.
- SPF, DKIM and DMARC present on every sending domain, checked in DNS.
- Every mailbox at a warmup score of 95 or more.
- Daily cap set to 20 per mailbox.
- Open tracking off and link tracking off.
- Plain text on, no images, no link in the first email.
- Wording varied across greetings, the ask and sign-offs.
- A plain way to opt out, and a postal address where the law asks for one.
- The send day for each email written out and checked against the plan.
- One test email scored, and one seed test run.
While it runs
- Bounce rate checked against the 3% and 5% lines.
- Replies read for hostility and removal requests.
- Warmup left on.
- Volume raised to 30 per mailbox only after 7 clean days.
After it finishes
- Bounced and opted-out addresses removed from every future list.
Cold email deliverability questions
What is a good bounce rate for cold email?
Under 1% is good and under 3% is acceptable. Over 5%, stop the campaign that day. Published averages vary too much with how each list was built to be worth comparing against.
How many cold emails can I send per day?
20 per mailbox, follow-ups included, rising to 30 after 7 clean days. For more volume, add mailboxes and keep the cap where it is.
How long does it take to warm up a domain for cold email?
At least 2 weeks, and then go by the warmup score your sequencer gives each mailbox. We wait for 95 out of 100.
Will cold email hurt our main domain?
Only if you send it from there. Bounces and complaints count against the domain that sent them, so send from separate domains and keep the main one for clients and invoices.
Do cold emails need an unsubscribe link?
Not under CAN-SPAM, which requires a working opt-out but accepts a reply-based one. One-click unsubscribe is a Gmail and Yahoo rule for bulk senders of marketing email.
Where to start
If you do one thing this week, run your list through a verifier and remove everything it does not mark as safe.
If you would rather not do the rest alone, this is the work we do, in your own accounts and on domains you own, so you can check every setting yourself. How that works is on our Engage page. If you want someone to go through the setup you already have, book a free audit.




