ON THIS PAGE
By Efe Berke Colaker, Founder at GetleadReviewed by the Getlead editorial team for accuracy. Last updated August 2026.
A lead CSV arrives with problems in layers: encoding artifacts, stray whitespace, duplicates hiding behind capitalisation, and addresses that were never real.
Doing the passes in the wrong order means doing several of them twice.
The ten passes, in order
- Encoding. Fix mojibake now, or names stay broken through every later step.
- Whitespace and invisible characters. The most common cause of accidental duplicates.
- Case. Lowercase addresses and domains so matching works.
- Syntax. Remove malformed addresses using permissive rules that accept plus signs and long TLDs.
- Domain resolution. Drop records whose domain does not resolve at all.
- MX lookup. Cached per domain, since one lookup covers every address there.
- Deduplicate. On the address first, then on the canonical company domain.
- Role addresses. Tag info@, sales@ and support@ into a separate segment.
- Suppression. Remove customers, open opportunities and prior opt-outs.
- Verification. The only paid step, run last on whatever survived.
Normalisation is passes one to three, and doing it before deduplication is what prevents the same person surviving twice with different spacing or capitalisation.
What each pass typically removes
Verification is where the largest reduction happens. In our measurement of 383,368 raw B2B addresses, 23.9% were invalid and 16.7% catch-all, so a file loses roughly 40% at the final step alone.
Tag rather than delete
Deleting feels like progress and destroys optionality. Three categories deserve a tag instead.
- Role addresses, which are the right target at very small companies.
- Catch-all results, which are unconfirmable rather than invalid.
- Unknown verification results, which are usually temporary and worth re-checking.
- Out of ICP records, since profiles change more often than data does.
For example, catch-all records are a legitimate low volume segment judged on replies, and deleting them removes a meaningful share of a file for a reason that is not actually about validity.
Record what you did
Write the counts at each pass into a note attached to the file: rows in, rows after deduplication, verification split, rows out.
That record turns a cleanup into evidence about the supplier, which is the only way to compare sources over time rather than by impression.
Sources and method
First-party data (Getlead, 2026): the verification split of 43.4% confirmed valid, 23.9% invalid, 16.7% catch-all and 16.0% unknown comes from 383,368 addresses analyzed through live SMTP verification, and the 0.51% bounce rate comes from 34,973 tracked sends, aggregated and anonymized at campaign level. Full method in our cold email benchmark study.
External sources: contact decay of about 2.1% a month compounding to 22.5% a year comes from the HubSpot database decay model built on MarketingSherpa research; the average annual cost of poor data quality is Gartner's widely cited estimate; US commercial email obligations come from the FTC CAN-SPAM compliance guide.
Third party benchmarks vary in methodology and should be read as directional. Checked in August 2026.
Frequently asked questions
What order should I clean a lead CSV in?
Encoding, whitespace, case, syntax, domain resolution, MX lookup, deduplication, role address tagging, suppression, then verification last. Normalising before deduplicating is what stops the same record surviving twice.
Why verify last?
Because it is the only step that costs money per address, at roughly $0.003 to $0.01. Running the free passes first means paying only for records that could plausibly work.
How much does a raw file typically lose?
Most of the reduction is at verification: in our measurement of 383,368 raw B2B addresses, 23.9% were invalid and 16.7% catch-all, so about 40% falls away at that step alone, before any ICP filtering.
Should I delete role addresses?
Tag them instead. At companies under about 20 people a general address is often the founder's real mailbox, so deleting removes prospects that a different campaign may want.
What about catch-all and unknown results?
Keep both, tagged. Catch-all means unconfirmable rather than invalid and belongs in a low volume segment judged on replies, while unknown is usually a temporary condition worth re-checking in a few days.
Why record the counts at each pass?
Because it turns a cleanup into evidence about the supplier. Comparing rows in, duplicates removed and the verification split across sources is the only way to judge data quality by measurement rather than impression.
