Clay logo, go to homepage

Clay GTM guide

How to Clean an Email List and Cut Your Bounce Rate

Verification catches dead addresses at ~99% accuracy before they bounce. Here is how to clean an email list and protect your sender reputation, with a cleaning system that runs continuously instead of once a quarter.

May 8, 20269 min read

A bounce is not a sending problem. It is a data problem that arrived late. By the time a mailbox provider tells you an address is dead, you have already spent the send, taxed your sender reputation, and taught the receiving domain to trust you a little less. Cleaning an email list is the work of finding those dead addresses before you mail them, not after.

The good news: most of them are catchable in advance, and the catch rate is far higher than the industry treats it. This is how to build a cleaning system that runs continuously instead of once a quarter.

Why a dirty email list raises your bounce rate

A bounce rate is a trailing indicator of list quality, and by the time it moves, the damage is already booked. Mailbox providers watch your bounce rate as a proxy for how carefully you manage your list. Cross roughly 2% and inbox placement starts to slip; cross 5% and most ESPs will throttle or suspend sending. The reason a high rate is so expensive is that it is self-reinforcing: every hard bounce lowers your domain reputation, which means more of your legitimate mail lands in spam, which lowers engagement, which mailbox providers read as another negative signal.

The fix is not to clean reactively after bounces show up. It is to verify addresses before they ever enter a send. A clean list is a byproduct of verification discipline, not a separate task you schedule for later.

The five things that make an email address dirty

Not every bad address is bad in the same way, and the cleanup for each is different. A duplicate wastes a send and inflates your counts. A hard-invalid address bounces every time. A role address (info@, sales@, support@) often routes to a shared inbox and draws spam complaints. A stale address belonged to someone who changed jobs eighteen months ago. A risky domain has no working mailserver at all, or exists only to trap senders. Treating all five as one remove-invalid-emails step is why most cleanups miss the addresses that do the real reputation damage.

What's actually in a 1,000-contact list before cleaning

Usable for cold send1,000
1,000 contacts importedClean core: 0

Toggle each defect to apply its cleanup and watch the deliverable list shrink toward the clean core.

The clean core in a typical neglected list is barely over half. The other 47% is not all junk, but every one of those addresses needs a decision before it earns a send.

Step 1: De-duplicate and standardize before you verify anything

Verification charges per lookup, so paying to verify the same address three times is the first leak to close. Duplicates hide in plain sight: the same person entered as j.smith@acme.com and John.Smith@Acme.com, the same company spelled two ways, a trailing space that makes two identical strings look distinct to a filter. Standardize first, then collapse.

In Clay, you do this with a few formula columns and a lookup. Lowercase and trim every address, normalize the domain, then run a single-row lookup against the same table to flag rows that already exist. The lesson on keeping your CRM data fresh calls this the foundation step for a reason: it shrinks the list you are about to pay to verify and stops you from sending two copies of the same campaign to one person.

Step 2: Run a three-gate verification pass

Verification is not one check; it is three gates, and most dead addresses fail before the third. Syntax filtering catches the malformed and obvious-junk addresses for free. A domain and MX-record check confirms the domain can actually receive mail before you spend a credit probing the mailbox. Only the addresses that survive both reach the mailbox-level check, which is the expensive, definitive one.

1,000 raw addresses through the three verification gates

1,000raw addresses in
SyntaxFree60

Malformed addresses, banned characters, obvious junk

Domain + MX recordNear-free110

Domain resolves and has a mailserver that can receive mail

Mailbox checkPaid credit100

The specific inbox exists and accepts mail

Deliverable730

Sample attrition for an unverified B2B list; actual rates vary by source quality.

Most dead addresses are caught by free syntax and domain checks, so the expensive mailbox probe only runs on the addresses worth spending a credit on.

The order is the point. Running the paid mailbox check on every raw address, including the malformed ones and the dead domains, is how teams burn verification credits on addresses that a free syntax rule would have rejected. Clay's email verification returns five statuses: valid, invalid, catch-all, role-based, and unknown. For cold outbound, the conservative rule is to send only to valid and to quarantine everything else.

Step 3: Screen the domain, not just the address

A perfectly formatted address on a risky domain is still a liability, because the domain is what poisons your reputation. Cold email deliverability problems rarely come from bad copy. They come from sending into domains that have no working inbox, were registered last week, or were built specifically to trap senders. The address can pass a syntax check and still sit on a domain that will hurt you.

Clay's Domain Deliverability Check Claybook turns a raw list into risk-assessed records by reading the signals a verifier alone misses. MX records tell you whether a domain can receive mail at all (no MX means no inbox). WHOIS data exposes a domain registered days ago, a common spam-trap pattern. A very low TTL can flag an unstable setup. Catch-all domains, which accept mail to any address whether the mailbox exists or not, are the ones that hide bounces until they happen.

Not having Clay would hugely reduce our ability to run good outbound campaigns. We wouldn't be calling people as much, because it's hard to get good phone numbers. We wouldn't be emailing as much, because we'd be likely to bounce or go to spam. With Clay, we have a reliable source.

Julien Reiman, Head of Sales, Baseten

You can also add a master domain blacklist as a lookup table: competitors, free webmail you do not want to mail, known trap domains, anything bad-fit or risky. The Claybook for automating email data cleaning and hygiene in Clay wires this in so that every new address is verified, its domain validated, and its company enriched from a single email input, with bad domains filtered out before they cost you a credit or a send.

Step 4: Understand why catch-all domains are where accuracy drops

Verification accuracy is near-perfect until you hit a catch-all domain, and then it falls off a cliff. A standard mailbox check can definitively confirm whether a normal inbox exists. A catch-all domain accepts mail to every possible address, real or invented, so the same probe comes back accepts for an address that will still bounce to a human. This is the single hardest part of cleaning a list, and it is exactly where cheap verifiers quietly fail.

Clay benchmarks email verifiers against ground-truth datasets, and the gap between the two domain types is the whole story.

Verifier accuracy: standard mailboxes vs. catch-all domains

Standard (non-catch-all) domains

ZeroBounce
99.25%
Findymail
98.92%
Listmint
98.13%
Top in this mode: ZeroBounce at 99.25% (bars scaled 90–100% to show the gap)Clay non-catch-all verifier benchmark, 2025

Verifying a normal mailbox is a near-solved problem at ~99% accuracy, but catch-all domains drop the best verifiers to ~95%, which is why a single verifier on a mixed list still lets bounces through.

Two things matter here. First, the top of the standard leaderboard is not the top of the catch-all leaderboard, so the verifier you pick depends on the kind of domains your list actually contains. Second, because no single verifier is best at both, Clay lets you chain verifiers so that a catch-all flagged by one is re-checked by the provider that handles catch-alls best. That chaining is what closes the gap a single tool leaves open.

Step 5: Keep the list clean automatically instead of cleaning it once

A list cleaned once is a list that starts decaying the next day, because the people on it keep changing jobs. Contact data goes stale fast: roughly a third of B2B contacts shift roles or companies each year, and a recycled corporate address can turn into a spam trap. A quarterly manual scrub cannot keep pace with that, and the gap between scrubs is where bounces accumulate.

The lesson on keeping your CRM data fresh builds the self-maintaining version. Create a dynamic list in your CRM called something like Contacts due for enrichment refresh, filtered on a custom Last enrichment date is more than 30 days ago field that Clay writes to. Clay imports that list on a schedule, re-verifies every address, re-finds a new one when someone has moved, and writes the result back. You can layer the filter so active deals and target accounts refresh more often, and exclude closed-lost or do-not-contact records entirely.

Reps used to spend hours validating account information because they couldn't trust the data. With Clay, reps are much more confident in our CRM data and most accounts in their books of business are now worth reaching out to.

The shift that matters is from cleaning as an event to cleaning as a property of the system. Once the refresh loop runs on a schedule, the list never drifts far enough to produce a bounce spike, because every address is re-checked before it ages into a problem.

Step 6: Re-find the address instead of just deleting it

Removing a dead address protects your sender score, but it also deletes a contact you wanted to reach. The person did not vanish; they changed jobs. The cheapest list cleanup throws that contact away. A better one detects the job change, finds the new work email, verifies it, and keeps the relationship alive.

Clay does this in the same refresh loop. When verification flags an address as invalid and a job-change signal fires, an enrichment step finds the person's current company and a waterfall of providers finds and verifies their new work email. To draft the re-introduction at scale, an AI column can write the opener from the person's new role.

AI prompt: re-introduction after a job change
You are writing a short, warm re-introduction email opener.CONTEXT:- Contact: {{first_name}}, now {{new_title}} at {{new_company}}- Previous company we knew them at: {{old_company}}- What we do, one line: {{our_one_liner}}Write 2 sentences only. Acknowledge the move to {{new_company}}without being weird about how we know. Connect what we do to aplausible priority for a {{new_title}}. No greeting, no signature,no exclamation points. Plain, specific, human.

A deleted contact is gone. A re-found one is a fresh, verified address attached to someone who just walked into a new budget. Cleaning the list this way grows your reachable audience instead of shrinking it.

Stop cleaning your list. Build one that stays clean

Verify addresses, screen risky domains, and re-find job-changers on a schedule, so your bounce rate never spikes again.

Frequently asked questions

How do I clean an email list?

Standardize and de-duplicate the list first so you do not pay to verify the same address twice. Then run a three-gate verification pass: a free syntax check, a domain and MX-record check, and a paid mailbox check on the survivors. Screen each address's domain for spam-trap and catch-all risk, send only to addresses verified valid, and put the whole loop on a schedule so the list re-cleans itself instead of decaying between manual scrubs.

What bounce rate is too high?

Most mailbox providers and ESPs start penalizing you above roughly 2%, and platforms will throttle or suspend sending near 5%. A clean, verified list typically holds well under 2%. The number to watch is the trend: a creeping bounce rate means addresses are aging faster than you are re-verifying them, which is the signal to tighten your refresh cadence.

What is the difference between a hard bounce and a soft bounce?

A hard bounce is permanent: the address or domain does not exist, so it will fail every time and should be removed immediately. A soft bounce is temporary, such as a full mailbox or a server that is briefly down, so the address may work later. Remove hard bounces on the first failure; suppress soft bouncers for a window, then re-verify before mailing them again.

Why do verified emails still bounce?

The usual culprit is a catch-all domain, which accepts mail to any address whether the mailbox exists or not, so a single verifier reports accepts for an address that still bounces to a real person. Catch-alls drop the best verifiers from about 99% accuracy to about 95%. Chaining a second verifier that specializes in catch-alls re-checks those flagged addresses and closes most of the remaining gap.

How often should I clean my email list?

Cleaning as a recurring event is the wrong frame; clean continuously instead. Set a dynamic refresh list that re-verifies any contact whose data is older than 30 days, and refresh active-deal and target accounts more often than the rest. If you must batch it manually, clean monthly above 100,000 sends, quarterly between 10,000 and 100,000, and at least every six months below that.