Email list cleaning: what verification catches, and what it cannot
Cleaning a list means removing the addresses that will bounce, trap or embarrass you before you send to them. It is the cheapest deliverability work available, and the only kind that pays for itself on the first campaign — because a hard bounce is not a wasted email, it is a signal to the receiving provider that you do not know who you are mailing.
Why bounces cost more than the email
A hard bounce is a permanent rejection: the mailbox does not exist. Providers treat a high hard-bounce rate as evidence that the sender acquired the list badly — scraped it, bought it, or let it rot — because legitimate senders mailing people who opted in do not accumulate dead addresses at speed.
The practical consequence is that bounces damage the reputation of the sending domain, which then affects the messages that would have landed. One campaign to a dirty list can cost you the inbox for the next three to clean ones. That asymmetry is the whole argument for verifying first.
What a verifier actually returns
Verification is not a single yes or no. Every serious service returns a set of categories, and the difference between them is where most of the value and all of the confusion sits.
- Valid. Syntax is correct, the domain resolves, it has MX records, and the mail server accepted a probe for that specific mailbox. Safe to send.
- Invalid. The server rejected the address, the domain does not resolve, or there are no MX records. Remove these; they are the hard bounces you are paying to avoid.
- Catch-all (also “accept-all” or “unknown”). The domain is configured to accept mail to any address, so the server answers yes to everything and reveals nothing. Nobody can resolve these remotely — more on this below.
- Disposable. A temporary mailbox from a burner service. Technically deliverable, commercially worthless.
- Role-based. info@, sales@, support@ — a shared mailbox rather than a person. Often deliverable, usually a poor cold email target, and more likely to be marked as spam.
- Spam trap. An address that exists specifically to catch senders who do not clean lists. Hitting one is materially worse than a bounce.
The catch-all problem, stated honestly
This is the single most misunderstood thing about verification, and it is worth being blunt: no verifier can tell you whether a specific mailbox on a catch-all domain exists. Not the expensive ones, not the ones claiming 99% accuracy. The server answers “yes” to every address by design, so there is nothing to measure.
This matters enormously for B2B cold email, because catch-all configurations are common on business domains — far more common than on consumer mail. Depending on the list, a meaningful share of your addresses can come back unresolved, and that is a limitation of the technique rather than a fault of any product.
What to do with them is a judgement call, not a setting. The options are to drop them, to send to them accepting an unknown bounce risk, or to isolate them into a separate campaign on a separate domain so that if they do bounce, the damage is contained. The third is the sensible default at volume.
Where services genuinely differ is how honestly they report this bucket. A verifier that quietly marks catch-alls as “valid” produces a beautiful report and a bounce rate you discover later.
How verification is priced
Almost universally per credit, where one credit verifies one address, sold in packs or as a monthly allowance. Two things follow from that.
First, unit price falls steeply with volume — EmailListVerify, for instance, publishes $5 for 1,000 credits down to $186 for 100,000, which is $0.005 against $0.00186 per address. Second, and more useful for cold email: check whether credits expire. List cleaning is bursty. You verify a few thousand prospects when you build a list, then nothing for weeks. A monthly plan that resets wastes most of what you buy on that pattern; a non-expiring pack does not. The monthly discount only pays off at genuinely steady volume.
Some sending tools bundle verification at no extra cost. If yours does, the question is not whether to pay for a separate verifier but whether the bundled one reports catch-alls honestly — which is a question about output quality, not price.
When to clean
- At list build. Always. Verifying 2,000 scraped addresses costs a few dollars and prevents the bounce rate that would otherwise be discovered mid-campaign.
- Before any send to a list older than about 90 days. B2B lists decay fast — people change jobs, companies fold, mailboxes get deactivated. An address valid in March is not necessarily valid in September.
- At the point of capture, if you collect addresses on a form. Most verifiers expose a real-time API for exactly this, so bad addresses never enter the database.
What cleaning does not fix
A clean list is a floor, not a strategy. Verification removes addresses that would bounce; it cannot make the remaining people want to hear from you. It has no effect on spam complaints, which are driven by relevance and targeting, and complaints are weighted far more heavily than bounces by the major providers — Google and Yahoo publish a ceiling of 0.3% user-reported spam for bulk senders, and name 0.1% as the level to stay under.
Nor does it touch authentication, domain age or sending volume. A perfectly clean list sent from a week-old domain with no SPF record will still land in spam. Cleaning is one input among several — the deliverability guide covers the order to work through them in.
Choosing a service
Three questions separate them, and price is not one: does it report catch-alls as their own category rather than folding them into “valid”, does it detect spam traps, and do unused credits expire?
The practical way to compare two verifiers is a seeded list — a few hundred addresses whose status you already know, including deliberate dead ones and known catch-all domains, submitted blind to both. That measures false positives and false negatives directly, which no accuracy claim on a pricing page can. It is the test we intend to run across this category; we have not run it yet, and this guide contains no results of our own. See what we are testing.