Verification is not optional for scraped or built lists. Here is exactly when to verify, what verifiers can and cannot catch, and how not to overpay for it.
By Joel Wylie, Founder · Last updated 7 August 2026
To verify an email list for cold outreach: run every address through a dedicated verification tool before it goes anywhere near your sending platform, keep only the addresses marked valid, treat catch-all domains as a separate calculated bet, and add an MX check to strip domains behind strict corporate filters that verifiers cannot see. Verification is not optional for scraped or built lists. Bounces compound into deliverability damage that outlasts the list that caused it, and prevention costs a fraction of a cent per address.
We verify lists for client campaigns every week. This is the exact process, including the two failure modes that catch almost everyone: trusting stale validity flags, and assuming verification catches everything that bounces.
Because bounces are not isolated events. Every hard bounce tells the receiving mail provider that your sending domain mails dead addresses, which is the signature of a spammer with a scraped list, and the exact behaviour blocklist operators like Spamhaus exist to catch. Enough of that signal and providers start filtering the mail you send to perfectly good addresses too. The damage compounds: a dirty list this month taxes every campaign you send next month.
We learned this the hard way. Early on, a list came in carrying "valid" flags from a previous verification pass, and we trusted them. Of the hundreds of addresses marked valid, only a small fraction were still genuinely valid, and the campaign hit a 45% bounce rate before we pulled it. Stale flags do not count. Lists decay, people change jobs, mailboxes get shut down. Only a fresh verification run tells you what is true today.
Deliverability damage is also the expensive kind of damage, because the scarce resources in cold outbound are send capacity and domain reputation, not leads. A weak list burns both. The wider system this protects is covered in our email deliverability playbook.
Before upload, every time. This matters because most sending platforms check nothing when you import leads. The leads land, get labelled "unverified", and the platform will happily fire cold email at all of them. There is no safety net between your CSV and the send queue.
Verifying after bounces appear is damage control, and it is usually the wrong control. By the time bounces show up, the reputation cost is already paid, and re-verification only fixes one narrow class of bounce anyway. Bounces caused by corporate gateway policy, by young-domain reputation, or by catch-all domains cannot be fixed by any verifier, before or after. Our companion post on cold email deliverability in 2026 covers how we diagnose a live bounce problem instead of reflexively re-verifying.
One caveat that saves money: a list that was verified at source by the data provider does not need a second verification pass. Verify everything else: scraped lists, old lists, exported CRM data, and especially client-supplied CSVs, which in our experience are the highest-risk source of all.
A hard bounce means the mailbox does not exist, and the receiving server said so explicitly. These are the bounces that kill deliverability when they pile up, and they are exactly what verification prevents. A verifier asks the mail server about the address in advance, gets the same answer the bounce would have given, and lets you remove the address before it ever costs you anything.
Catch-all domains, also called accept-all, break that mechanism. A catch-all domain accepts every address at the mail-server handshake, real or not, and then bounces the non-existent mailboxes asynchronously later. The verifier's check passes because the server said yes. No verifier on the market can confirm individual addresses on these domains, which is why they come back labelled valid-risky rather than valid.
So valid-risky is not a defect in your verifier. It is an honest label for a bet. Plenty of real corporate leads sit on catch-all domains, and in one of our builds valid-risky addresses were 38% of the entire sendable list. Dropping them all would have thrown away a large slice of genuine buyers. What we actually do is treat them as their own pool: send to them separately from the clean valid pool, on infrastructure we are willing to expose to a higher bounce rate, and let the results decide how hard to lean on them. Dead addresses on catch-all domains also bounce exactly once and then get suppressed, so the cost is front-loaded and self-limiting.
Because sending platforms verify nothing on import, and the "unverified" badge is just the default state of every lead that arrives. If your list went through a dedicated verifier upstream, that badge is meaningless. The verification already happened, at higher quality than any built-in check, and no sending-tool label overrides it.
This trips up a lot of operators in both directions. Some see "unverified" and pay to verify a list that was already verified. Others assume the platform must have checked something and send raw lists cold. Both mistakes come from trusting the badge instead of the list's actual history. The rule is simple: the verification status that matters is the one from your verifier, dated recently, for this exact file.
An MX check answers a different question than verification does. Verification asks "is this address real?" The MX check asks "will this domain's mail gateway accept our mail at all?" Those are different questions with different answers, and the second one is invisible to every verification tool.
Every domain publishes MX records naming the server that receives its mail. When that server is a strict corporate filter like Mimecast or Barracuda, cold mail from a new sending domain gets rejected at close to 100% on policy. The address can be perfectly valid, the copy can be perfect, and the gateway still refuses the connection because it does not know your domain. In one campaign we analysed, Mimecast-protected domains were 7% of the list but 77% of all the bounces. In another they bounced at roughly a 35% rate, a 16x over-index against the rest of the list, while mainstream providers like Microsoft 365 and Google bounced under 1%.
These leads will never convert and will always damage you, so we strip them at list build: look up the MX record for every unique domain on the list, and drop any lead whose mail is handled by one of the strict gateways. Every domain, never a sample, because we have watched a clean spot check miss protected domains that a full sweep then found. It costs minutes and it removes the single worst bounce source on most lists before anything is uploaded.
Much less than most people pay. Verification is a commodity: every provider is running the same style of mail-server checks and returning the same verdicts. When we compared providers on identical lists, we found a price spread of more than 50x between the most expensive and the cheapest option doing the same job at the same accuracy. That is not a quality gap. That is branding.
So shop on price per verification. Run a sample list through a cheap provider and an expensive one, compare the verdicts, and when they agree, take the cheap one and never look back. At real outbound volume the difference funds entire campaigns.
Sequence the spend by confidence, too. Verify a small batch first, send thin, and read the results before verifying the rest of a large speculative list. A big raw list is not a big usable list, and bulk-verifying it up front is paying full price to find that out.
Every verifier uses slightly different labels, but the verdicts collapse into four cases. Here is how we act on each one.
| Verdict | What it means | What we do |
|---|---|---|
| Valid | The mail server confirmed the mailbox exists on a domain that gives real answers | Send. This is the clean core of the list. |
| Valid-risky / catch-all | The domain accepts every address at the handshake, so the individual mailbox cannot be confirmed by any verifier | Send as a separate pool on infrastructure that can absorb a higher bounce rate, or hold back. A deliberate bet, never mixed silently into the clean pool. |
| Invalid | The mailbox does not exist; sending guarantees a hard bounce | Delete before upload. If invalids ever show up in live bounces, the upload filter is broken, not the verifier. |
| "Unverified" (sending-tool label) | The platform's default state for imported leads; it checked nothing | Ignore the badge. Trust the fresh upstream verification, and never treat the label as a reason to send raw or to re-verify. |
Verification tells you an address exists. It tells you nothing about whether the person behind it is someone your offer is for, and a list of 100% valid addresses aimed at the wrong people still produces zero pipeline. Quality needs its own check.
The one we run is a list temperature check: sample the leads a live campaign has actually sent to, and read through the non-interested replies looking for wrong-person signals. Replies like "not my department", "we do not handle that here", or "wrong company entirely" are the list telling you its own targeting is off. A handful of those in a small sample says more about list quality than any verification report, and it works on client-supplied lists just as well as built ones.
The two checks answer different questions and you need both. Verification protects your deliverability. The temperature check protects your reply rate, and reply rate is the number the whole channel lives on. For what those numbers should look like, see our cold email reply rate benchmarks.
Before upload, always. Most sending platforms check nothing when leads are imported, so an unverified list starts bouncing on day one. Bounces damage sender reputation, and that damage compounds across every future send. Verification after bounces appear is damage control, not prevention.
Yes, every time. Scraped and built lists decay fast, and stale validity flags from the original source do not count. We once trusted a file's old valid labels and only a small fraction were still genuinely valid, which caused a 45% bounce rate.
A catch-all domain accepts every address at the mail-server handshake, then bounces non-existent mailboxes later. No verifier can confirm individual addresses on these domains, so verifiers label them valid-risky. Sending to them is a calculated bet, not an error.
Because most sending platforms verify nothing on import and label every lead unverified by default. If the list was verified upstream with a dedicated verifier, the label is meaningless. Judge a list by its verification history, not the sending tool's badge.
MX checks reveal which mail gateway guards a domain. Strict corporate filters like Mimecast reject cold mail from new sending domains at close to 100% on policy, even when the address is perfectly valid. A verifier passes those addresses; the gateway still refuses the mail.
Far less than most providers charge. We found a price spread of more than 50x between verification providers doing the same job at the same accuracy. Verification is a commodity check, so shop on price per verification, not on branding.
Want outbound like this run for you, end to end?
Book A Call
The operational rules we run on every client campaign, and the panic reflexes that quietly make deliverability worse.

Real benchmark tiers from an agency sending 50,000 cold emails a month per client, and why the reply rate everyone quotes is measuring the wrong thing.

No URLs, no email addresses, no domain names in cold copy. The two reasons, and what to do instead.