HowToUnblockWebsite

Clean a Cold Email List: The Order That Saves Money

The short answer

Deduplicate first, then syntax, then domain and MX, then mailbox verification, then apply your suppression list last. Each step is cheaper than the one after it and removes work from it. Verifying before deduplicating pays twice for the same address.

A list of 50,000 addresses is usually closer to 30,000 real, reachable people, and the cost of verification is per address. Cleaning in the right order turns a large verification bill into a small one, and it prevents the failure mode where a duplicate-heavy list hides which source is dirty.

Step one: deduplicate, case-insensitively

Normalise the local part and domain to lowercase, trim whitespace, and remove surrounding punctuation that got captured from a table or a PDF. Then remove exact duplicates by the full address, not by name or company, because two contacts at one company are two people.

Decide about role addresses (info@, sales@) at this stage too. They are not invalid, but they rarely reply and often complain, so whether they belong in your list is a choice you should make once rather than per campaign.

Steps two and three: syntax, then the domain

Syntax filtering is free and instant. It removes addresses that cannot exist: missing at signs, spaces, invalid characters, domains with no dot. Do it before anything that costs money, and do not over-engineer it, because a strict regex rejects valid but unusual addresses.

Then resolve the domain. A domain with no MX record cannot receive mail, so every address at it is dead regardless of the local part. This step is cheap and removes whole blocks of addresses from a scraped or purchased list, which is exactly where dead domains cluster.

  • Lowercase, trim, strip stray punctuation.
  • Remove exact duplicates by full address.
  • Drop syntax-invalid addresses.
  • Drop addresses whose domain has no MX record.
  • Only then pay for mailbox-level verification.

Steps four and five: mailbox, then suppression

Mailbox verification asks the receiving server whether the specific address exists. It is the only step that needs a network conversation per address, so it is the expensive one, and it should see the smallest list. Catch-all domains will come back uncertain, and the decision there is a policy: send and accept risk, or exclude.

Suppression goes last, immediately before sending. It removes people who unsubscribed, complained, bounced hard or asked not to be contacted. Applying it last means every earlier step cannot reintroduce them, and it catches unsubscribes that arrived during the cleaning process itself.

Worked example: two orders, two bills

Two teams bought the same 40,000-address list from the same source. The first verified all 40,000 immediately, at a cost per address, then deduplicated and removed 9,000 repeats. The second deduplicated first, removed 9,000, dropped 4,000 syntax failures and 6,000 addresses on domains with no MX, then verified 21,000.

The second team paid for roughly half the verifications and saw the same final list. They also learned something the first team could not see: the 6,000 dead domains were almost all from one source file, which they stopped buying.

Both teams ended up with the same suppression step before sending. The difference was entirely the order, and the lesson generalises to every paid per-address operation: shrink the list with free checks before you pay to look at each row.

The sequence, its cost, and what it removes

StepCostRemovesWhy here
DeduplicateFreeRepeats across sourcesShrinks the list before any paid step
SyntaxFreeImpossible addressesInstant, no network needed
Domain and MXCheapDomains that cannot receiveRemoves blocks of dead addresses early
Mailbox verificationPaid per addressUnknown usersSmallest possible list reaches it
SuppressionFreeUnsubscribes, complaints, hard bouncesNothing earlier can undo it

Catch-all domains are a policy decision rather than a cleaning step: sending to them is a calculated risk, excluding them costs reach.

The sequence to follow

  • 1Normalise and deduplicate by full address before anything else.
  • 2Decide whether role addresses belong in this campaign.
  • 3Run the free syntax filter and remove what cannot exist.
  • 4Drop domains with no MX record.
  • 5Verify mailboxes only on what remains, then apply the suppression list last.

Where this connects on this site

What this will not do

  • Verification cannot detect an address that exists but will never engage, which is a relevance problem.
  • Catch-all domains always return uncertain and require a judgement call.
  • Cleaning does not create consent; it only removes addresses that will fail.
  • A list cleaned today will decay; refresh it rather than treating the result as permanent.

Questions this page gets asked

Should I verify before or after deduplicating?
After. Verification is priced per address, so duplicates are paid for twice for no benefit. Deduplicate, run the free checks, and let verification see the smallest list that still represents your audience.
Is a no-MX domain always dead?
For receiving mail, yes: without an MX record there is nowhere for the message to go, unless the domain falls back to its A record in a way the server accepts, which is rare and unreliable. Treat it as undeliverable rather than spending a verification credit on it.
What do I do with catch-all addresses?
Choose a rule and write it down. Sending to them risks bounces you cannot prevent; excluding them loses a slice of reach. Many senders exclude catch-all from the first campaign and include them later once reputation is established.
How often should the list be re-cleaned?
Before each campaign for suppression, and every few months for verification. Addresses die continuously, so a list that was clean a year ago is not. Re-verify the portion you have not contacted recently rather than the whole list every time.

Last reviewed 2026-10-27. Written for readers in the United States and elsewhere; rules about access, email and consent differ by country, and nothing on this page is legal advice.

Products that do the work this page describes

Each is run on its own website, with its own account, billing and support. Nothing here is a paid placement.

Online now · Call nowor message instead