All posts

How to Check a Lead List's Quality Before You Pay For It

··9 min read

To check a lead list before you pay for it, verify every email address and hand-check a random sample of the other fields, then compare both against pass marks you agreed with the vendor in advance. Email checks are cheap and objective, so run them on 100% of the file. Names, titles and company fit need a person, so sample 100 to 200 records and read the result as a range, not a single number.

This is an acceptance test for lists you commission: from a freelancer, a research agency or a data provider building a custom file to your brief. If you are thinking of buying a ready-made consumer list, read verifying a purchased email list first. Verification cannot make that kind of list safe.

Agree the pass marks before the work starts

A quality check without agreed thresholds becomes an argument. Put these in the brief or the contract before the vendor builds anything.

Criterion How it is measured A typical pass mark
Invalid email rate Every address verified by SMTP At most 2 to 3%
Catch-all / risky share Every address verified Counted toward the quota only up to an agreed cap, for example 15%
Duplicates Exact matches after lowercasing and trimming 0%
Role addresses (info@, sales@) Every address Only if the brief allows them
Person exists at the company in that role Hand-checked sample At least 90% correct
Company fits the brief (industry, size, location) Hand-checked sample At least 90% correct
Source recorded for every row Every row 100%
Replacement rule Contract Records failing any check are replaced free, within N days

The numbers are examples to adjust, not industry standards. Two of them deserve a reason.

The invalid email limit should come from your sending limits. Amazon SES, for example, says in its reputation metrics documentation: "If your bounce rate is 5% or greater, we automatically place your account under review." Our bounce rate limits by platform collects similar thresholds. A list that arrives 5% invalid uses up the whole margin before any other problem.

The catch-all cap exists because catch-all addresses cannot be confirmed. A vendor can fill a quota with guessed addresses on domains that accept everything, and no verifier can prove them wrong. Read what a catch-all domain is if this is new.

Check 1: verify every email address

Run the whole file through a verifier. It takes minutes and leaves nothing to argue about.

  1. Normalise: lowercase and trim every address.
  2. Count duplicates, by address and by person (same name and company with two addresses).
  3. Verify the full list. You get valid, risky (catch-all, role or unverifiable) and invalid.
  4. Break risky down by reason, so catch-all and role addresses are counted separately.
  5. Tag each address by mail platform (Google Workspace, Microsoft 365, gateway, other) from the MX record. A high catch-all share on gateway-protected domains is expected. See verifying emails behind Proofpoint, Mimecast and Barracuda.

Cost is not a reason to skip this. On SimpleVerifier, a 5,000-row delivery fits in two $9 pay-as-you-go packs of 2,500, or one $19 pack of 10,000, and the credits never expire. See pricing.

What the verification result tells you about the vendor

Pattern Likely cause
Low invalid, low catch-all Addresses found on real sources or confirmed against a mail server
Low invalid, very high catch-all Many addresses guessed from a pattern on domains that cannot be checked
High invalid on a few domains A wrong email pattern applied to whole companies
High invalid spread evenly Old data. People have left and mailboxes have closed
Many duplicates of the same person Merged sources without deduplication

Our Email List Health Report 2026 found that 27.5% of the 54,463 domains it checked accepted mail for a made-up address. A B2B file with a sizeable catch-all share is normal. A file where nearly everything is catch-all deserves questions.

Check 2: hand-check a random sample

Email checks cannot tell you whether the person still holds that job, or whether the company fits your brief. For that, a person has to look.

How to draw the sample

  • Use a random sample, not the first 100 rows. Vendors often put their best records first. In a spreadsheet, add a column of RAND(), sort by it, and take the top N rows.
  • Sample from the whole delivery, including the risky records.
  • Decide the checks before you look. For each record: does the person exist, at this company, in this role (or one that fits the brief)? Does the company match the brief on industry, size and location?

How many to sample

Sample size decides how much the result can tell you. The table shows 95% confidence intervals (Wilson method, as described in the NIST Engineering Statistics Handbook) for some sample results. We calculated them for this post.

Records checked Errors found Observed error rate True error rate is likely between
50 3 6% 2.1% and 16.2%
100 5 5% 2.2% and 11.2%
200 10 5% 2.7% and 9.0%
400 20 5% 3.3% and 7.6%
100 0 0% 0% and 3.7%
200 0 0% 0% and 1.9%

A sample of 50 cannot separate a good list from a bad one. A sample of 200 usually can. Doubling to 400 narrows the range, but takes twice the reviewer time. For most deliveries, 200 is the right trade-off.

The decision rule

Use the top of the interval against your pass mark:

  • If the top is below the threshold, accept.
  • If the bottom is above the threshold, reject or invoke the replacement rule.
  • If the threshold sits inside the range, check another 200 records and recalculate on the combined sample.

This is a standard acceptance-sampling idea. NIST's handbook files it under the question "Does the proportion of defectives meet requirements?"

Worked example: a 5,000-lead delivery

A SaaS company commissions 5,000 leads: heads of operations at logistics companies with 50 to 500 staff in the US. The contract sets a 3% maximum invalid rate, a 15% catch-all cap, 90% minimum role and company accuracy, and free replacement within 10 days. The figures below are illustrative.

Email verification (all 5,000 records):

Result Count Share
Duplicates removed first 85 1.7%
Valid 3,690 75.1% of 4,915
Risky: catch-all 905 18.4%
Risky: role address 40 0.8%
Invalid 280 5.7%

Hand check (200 random records): 14 records had the wrong person, a person who had left, or a company outside the brief. That is 7% observed, with a 95% range of 4.2% to 11.4%.

Reading the result against the contract:

Criterion Pass mark Result Verdict
Duplicates 0% 85 records Fail: replace 85
Invalid rate 3% maximum 5.7% Fail: replace 280
Catch-all share 15% maximum 18.4% Fail: about 170 over the cap
Role addresses Not allowed by the brief 40 Fail: replace 40
Role and company accuracy 90% minimum, so at most 10% errors 4.2% to 11.4% errors Inconclusive: the 10% line sits inside the range

The email results are clear-cut, because every record was checked. The accuracy result is not, so the buyer checks another 200. If the combined 400 show, say, 26 errors (6.5%), the Wilson range is about 4.5% to 9.4%. The top is under 10%, so accuracy passes.

The buyer then sends the vendor a file of the 85 duplicates, 280 invalid addresses, 40 role addresses and the 170 lowest-sourced catch-all records, and asks for 575 replacements. The replacements go through the same verification before they are accepted.

Red flags in the delivery file itself

Some problems show before you verify anything. Open the file and look for:

  • Identical email patterns across very different companies, for example every address as first.last@ regardless of company size. That suggests guessing, not finding.
  • Job titles that are too tidy, such as every record titled exactly "Head of Operations". Real titles vary.
  • Missing or uniform company sizes and locations on a brief that specified them.
  • Many records per company when the brief asked for one decision-maker per account.
  • Free-mail addresses (gmail.com, yahoo.com) on a B2B brief, unless you allowed them.

None of these alone fails a delivery. Each one tells you where to aim the hand-check sample.

Ask for a source column

Every row should say where it came from, for example "company website, team page", "LinkedIn profile", "conference speaker list" or "pattern confirmed by published address".

A source column lets you:

  • spot which sources produce the invalid and catch-all records, and ask the vendor to drop them;
  • rank catch-all records by source when deciding which to send. Our catch-all decision framework does exactly this;
  • answer a recipient who asks where you got their data. In the EU and UK that duty applies to you, not just the vendor.

A vendor that will not provide sources is asking you to accept the list on trust. The acceptance test exists so that you do not have to.

Re-check before you send, not just on delivery

A list that passed on delivery decays from that day. People change jobs and mailboxes close. If the campaign starts weeks after delivery, verify again first.

Before import, also run the new list against your suppression list, so people who opted out of earlier campaigns do not come back through a new vendor.

Checklist

  • Pass marks, catch-all cap and replacement rule written into the brief
  • Source column required for every row
  • Delivery normalised and deduplicated
  • Every address verified, results split by valid, catch-all, role and invalid
  • Random sample of 200 hand-checked for person, role and company fit
  • Result read at the top of the confidence range
  • Failing records returned with reasons and replacements re-verified
  • List screened against your suppression list before import
  • Re-verified if more than a few weeks pass before sending

For the full cleaning process once you accept a list, see how to clean an email list.

The short version

Do not pay for a lead list on the vendor's word. Agree pass marks first. Verify every address, because it is cheap and objective. Hand-check a random sample of 200 for the things software cannot see, and judge the result by the top of its confidence interval. Send back what fails, re-verify the replacements, and keep the source column so the next delivery is easier to audit.

Common questions

How do I check the quality of a lead list?

Run two checks. First, verify every email address with an SMTP-based verifier and count invalid, risky and duplicate records. Second, take a random sample of 100 to 200 records and check by hand that the person, job title and company are correct and fit your brief. Compare both results against pass marks agreed with the vendor before the work started.

What invalid email rate should I accept from a lead vendor?

Set it from your sending limits, not from the vendor's promise. If your sending platform reviews accounts at a 5% bounce rate, as Amazon SES documents, a list that is 5% invalid leaves no margin. Many buyers set a maximum invalid rate of 2 to 3% after verification, and remove the invalid records themselves anyway.

How many records should I sample to check a lead list by hand?

At least 100, preferably 200. With 200 records, an observed 5% error rate has a 95% confidence range of roughly 2.7% to 9%. With 50 records the same rate could be anywhere from about 2% to 16%, which is too wide to accept or reject anything.

Should catch-all emails count as valid in a lead list delivery?

Agree that in the contract. A catch-all address cannot be confirmed by any SMTP check, so it is not proof of a working mailbox. A common approach is to accept them only up to an agreed share of the delivery, and only when the vendor can show a source for the address.

Is it legal to email a list I paid someone to build?

That depends on where the recipients are and how the data was collected, not on whether you paid for it. Check the rules for each country you will email, and avoid lists of consumers bought from third parties: most email platforms forbid them.

Verify unlimited addresses for $29.99/month

Real SMTP mailbox checks. No credits, no per-email fees.

Get Started