The direct answer: run your list through seven steps in order — export → dedupe → syntax/format check → drop known-bad → verify mailboxes → classify catch-all/role/disposable → suppress & re-verify on a schedule. Each step removes a different kind of bad address, and skipping one lets that category slip into your send. Below is the workflow senior deliverability people actually use before a campaign, with the tool for each step.
1. Export a clean, complete copy
Pull the full list out of your CRM or ESP as a CSV, including the columns you use for segmentation and — importantly — any existing bounce and unsubscribe status. You clean the export, not the live list, so nothing is lost if you make a mistake. Before you do anything else, confirm the file is actually well-formed: a stray comma, a wrong delimiter or a header that shifted a column will corrupt every downstream step. Run it through the CSV Format Validator first so you are cleaning data, not fighting the file.
2. Deduplicate — and normalise before you compare
Duplicates inflate your list, waste send volume and can double-hit the same person, which drives complaints. The catch is that Jane@Example.com, jane@example.com and jane@example.com are the same mailbox but three different strings. Lower-case the domain and trim whitespace before de-duplicating, otherwise you keep copies you meant to remove. Deduplication is boring and it is the single cheapest win in this list — do it before you spend any verification budget, so you never pay to check the same address twice.
3. Fix syntax and format errors
A surprising share of list rot is just malformed addresses: a missing @, a trailing dot, gmail.con, a space in the local part, or an address that was truncated on import. These will hard-bounce every time, and they cost nothing to catch. Screen the file with the Email Syntax Validator, which applies the RFC 5321/5322 rules for what a valid address may contain. Fix the obvious typos where you can (.con → .com), and drop anything that can't be a real address. Note that valid syntax only proves the address could exist — it says nothing about whether the mailbox does. That's the next step.
4. Drop what you already know is dead
You are sitting on free intelligence: your own send history. Any address that produced a hard bounce (a permanent 5.x.x failure — no such user, domain gone) should already be suppressed and must never go back into a send. If your ESP has been quietly retrying them, pull them now. Repeated spam complaints and long-dormant unsubscribes go too. Removing known-bad addresses before verification means you don't waste probes on them and — more importantly — you stop them poisoning your reputation. If you're unsure which bounces are permanent, the bounce-rate guide breaks down hard vs soft.
5. Verify the mailboxes that survive
Now verify what's left. Verification confirms an address is real without sending it anything: it checks syntax, looks up the domain's MX records, opens an SMTP conversation with the receiving server and probes whether the specific mailbox would accept mail — stopping before the message body, so nothing lands in anyone's inbox. (The how-verification-works guide walks the pipeline stage by stage.) For a handful of addresses use the single-address Email Verifier; for a whole list, upload the CSV for bulk verification and let it work through the file. Want a read on overall quality before you commit? The Email List Health Report scores a sample so you know what you're dealing with.
6. Decide a policy for catch-all, role and disposable
Verification won't return a clean yes/no for everything, and that's expected — some addresses need a decision, not just a check:
- Catch-all (accept-all) domains accept mail for every address, real or not, so SMTP can't confirm the individual mailbox. These come back as risky/unknown. Use the Catch-All Checker to flag them, then segment them out of your riskiest sends — the catch-all decision guide covers when it's safe to mail them anyway.
- Role addresses (
info@,support@,sales@) land in shared inboxes and carry a higher complaint risk. Detect them with the Role-Based Checker and decide per campaign — often fine for B2B, rarely worth it for consumer marketing. - Disposable addresses are deliverable today and gone next week — technically valid, operationally junk. The Disposable Checker catches the known throwaway domains so you can drop them.
There isn't one right answer here; the point is to make the call deliberately per segment instead of discovering it in your bounce report. The results-explained guide maps each status to a recommended action.
7. Suppress, sync back, and re-verify on a schedule
Push the cleaned, verified list back to your ESP and add every dropped address to a permanent suppression list so it can never be re-imported. Then treat hygiene as recurring, not one-off: industry estimates commonly put list decay at ~20–30% per year as people change jobs and abandon inboxes, so a list you cleaned in spring is measurably worse by autumn. Set a re-verification cadence — before every large send, and periodically for dormant segments — as covered in how often to re-verify.
Verify your work before you send
After cleaning, do a final pass: re-run the List Health Report on the cleaned file and confirm the invalid/risky share has dropped to something you're comfortable sending to. If you send transactional or authenticated mail from the same domain, it's also worth confirming the domain itself is healthy with the Email Health Check — a clean list into a mis-configured sending domain still lands in spam.
Where list cleaning goes wrong
- Verifying before deduping. You pay to check the same address twice. Dedupe first, always.
- Treating catch-all as invalid. Catch-all means unconfirmable, not dead. Blanket-deleting them throws away real customers on Google Workspace and Microsoft 365 domains.
- Cleaning once and calling it done. Decay is continuous. A quarterly cadence beats a heroic annual purge.
- Not suppressing what you removed. If dropped addresses can be re-imported on the next sync, you'll re-mail dead addresses and undo the whole exercise.
- Buying or scraping to "top up" a cleaned list. Purchased lists are full of spam traps; one clean send into a bought list can undo months of reputation work.
Clean lists aren't a project you finish — they're a habit. Get the sequence right once, script the parts you can, and every future campaign starts from a list you can trust.