(The exact 10-minute audit i run live with cold emailers every day to find what's ACTUALLY broken)
Why You're (Probably) Reading Your Data Wrong
the default frame people have around cold email is "it's an infrastructure problem."
reply rate drops, so they rip out the infrastructure and rebuild. then they run the same campaign on the new setup and get the same shit.
because if you're getting 100% of nothing, rebuilding the inbox doesn't change the nothing.
people want an easy label rather than the actual label. we all feel better saying "i've identified it, i'll cancel these accounts and fix it." it feels like progress. it isn't.
the boring approach is the one that works. treat every campaign like a science experiment.
→ pick one variable → change it → write down what you changed → read the outcome against your baseline
change one thing at a time, never 10. when something shifts in four weeks, you can actually trace it back.
that same person i mentioned had five inbox providers running against five data sources, two validation processes, two ICPs, and four copy variants. that's around 60 combinations. they had visibility on NONE of them. they just lumped it into "agency USA, agency UK, enterprise UK, enterprise USA" and called that their data.
so here's the read. five numbers. each one is a go-sign or a stop-sign once you know how to look at it.
the order matters. we start with the number that tells you if you're even in the game.
your call whether you run this now or after your next coffee. but run it before you cancel a single account.
Quick Win: The One Number That Tells You If You're Even Landing
before anything else, pull ONE number. this takes 60 seconds.
open your sequencer analytics and look at your reply rate INCLUDING out-of-office replies.
not opens, and not your warm-up dashboard. reply rate, out-of-office included.
the reason that number is the tell comes down to one thing. an out-of-office only fires if you land in the primary inbox. you do NOT get an out-of-office from the spam folder. so an OOO is hard proof you placed.
so if you're sending real volume and your reply rate including out-of-office is sitting under 1%, that's a red flag. a healthy account sending to a clean list should be doing 2 to 6% globalized, out-of-office included.
if you're miles under that, one of two things is true:
→ you're not placing → or your list is bad
that's it. one or the other.
the timing data backs this up. the founder of SmartLead broke down 6,500 campaigns. 75% of all first replies land within the first hour of launch. 95% inside 72 hours. so you find out fast. a full day into launch with nothing back tells you something. in his exact words: "it's not your subject line, it's probably your list."
fill this in right now:
→ my reply rate including OOO = ____% → 2-6% = GO. under 1% on real volume = STOP, keep reading. → if you're under 1%, the rest of this guide tells you which of the next 4 numbers is dragging you down.
you now have your headline number. everything else explains it.
Number 1: Reply Rate Including Out-of-Office
this is your headline number and the one most people never pull correctly.
what this number reads
your reply rate counting human replies AND out-of-office replies together. you find it in your sequencer analytics. NOT the warm-up dashboard reply rate, which is a different number measuring inbox-to-inbox warmup chatter.
the healthy range (sourced)
a healthy account sending to a clean list does 2 to 6% globalized, out-of-office included. that's what i see across the accounts i monitor.
how to read it as GO vs STOP
→ 2-6% = GO. you're placing and your list is alive. scale carefully. → under 1% on real volume = STOP. you're either not landing in the inbox or your list is dead.
why include the OOO? because an out-of-office ONLY fires from the primary inbox. it's free proof of placement. strip it out and you lose your clearest signal that emails are actually arriving.
the common misread
people look at their warm-up dashboard reply rate, see a healthy-looking number, then assume the campaign is fine. that number is warmup bots talking to each other. it tells you nothing about real prospects.
the other misread is panicking at a low number without checking volume. 0% off 12 sends means nothing. 0.5% off real volume across 72 hours means something.
the fix
if you're under 1% on real volume, don't rebuild anything yet. work down numbers 2 through 5 in this guide. one of them is the cause. the most common culprit is the list, which is exactly why the SmartLead read of 6,500 campaigns landed on "it's probably your list."
if you want to go deeper, plot your reply rate over the life of the campaign. degradation over time tells a different story than a single snapshot.
fill this in:
→ reply rate incl. OOO = ____% → campaign age = ____ hours (under 72h? give it time. over 72h with nothing? red flag.) → GO / STOP: ____
you now have your baseline. the next 4 numbers explain it.
Number 2: Bounce Rate
this is the number that quietly burns your domain reputation while you're staring at reply rates.
what this number reads
the percentage of your sends that bounce back undelivered. you'll find it in your campaign analytics.
the healthy range (sourced)
under 1.5%. ideally under 1%.
how to read it as GO vs STOP
→ under 1% = GO. your list is clean and providers see you as someone who maintains it. → 1-1.5% = watch it. you're on the line. → over 1.5% = STOP. inbox providers read you as someone who doesn't clean their list, and they treat you accordingly. that treatment bleeds into Number 1.
the common misread
people treat bounce rate as a list-only problem and miss that it's a reputation problem. every bounce over the line is a signal to Gmail and Outlook that you're sloppy. so a high bounce rate doesn't just lose you those sends, it drags down placement on the good addresses too. that's how a bounce problem disguises itself as an infrastructure problem.
the other misread is ignoring catch-all addresses. those are the ones a verifier can't confirm because the domain accepts everything. dump a pile of catch-alls into your main campaign and your bounce rate creeps up without an obvious cause.
the fix
verify before you send. run your list through a tool like Reoon or Million Verifier and strip out everything that comes back invalid.
for catch-alls, you've got two options:
→ skip them → or push them into a separate lower-volume campaign on a domain you're happy to take the risk on
do that and you'll comfortably sit under 1%.
fill this in:
→ bounce rate = ____% → am i verifying every list before send? yes / no → GO / STOP: ____
Number 3: Provider Split Visibility
this is the most misunderstood number on the list, and it's where the misdiagnosis story actually lives.
what this number reads
your reply rate broken down by who you sent to (Google recipients, Microsoft recipients, enterprise recipients). the lazy version of this conversation is "split your sending 50/50 Google and Microsoft." there's truth in that, putting all your eggs on one provider means a single filter change takes out your whole operation. but the deeper read is whether you can even SEE your performance by recipient provider in the first place.
the healthy range (sourced)
there's no single number here. the point is visibility. but here's the math that proves why it matters. one account i looked at was landing like this:
→ Google to Google: 4% → Google to Microsoft: 0.3% → Google to enterprise: 0.9%
pull all three into one campaign and you see a 2% average. you think "that's fine."
it's NOT fine. one combination is dragging the whole thing down and you can't see it.
how to read it as GO vs STOP
→ you can see reply rate per recipient provider = GO. you know where to cut and where to scale. → everything dumped into one number = STOP. your blended average is hiding the problem and lying to you.
the common misread
this is the exact trap the agency-vs-enterprise person fell into. they scaled the segment that was secretly pulling 0.65%, watched the blended average sink, and called it an infrastructure failure. infrastructure was fine. the segmentation was invisible. when you can't see by provider and by ICP, a blended average will mislead you every single time.
the fix
Google is your baseline. SmartLead broke down 16.6 million emails and Gmail mailboxes pull twice the open rate of Outlook and a 21% higher reply rate. so start on a Google baseline, get a clean read, then diversify out gradually over two to four weeks, warming any new inboxes for two weeks before they send.
from then on, segment every campaign by recipient provider so you can actually see the drag. a quick lead-list check to pull the MX records (drop the list into Claude and ask) tells you who you're even sending to before you launch.
fill this in:
→ can i see reply rate by recipient provider? yes / no → best-performing combo = ____ → worst-performing combo = ____ → GO / STOP: ____
Number 4: Sending Volume
this number works against you silently. every day it's over the line, the damage has been adding up since the day it crossed.
what this number reads
two numbers, both inside your sequencer settings: how many emails you send per inbox per day, and how many inboxes you run per domain.
the healthy range (sourced)
→ no more than 15 to 20 emails per inbox per day → no more than 3 inboxes per domain
how to read it as GO vs STOP
→ 15-20/inbox/day and 3 or fewer inboxes/domain = GO. → over either line = STOP. you're burning the inboxes regardless of how clean the rest of the setup is.
the domain number matters more than people think. if a domain gets flagged, it takes out every inbox sitting on it. run 5 or 10 inboxes on one domain and you've built a single point of failure that can take out almost everything overnight.
the common misread
people think more volume per inbox means more replies, so they crank it to hit a number. pushing past 20 a day burns the inbox, and once you've burned it you're back to buying a new domain and warming up from scratch. the volume that felt like progress cost you weeks.
the other misread is stacking inboxes on a domain to save money. cheaper today, catastrophic the day that domain trips a filter.
the fix
if you're running hot, don't slam it to zero. cutting it dead is its own suspicious signal. bring it down gradually over a week back into the 15 to 20 range.
keep it at 20 max per inbox per day even after warmup is complete. warmup ending isn't permission to floor it.
fill this in:
→ emails per inbox per day = ____ → inboxes per domain = ____ → GO / STOP: ____
Number 5: DNS
we check DNS last because it's the fastest to check. but if it's wrong, it poisons everything downstream. a broken record here quietly drags down all four numbers above.
what this number reads
four records on every sending domain: SPF, DKIM, DMARC, and MX. these are the records that prove your email is legitimate and not spoofed.
the healthy range (sourced)
all four set up correctly on every domain. the two that matter most are SPF and DKIM. if either is off, the inbox provider is scoring you as suspicious before it reads a single word of your email.
one trap: DMARC sitting on "none." the record technically exists, but it isn't actually enforcing anything. it'll pass a lazy check while doing nothing.
how to read it as GO vs STOP
→ SPF, DKIM, DMARC (enforcing), MX all clean = GO. → SPF or DKIM off = STOP, fix before you send another email. → DMARC on "none" = amber, the record exists but isn't doing its job.
the common misread
people rely on old red-and-green lookup tools and trust a row of green ticks. but a DMARC record on "none" shows up as "present" and they assume they're covered. they're not. the other misread is checking DNS once at setup and never again, automated scripts often mark DNS as done without confirming the values actually propagated correctly.
the fix
drop your domain into Claude and ask it to check your SPF, DKIM, DMARC, and MX. it pulls them and tells you in plain English which ones are wrong. no red-green guesswork.
for anything flagged, either get your current inbox provider to correct it, or head to your registrar's DNS settings and fix the records against what Google Workspace or Microsoft 365 require. easiest path: ask Claude for the exact corrected values and paste them straight in.
fill this in:
→ SPF clean? yes / no → DKIM clean? yes / no → DMARC enforcing (not "none")? yes / no → MX clean? yes / no → GO / STOP: ____