Most people skip cold email list verification. They pull a list from Apollo, export it, and fire away. Two weeks later they’re wondering why their open rates collapsed and Google flagged their sending domain.
Email verification before sending is the step between “I have a list” and “I can actually send to this list.” Done right, it removes the addresses that will hurt you — bounces, spam traps, catch-alls that route to /dev/null — before they touch your sending infrastructure.
Here’s how to do it, what each tool actually checks, and what it’ll cost you if you skip it.
An Unverified List Burns Domains
When an email bounces — the server rejects it because the address doesn’t exist — your sender score takes a hit. One bounce is noise. A 5% bounce rate is a problem. Hit 10% on Gmail sends and you’ll start landing in spam. Cross 15% and you’re looking at sending suspensions.
Apollo’s data is good, but it’s not real-time. Email addresses go stale. People leave companies, domains get abandoned, aliases get deleted. A list exported from Apollo today will have somewhere between 10–20% invalid or risky addresses depending on the industry, seniority level, and how recently the data was collected.
Spam traps are worse than bounces. These are addresses — often recycled old emails or typo-like addresses owned by ISPs — designed specifically to catch senders who don’t clean their lists. Hitting a spam trap doesn’t just affect one email. It flags your domain as a potential spammer at the ISP level.
The good news: verification catches most of this before it does damage.
Waterfall Verification Means Multiple Tools in Sequence
Waterfall verification means running your list through multiple verification tools in sequence, each catching what the previous one missed. You don’t run all 10,000 leads through ZeroBounce and call it done — you run them through ZeroBounce, then send everything marked “risky” to Millionverifier, then send Millionverifier’s uncertain results to Scrubby.
Each tool uses different verification methods and different data sources. A result that ZeroBounce marks “unknown” might get a cleaner read from Millionverifier because it has better coverage for that domain. Running the waterfall gives you confidence on the edge cases.
ZeroBounce — checks email format, domain health (MX records, does the domain accept email?), known spam traps from their database, and does an SMTP verification (pings the receiving server to confirm the mailbox exists). Returns: Valid, Invalid, Catch-all, Unknown, Spamtrap, Abuse, DoNotMail.
Millionverifier — similar SMTP-level verification with different infrastructure. Better coverage on some European domains and enterprise domains where ZeroBounce gets rate-limited. Returns: Good, Risky, Unverifiable, Bad.
Scrubby — specializes in catch-all verification. Most tools flag catch-all domains as “risky” because they can’t determine which individual addresses are real. Scrubby actually tests the specific address on a catch-all domain — if it bounces, it’s invalid; if it accepts, it’s probably deliverable. Takes longer but turns unknowns into usable data.
Catch-Alls Are the Hardest Problem in Cold Email List Verification
A catch-all domain is configured to accept email sent to any address at that domain — even fake ones. If you email [email protected] and their domain is catch-all, the server won’t bounce it. The email just disappears.
This is bad for several reasons. Your list looks clean — no bounces — but nobody’s reading the emails. Open rates tank and you can’t diagnose why because the sends appear delivered. If you’re warming up a new domain, sending to catch-alls inflates your “delivered” count without any real engagement, which can trigger spam filters that expect opens to scale proportionally with volume.
Roughly 15–25% of B2B addresses you’ll pull from Apollo are on catch-all domains. Scrubby verifies these at the individual address level. Of those, typically 40–60% have actual mailboxes that accept email — the rest silently swallow your messages.
The pragmatic rule: if you’re running a large campaign (2,000+ emails), run catch-alls through Scrubby. If you’re small-scale, skip catch-all addresses entirely — the expected deliverability isn’t worth the domain risk.
How Much of a Typical Apollo List Survives
A 10,000-lead export from Apollo will typically break down like this after waterfall verification:
| Status | Approximate % | Action |
|---|---|---|
| Valid (confirmed deliverable) | 55–65% | Send |
| Catch-all (Scrubby verified good) | 10–15% | Send |
| Invalid (bounces, bad format, dead domain) | 10–15% | Remove |
| Catch-all (unverifiable or Scrubby bad) | 8–12% | Remove |
| Spam trap / DoNotMail | 1–3% | Remove immediately |
End result: you send to 65–80% of your original list. The rest gets removed before it touches your domains.
That range shifts by data source. LinkedIn-scraped data tends to be more accurate — people update their own profiles. Older Apollo data or lists from low-quality brokers can fall to 50% clean. Industry matters too — tech and SaaS addresses turn over faster than professional services or healthcare.
The Cost Calculation That Makes Verification Obvious
Verification cost for 10,000 leads:
- ZeroBounce: ~$55 (bulk pricing)
- Millionverifier: ~$15 for the risky remainder
- Scrubby: ~$20–40 for the catch-alls
- Total: ~$80–110
Cost of burning a sending domain:
- Replacement domain: $12–15
- DNS setup and configuration: 2 hours
- Warmup period for the new domain: 4–6 weeks
- Lost sending capacity during warmup (at 20 emails/day ramp): 600–900 emails you can’t send at full volume
- If a domain gets flagged by Google or Microsoft: effectively dead for cold outreach, permanently
- If you were using the same domain for your main business email: the damage extends to everything you send
The reputation damage is the expensive part, not the domain. A domain that was warming up for 3 weeks is 3 weeks of work gone. If you’re running a campaign on a deadline, that’s the deadline slipping. And if the domain was your primary business email — a mistake more common than it should be — you’re not just losing a cold email channel.
Paying $90 to verify 10,000 leads is cheap insurance against a much more expensive outcome.
The Verification Workflow, Step by Step
Run this before every campaign, not once per list:
- Export your raw leads from Apollo (or your source)
- Run through ZeroBounce — remove everything flagged Invalid, Spamtrap, Abuse, DoNotMail
- Take ZeroBounce’s Catch-all and Unknown results → run through Millionverifier
- Take Millionverifier’s Risky and Unverifiable results → run through Scrubby
- Combine: Valid from ZeroBounce + Good from Millionverifier + Good from Scrubby = sendable list
On 10,000 leads, the whole process takes about 2–4 hours depending on how quickly Scrubby processes the catch-alls.
One timing note: verify as close to send time as possible. A list verified today and sent in three months will have decayed. Addresses go stale. If you’re running large batches, verify in waves that match your sending schedule — don’t verify the whole year’s worth of leads on January 1st.
PitchGale’s pipeline handles this automatically — leads discovered through Apollo pass through Hunter for email quality scoring, and only verified addresses enter campaigns. The catch-all question gets resolved before a single send, not after you’ve already damaged your domain.
Skip Verification Once and You’ll Never Skip It Again
The people who verify obsessively aren’t the ones who read about it first. They’re the ones who skipped it once, burned a domain they’d spent six weeks warming, and had to start over from zero.
The math doesn’t leave room for debate. A $90 verification run against a $0 skip looks like an obvious cost to avoid. Against a 6-week warmup lost and a campaign delayed by a month, $90 is the obvious investment to make.
Run the waterfall. Remove the bad addresses. Then send.