Home / Guides / Verify leads before cold email

How to verify emails before cold outreach

Every list you send to should be verified first, including the ones a lead database already calls verified. Here's the full workflow, from export to clean import, and how to keep it clean while a sequence runs.

Updated 2026-10-17

TL;DR

  • Verify every list before import, including "verified" exports from Apollo and other lead databases.
  • Keep deliverable, drop undeliverable, and put catch-alls in their own campaign or set them aside.
  • Aim for under 2% bounces. Re-verify lists older than about 30 days and before late sequence steps.

Why verify before you send

Sending platforms brake hard when bounces climb. Instantly pauses a campaign above 5% after 200 sends, Outreach locks a mailbox for 24 hours, and lemlist alerts at 10%. By the time a brake trips, the damage to your domain is already done. Most platforms recommend staying at or under 2%, and Smartlead reports a median of about 1.5% across its senders (see our bounce rate benchmarks).

Lead data doesn't stay accurate. People change jobs, companies change domains, and a "verified" badge in a lead tool means verified at some point in the past. Catch-all domains make it worse, because their mail servers accept every address at first and bounce later. Verification is the cheap step that stands between a stale list and a burned domain.

The workflow, step by step

  1. Export the leads as a CSV. From Apollo, Clay, a lead vendor, a scrape, or the sending tool itself. Keep all your columns; you'll want them back.
  2. Upload the file to MailExchange. CSV, TXT or a pasted list. Duplicates are removed and refunded.
  3. Read the results. Every row gets one of four states, with a reason (below).
  4. Split the file. Deliverable goes to your main campaign. Catch-alls go to a separate, slower campaign, or get skipped on new domains. Undeliverable is removed.
  5. Import the clean file into your sequencer. You can leave its built-in verifier off, since you've already paid for verification once.
  6. Re-verify on a schedule. Lists older than about 30 days, and leads waiting for later steps of a long sequence, should be checked again.

What each result means

StateWhat it coversWhat to do in cold email
DeliverableThe mailbox server confirmed the addressSend
Risky: catch-allThe domain accepts every address, so the mailbox can't be confirmedSeparate campaign, established inboxes, lower volume, or skip
Risky: roleinfo@, sales@, support@ and similar shared inboxesUsually leave out of cold campaigns
Risky: disposableThrowaway inbox providersRemove
UndeliverableRejected mailbox, invalid domain or invalid syntaxRemove
UnknownThe server didn't give a definite answerRetry later. The credit is refunded

We get there with six checks: syntax, DNS and MX records, risk lists, an SMTP mailbox check, a catch-all test and a final verdict. We never send an email to the address. More in how verification works.

What to do with catch-alls

Catch-alls are the hardest part of any B2B list. In Hunter's published test (checked 2026-10-17), accept-all addresses bounced 27% of the time versus 1% for valid ones. Don't let them share a campaign with your deliverable leads, where they can push the whole campaign's bounce rate up. Full playbook: should you send to catch-all emails?

Workflows for each tool

The steps above work everywhere. These pages cover the details for each platform: where to export, what its built-in verifier costs, and its bounce rules.

There are no native connectors yet. Every integration is a CSV workflow today, and you can automate it with the API (in early access, ask for a key). Direct connectors are on the roadmap.

Automating it

If leads arrive from a script, Clay table or enrichment pipeline, call the API before the lead is pushed into a campaign, and only pass on deliverable results. Bulk jobs take up to 100,000 addresses per call and can POST to a callback URL when they finish.

What it costs

Pay as you go from $29 for 5,000 checks ($0.0058 each) down to $1,699 for 1 million ($0.0017 each). Credits never expire, and unknowns and duplicates are refunded. See pricing, or compare your sequencer's built-in verifier with the cost calculator.

Related