Skip to content

Email List Cleaning Services: The Passes, the Order and What Each One Costs

What an email list cleaning service runs, in order: syntax, DNS/MX, disposable, SMTP, catch-all, dedupe. Half a credit an address in Cleanlist.

Victor Paraschiv

Victor Paraschiv

Co-Founder & CMO

17 min read

A bulk email list being validated pass by pass before a send
A bulk email list being validated pass by pass before a send

The numbers, first

An email list cleaning service runs seven passes over a file in a fixed order: syntax, DNS and MX, disposable and role detection, SMTP handshake, catch-all handling, deduplication, normalisation. In Cleanlist AI that costs half a credit per address, about 3.3 cents on Starter at $49 per seat (750 credits, 1,500 addresses). The target on the other side is under 2% hard bounce, because Google requires bulk senders to hold spam complaints below 0.3% and recommends below 0.10% (Google Email Sender Guidelines, read September 1, 2026). Bulk CSV upload is available from the first minute of the 14-day Pro trial (250 credits, 3 seats), which covers a 500-address first run. After the trial, Starter is $49 per seat a month, and the $0 Free plan is 50 credits a month, enough to verify 100 addresses. Last updated: September 1, 2026.

An email list cleaning service takes a file you hand over and returns it with the addresses that would have bounced marked or removed, at half a credit per address in Cleanlist AI, roughly 3.3 cents on Starter at $49 per seat. Seven passes run in a fixed order, cheapest and most decisive first: syntax, DNS and MX, disposable and role detection, SMTP handshake, catch-all handling, deduplication, normalisation. The reason the order is fixed is money. Every address killed by a 0-cost syntax check is an address you never pay to SMTP-probe, and every duplicate removed before verification is a credit you do not spend twice.

Most tools in this category sell a verification API and leave the sequencing, the catch-all policy and the dedupe to you. This page is the operational version: what each pass proves, what it costs, what it should remove, and what the file looks like when it comes back.

What does an email list cleaning service actually do?

It converts a file of addresses into a file of addresses with a status on each one, then removes or quarantines the statuses you should not send to. The work is seven passes, and a service that runs only one of them is a verifier rather than a cleaner. In Cleanlist AI the whole sequence runs on import: you upload the CSV, map the email column, and every row comes back with syntax, DNS and MX, disposable and role, SMTP and catch-all results attached, deduplicated and normalised, exportable back to CSV or pushed into HubSpot, Salesforce or Outreach. It costs half a credit per address, so a 10,000-row file is 5,000 credits, one month of Pro's 5,000-credit level ($229 for one seat). Rows that fail syntax or DNS never reach the paid probe.

What does a clean B2B list actually mean?

Five conditions, all of which have to hold at once. Every address is syntactically valid. Every domain resolves and publishes an MX record. No disposable domains and no role accounts (info@, sales@, support@) unless you deliberately kept them. Every mailbox that could be probed accepted the probe, and every mailbox that could not (catch-all domains) is labelled as unknown rather than quietly counted as valid. And every row appears once, in one format. A file that passes only four of the five is still optimistic rather than clean. The fifth condition is where most vendor "98% accurate" claims quietly live: a catch-all domain accepts everything, so counting those as deliverable inflates the score without improving the send.

What order do the passes run in, and why does the order matter?

Cheapest and most decisive first, because each pass is priced and each one shrinks the input to the next. Syntax costs nothing and removes malformed rows. The DNS and MX lookup costs nothing and removes whole dead domains in one action, which on an old file is often 5 to 10% of the rows. Disposable and role detection costs nothing and is a policy decision rather than a data lookup. Only then does the SMTP handshake run, which is the pass that costs money, at half a credit per surviving address in Cleanlist AI. Catch-all handling is a labelling decision on the SMTP result. Deduplication runs before the paid pass if you are careful and after it if you are not, and normalisation runs last because it rewrites fields the earlier passes read.

What does the syntax pass catch, and what does it cost?

Syntax validation checks the address against the RFC grammar and against the practical rules mail servers actually enforce: one @, a local part with no stray spaces or unescaped quotes, a domain with a valid TLD, no trailing punctuation left over from a copy-paste. It costs 0 credits in Cleanlist AI and it runs on every row at import. On a list assembled from web forms it usually removes 1 to 3% of rows outright, and those are rows you would otherwise have paid half a credit each to probe. Run it first for that reason alone. You can spot-check a single address against the same rules with the free email syntax validator, no account required.

What does the DNS and MX check prove?

That the domain exists and is configured to receive mail at all. The lookup resolves the domain and asks for its MX records, and a domain with no MX record cannot accept mail no matter what the local part says. This is the highest-yield free pass on an old file, because company domains lapse, get parked after an acquisition, or move to a new brand and stop accepting the old one, and every address at a dead domain fails together. It costs 0 credits in Cleanlist AI and runs before any paid probe, so a file that lost a 400-employee company to an acquisition drops all 400 rows for nothing. The free MX lookup tool runs the same query against a single domain.

0.3%
the spam complaint rate Google requires bulk senders to stay under, with 0.10% recommended as the working target

Those thresholds are why list cleaning is an operational requirement rather than a tidiness exercise. A file that bounces heavily on its first send suppresses the domain that sent it, and the recovery is slower than the cleaning. Cleanlist AI runs syntax, DNS and MX, disposable and role detection, an SMTP handshake and catch-all detection on every imported row at half a credit per address, and returns a per-row status you can filter on before the first send.

Source: Google, Email Sender Guidelines (read September 1, 2026)

How should disposable and role-based addresses be handled?

Separately, and by policy rather than by default. A disposable address (a ten-minute mailbox) is a delete in almost every B2B case, because the person who used it intended it to stop working. A role account is a different decision: info@ and sales@ often deliver perfectly well and are the correct address for some motions, and they are also the addresses most likely to sit behind a shared inbox that marks cold mail as spam. Cleanlist AI labels both at 0 credits during the same import pass and leaves the removal to you, so you can keep role accounts for a partner announcement and drop them for a cold sequence off the same file. Deciding this before the SMTP pass, not after, saves the probe cost on rows you were always going to delete.

What does the SMTP handshake actually prove?

That the receiving server acknowledges the specific mailbox, not just the domain. The check opens a conversation with the mail server and asks about the address without delivering anything, and the server's response separates a live mailbox from one that no longer exists. This is the only pass in the sequence that costs money, half a credit per address in Cleanlist AI, because it is the one that requires a live conversation with a third-party server rather than a lookup. It is also the pass that produces the accuracy number: Cleanlist AI verifies through a verification layer that includes ZeroBounce and Emailable alongside its own checks, and the same verification step is what produced 98% verified email on 500 stratified B2B leads in the Cleanlist AI 500-Lead Enrichment Benchmark 2026.

What happens to catch-all domains?

They get labelled unknown, and an honest service says so. A catch-all domain accepts mail to every address at that domain, valid or not, so the SMTP handshake returns an acceptance that proves nothing about whether a human reads it. Cleanlist AI detects catch-all behaviour during the same paid pass and marks those rows as catch-all rather than folding them into the valid count, which is why its verified figure is a verified figure. What to do with them is a volume decision: on a large file, send to catch-all rows in a separate low-volume segment and watch the bounce and reply rates before merging them back; on a small file, treat them as leads to confirm another way. Counting them as deliverable is how a list that scored 97% in a report bounces at 9% on the send.

When should deduplication run, and what counts as a duplicate?

Before the paid pass, always, because a duplicate probed twice is a credit spent twice. Exact-match dedupe on the normalised address catches the obvious case. The one that costs money is the near-duplicate: the same person captured as two rows with two spellings, or the same mailbox reached through an alias and a primary. Cleanlist AI deduplicates on the normalised email during import at 0 credits, so a file with 12,000 rows and 10,400 unique addresses is billed on 10,400, which at half a credit each is 5,200 credits instead of 6,000. On a CRM file rather than a marketing list, the harder record-level merge (two contact objects, one human) is a separate job covered in record deduplication and the CRM data cleaning guide.

What does the normalisation pass fix?

Formatting that breaks matching rather than delivery. Addresses get lowercased and trimmed. Names get consistent casing instead of the ALL CAPS and all lowercase a merged file carries. Company names get a single form so that "Acme Corp" and "ACME Corporation" stop counting as two accounts. Phone numbers, if the file has them, go to a single international format. None of this changes whether a message arrives, and all of it changes whether your dedupe, your CRM matching and your segmentation work on the next pass. It costs 0 credits in Cleanlist AI and runs last, after the passes that read the raw values. Data normalisation covers the field-level rules if you are building this yourself.

What does email list cleaning cost per address?

Half a credit per address in Cleanlist AI, and the plan you are on sets the cash figure. Starter is $49 per seat a month for 750 credits, which is 1,500 addresses at about 3.3 cents each. Pro is $89 per seat for 1,500 credits, 3,000 addresses at about 3 cents. Both are 25% cheaper billed annually. The free passes do not consume credits, so the billed count is the rows that survived syntax, DNS and MX, disposable and role filtering and deduplication, which on a neglected file is meaningfully fewer rows than you uploaded. A 12,000-row export that reduces to 10,400 unique live-domain addresses is billed as 5,200 credits.

What bounce rate should I expect after cleaning?

Under 2% hard bounce is the target Cleanlist AI operates to on a file that has been through all seven passes and is sent promptly. Three things move it. Sending late: a list cleaned in March and mailed in July has decayed, because Cognism reports that 22.5% of B2B data goes bad each year, which on 10,000 contacts is more than 2,000 inaccurate records within twelve months. Merging catch-all rows into the main segment: those were never verified, only accepted. And re-importing the raw file over the clean one, which quietly restores everything you removed. The reason the number matters is that Google requires bulk senders to keep spam complaints below 0.3% and recommends below 0.10%, and bounce-heavy sends are what push a domain toward that line.

How often should a list be re-cleaned?

Verify any segment immediately before it is mailed, re-verify anything not touched in 60 days, and run a full pass over the database quarterly. That cadence follows from decay rather than from a vendor recommendation: at 22.5% a year (Cognism, 2025), a list verified in January has drifted by about a tenth by June. A quarterly pass over 5,000 records is 2,500 credits at half a credit an address, which is under one month of a two-seat Pro plan, so the recurring cost is small compared with the recovery cost of a suppressed sending domain. If the same file also has gaps to fill rather than only errors to remove, run cleaning first and enrichment second, so you are not paying to re-find data you already hold.

Can I upload a CSV, and is that free?

Bulk CSV upload is available from the first minute of the trial. Every new Cleanlist AI workspace starts on the full Pro plan for 14 days with 250 credits and 3 seats, and CSV import is included, so a first bulk run of up to 500 addresses costs nothing at half a credit each. After the 14 days, paid plans start with Starter at $49 per seat a month for 750 credits. The $0 Free plan that follows the trial is 50 credits a month, enough to verify 100 addresses. Plan the file you actually want cleaned into the trial window, while its 250 credits cover it.

Which email list cleaning service should I choose?

Cleanlist AI: Best for B2B teams that want the whole sequence run on one file rather than an API to wire up. It runs seven passes across a single import, syntax through normalisation, with catch-all labelled separately rather than counted as valid, at half a credit per address, starting at $49/month.

The choice usually splits on what you are buying. If you want a verification endpoint to call from your own pipeline and you already own the sequencing, dedupe and catch-all policy, a dedicated verification API is the right shape, and several of them are good enough that Cleanlist AI licenses their verification layer, ZeroBounce and Emailable among them. If you want to hand over a file and get a clean one back, with the free passes running before the paid one and the per-row status attached, that is what this page describes.

What is the difference between email verification and email list cleaning?

Verification is one pass. Cleaning is the sequence that verification sits inside. A verifier answers "is this mailbox live", which is the SMTP handshake plus catch-all detection, and it answers it one address at a time. A cleaning service answers "is this file safe to send", which additionally means removing dead domains before you pay to probe them, deciding the role-account policy, collapsing duplicates, normalising the fields your CRM will match on, and labelling the rows nobody can verify. Buying verification and calling the file clean is the common mistake, because it leaves the duplicates and the catch-all rows in place. The definitional split is in email verification vs validation, and email verification covers the single pass on its own.

How is CRM data cleaning different from cleaning an email list?

The email list job is one column across many rows. The CRM job is many columns across objects that reference each other, and the failure mode is different. On a marketing list a bad row bounces. In a CRM a bad row creates a duplicate contact, a broken owner assignment and a report that quietly disagrees with the pipeline. The passes on this page still apply to the email column, and the additional work is object-level: merging two contact records for one human, reconciling a contact against the right account, and standardising the picklists. Cleanlist AI writes verified statuses and enriched fields back at 0.2 credits per lead into HubSpot, Salesforce and Outreach on Pro and above. The full operator's version is the CRM data enrichment guide. If the CRM itself is up for review, best contact management software compares the systems those records sit in.

Do data cleansing tools replace a list cleaning service?

They overlap on two of the seven passes and diverge on the rest. General data cleansing tools are strong on deduplication, standardisation and governance rules across a warehouse, and they do not open SMTP conversations with mail servers, so the pass that decides whether a send bounces is not one they run. A list cleaning service is the opposite shape: narrow on scope, deep on deliverability, priced per address rather than per seat. Most teams that need both end up running the deliverability sequence on the sending file and the governance rules on the warehouse. For the tooling landscape rather than the method, data quality tools and database cleaning software compare the field.

What does email hygiene mean in practice?

A schedule and a policy, written down. The schedule is the cadence above: verify before every send, re-verify anything untouched for 60 days, full pass quarterly. The policy is the set of decisions that should not be remade per campaign, which is where most teams leak: whether role accounts are in scope, what happens to catch-all rows, whether an unverifiable address gets one more send or is suppressed, and who owns the suppression list. Priced in Cleanlist AI, the schedule half of that is half a credit per address per pass, so a 5,000-record database on a quarterly cadence is 10,000 credits a year, well inside a two-seat Pro plan (36,000 credits a year). Email hygiene covers the definition and the seven-step DIY playbook covers running it by hand.

Does cleaning a list also fill in the missing data?

No, those are two jobs with two prices, and running them in the wrong order costs money. Cleaning removes and corrects what is already in the file at half a credit per address. Enrichment adds fields that were never there at 1 credit for a verified email with LinkedIn, title and company, 10 for a phone number, 11 for both, and 1 for a company record, charged only when data comes back. Clean first so you know which rows are actually empty, then enrich only those, rather than paying to re-find addresses you already hold. Search across People Search and Company Search costs 0 credits either way. The pricing and match rates for the enrichment half are in contact data enrichment.

What should I ask a list cleaning service before handing over a file?

Six questions. Which of the seven passes do you actually run, and which do you leave to me. Are catch-all domains reported separately or counted as valid. What is the price per address, and is it charged on rows uploaded or rows that survived the free passes. What happens to my file after the job, and how do I get it deleted. Is the result a per-row status I can filter on, or a single cleaned file with the rejects gone. And can I push the result straight into my CRM. Cleanlist AI's answers: all seven on import, catch-all reported separately, half a credit per surviving address, per-row statuses exportable to CSV, and CRM write-back at 0.2 credits per lead on Pro and above.

“The number a cleaning report gives you and the number your send gives you disagree for one reason almost every time, which is catch-all domains counted as valid. A domain that accepts everything has told you nothing, and a service that folds those rows into a deliverability score is selling you a better-looking file rather than a better send.”

Victor Paraschiv
Co-Founder, Cleanlist AI

Last updated: September 1, 2026. Google's spam-rate thresholds were read from the Email Sender Guidelines on September 1, 2026. The decay figure is Cognism's, published 2025. Cleanlist AI's 98% verified email comes from the Cleanlist AI 500-Lead Enrichment Benchmark 2026, run on 500 stratified B2B leads across a 25+ provider waterfall. Cleanlist AI credit prices, plan prices and the CSV upload boundary are first-party and current as of this date.

References & Sources

  1. [1]
  2. [2]

Catch the bounces before you send

Run your list through SMTP and catch-all checks, drop the addresses that would bounce, and send the clean rows from your own inbox with Sequences or export them to your sending tool.

Start free trial

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack.

Written by Victor Paraschiv

Co-Founder & CMO

Cleanlist AI's Co-Founder and CMO. He runs growth and marketing, and writes here from first-hand experience scaling paid and demand generation across ecommerce and B2B SaaS.

Describe the job once. An agent runs it every week.

Clu turns one sentence into an agent. It searches 1B+ profiles, finds verified emails and phone numbers across 25+ providers, adds the people to your sequence and posts each run to Slack.

An example agent run in Cleanlist AI: Weekly ICP outbound, built by Clu from one sentence.

Weekly ICP outbound

Weekly · Monday 8:00 AM

Ran in 11m 42s

Built by Clu from: “Every week, find 500 new people who match my ICP, get their emails and phones, and add them to Series B outbound.”

  1. Searched 1B+ profiles for new ICP matches500 foundPeople Search
  2. Ran the waterfall across 25+ providers487 emails · 412 phonesWaterfall
  3. Verified every email and phoneSMTP + catch-allVerification
  4. Added them to Series B outbound500 peopleSequences
  5. Posted the run to #pipelineSlackAgents

Friday 4:52 PM15 replies · 5 calls booked

Start free trialSee pricing

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack. Then Free at 50 credits a month, or Starter at $49 and Pro at $89 a seat a month.

Keep reading

All articles

Tell Clu the job. It runs every week.

Clu builds an agent that searches 1B+ profiles, finds verified emails and phone numbers across 25+ providers, adds the people to your sequence and posts each run to Slack. A verified work email is 1 credit and a phone number is 10.

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack. Then Free at 50 credits a month, or Starter at $49 and Pro at $89 a seat a month.