How to Use ZeroBounce to Clean a List and Score Catch-Alls
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-10-26
The short answer: a 20,000-contact newsletter list fits in one ZeroBounce pay-as-you-go pack of 25,000 credits for $274 (pricing page, checked on 26 October 2026), with 5,000 credits left to score the catch-all addresses that validation alone cannot settle. The steps: test a sample on the free allowance, upload the export, read the files it comes back as, score the catch-alls, let an agent run the scoring while a person sets the cut-off, and send within 72 hours.
Disclosure: I may earn a commission through some links on this site. It does not change what this page says.
A newsletter list decays quietly. People leave jobs, mailboxes close, and the bounces from one campaign land on the domain that every later campaign depends on. Validation finds the dead addresses before the send does. For what ZeroBounce includes and costs, see the ZeroBounce glossary entry.
Three numbers before the upload:
- The credits. For example, 20,000 contacts use 20,000 credits for validation. If a quarter come back catch-all, the share in ZeroBounce's own worked example in the A.I. Scoring docs, scoring them adds 20,000 x 0.25 = 5,000 credits, and the 25,000-credit pack covers both. Duplicates and unknown results are not charged, so the real count is lower.
- The export you already have. A CSV from your ESP with a header row. Keep a copy: the zip ZeroBounce returns includes the original file next to the results, per the list validation docs, but your copy is the one you control.
- The baseline. Write down the bounce rate of the last campaign to this list, and check that your ESP can export the SMTP bounce codes; the ZB Guarantee asks for them before it refunds anything.
Before you start
- A ZeroBounce account. Sign-up with a business domain gives 100 free validations a month, per the pricing page.
- A processor agreement. Uploading subscribers' addresses hands personal data to a processor, and Article 28 of the GDPR requires a contract for that. ZeroBounce's GDPR page says customers in the EU receive its Data Processing Agreement during sign-up; file it with your other processor contracts.
- An opt-in list. The guarantee does not cover purchased lists.
Step 1: Test a sample on the free allowance
Take 100 addresses from the export, upload them as a separate file and read the result before buying credits. The sample shows roughly how many catch-alls your list holds, which sets the size of step 4. It costs nothing on the free monthly allowance.
Step 2: Upload the full export
The bulk validator accepts .csv, .txt, .xls and .xlsx, up to 500 columns and 1 GB; for large files the docs prefer CSV. After you pick the file, ZeroBounce shows the first columns and guesses each one's type. Tick "Yes" for "Does your first row contain labels?", or the header is processed as an email address, and choose the email column if there are several. Duplicate, malformed and unicode addresses are removed and not charged.
Processing time depends on the domains, says the list validation docs: about 10 minutes or less for 250,000 addresses at popular providers, up to 2.3 hours for the same count on mixed or unusual domains.
Step 3: Read the zip
Click the purple Download button and choose which properties to append. The zip holds one file per status:
- _valid.csv: the addresses to mail.
- _invalid.csv, _spamtrap.csv, _abuse.csv and _donotmail.csv: remove these. Do not mail covers role-based, disposable and toxic addresses; the sub-status says which.
- _catch_all.csv: domains that accept any address, so validation cannot confirm the mailbox. ZeroBounce advises against sending to these as they stand.
- _unknown.csv: servers that timed out or answered oddly. Hold them back; they cost nothing.
- _rejected.csv: rows that were never processed, such as duplicates.
There is also an executive summary in a PDF and the full results in _all_results.csv.
Step 4: Score the catch-alls
Upload the catch-all file to A.I. Scoring. Each address comes back with a quality score from 0 to 10 in a new column, for one more credit per address. The A.I. Scoring docs give average bounce rates by score from customer feedback on an all-catch-all list: 1.3% at a score of 10, 7% at 5 and 40% at 0. Their advice is to mail from 10 downward until the bounce rate stops being acceptable, and never to mail a score of 0.
Step 5: Let an agent run the scoring, and a person set the cut-off
ZeroBounce publishes an MCP server. Install it with npm as @zerobounce/mcp, then add it to Claude Desktop, Cursor or VS Code with your API key in the client's configuration. Treat the key like a password and keep it out of version control.
Then ask: "Send catch_all.csv for A.I. scoring, wait until it finishes, and give me the number of addresses at each score next to the average bounce rate the docs give for that score." The agent uses bulk_ai_scoring_send_file, checks the job with bulk_ai_scoring_file_status and fetches the result with bulk_ai_scoring_get_file. It can propose a cut-off; a person sets it, because the acceptable bounce rate is a decision about your domain, not a lookup. Nothing goes into the ESP until that person has signed off on the score range.
Step 6: Re-import and send within 72 hours
Import the valid file, plus the catch-alls at or above the approved score, as a segment in your ESP, and send within 72 hours of cleaning. That window is one condition of the guarantee; the others are a list of at least 1,000 addresses, mailing only the valid file and keeping the bounce codes. Send the valid segment first and the scored catch-alls after, so a bad batch is easy to trace.
How to know it worked
Compare the campaign's bounce rate with the baseline you wrote down. If valid addresses bounced as invalid, the ZB Guarantee refunds 5% of the validation cost for each point below the promised accuracy, and the claim needs the full mailing export with its SMTP codes. Scored catch-alls sit outside it.
What ZeroBounce's docs warn about
- Several addresses in one cell. They are processed as one address and come back invalid.
- A missed header tick. The header row is processed as an email.
- Long file names. Anything over 70 characters is cut short, so name files plainly.
- Password-protected downloads. Each download, even of the same file, gets a new password by email.
- The 30-day clock. Uploaded data is erased 30 days after upload, so download the results you need before then.
Before you score every catch-all on a list, weigh who pays for the doubt. Scoring charges a second credit on an address you already paid to validate, and ZeroBounce's guarantee covers validations, not scores, so on the addresses it is least sure of the vendor is paid twice and promises nothing; score the catch-alls of a list you will mail soon, not every list you hold.
FAQ
Am I charged for duplicates and unknown results?
No. Duplicate, malformed and unicode addresses are removed without charge, and unknown results cost nothing, per the list validation docs and the pricing page.
What is a catch-all address?
An address on a domain that accepts mail for any mailbox name, so a check cannot tell a real person from a typo. ZeroBounce files them separately and recommends against sending to them unscored.
Can I validate addresses as people sign up?
Yes. The real-time API and integrations such as HubSpot Forms, Klaviyo Forms and a JavaScript widget are listed in the integrations docs, with one credit per address as in bulk.
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.