All posts

How to Clean a ZoomInfo Export Before Cold Emailing It

··4 min read

To clean a ZoomInfo export before cold emailing it, export to CSV, remove duplicates and contacts you already suppress, verify every email address close to the send date, then import only the valid ones into your sequencer and treat catch-all addresses as a separate, lower-confidence group. The steps below take a raw export to a send-ready file.

This applies to any large B2B database export. Contact data ages from the moment it is collected, and the gap between collection and your send is where bounces come from.

Why exported B2B data still bounces

Reason What happens
Job changes The person left; the company deleted or disabled the mailbox
Company changes Acquisition, rebrand to a new domain, or shutdown
Inferred addresses Address built from a name pattern rather than confirmed
Catch-all domains The server accepts everything, so the address could never be confirmed
Time since check A contact checked months ago may not be valid today

How fast B2B contact data decays covers the decay side in more detail.

Step 1: Export with the columns you need

Include at least: email, first name, last name, company, company domain, job title and any record ID you need for re-importing into a CRM. Keep the export focused on one campaign or segment so results stay easy to track.

If the export has several email columns, decide which one is your send address and keep the others for reference.

Step 2: Remove what you should never pay to check

  1. Duplicates. Multiple searches often return the same person. Run the file through the duplicate email remover.
  2. Suppressed contacts. Subtract unsubscribes, past bounces and current customers using compare two email lists. Our suppression list guide explains what belongs there.
  3. Blank or broken emails. The bulk email syntax checker finds malformed rows.
  4. Role addresses if you only want named contacts, using the role-based email filter.

Step 3: Check the company domains

Dead or changed domains take out every contact at that company. A quick pass with the bulk website status checker or bulk domain expiry checker shows companies that have gone away or moved. Remove those rows or research the new domain.

Step 4: Verify every address

Upload the cleaned CSV to a verifier that runs SMTP mailbox checks and labels catch-all separately. Verify as close to the send date as practical; if the campaign runs for weeks, re-check later batches before they go out.

Step 5: Sort the results

Result What to do
Valid Import into the sequence
Catch-all Separate file; send later in small batches or skip
Risky (role, disposable) Usually skip for cold outreach
Unknown Re-check in a day or two before deciding
Invalid Remove and add to suppression

If a large share of the export comes back invalid, look at the search that produced it: an old saved list or a niche with high turnover may need a fresh pull.

Step 6: Re-import into the sequencer and CRM

  • Sequencer. Import the valid file only, mapping first name, company and any custom variables. See the guides for Instantly, lemlist and Smartlead.
  • CRM. Re-import using the record ID so you update existing contacts, and add a field such as "Email status" with the verification result and date.

Step 7: Watch the first batch

Send the first day's batch at normal volume and check bounces before scaling. Paste any bounce messages into the bounce message analyzer. If bounces cluster on one domain or one job function, remove those rows from later batches.

A simple checklist

  • Export with record IDs and the columns your sequence uses
  • Dedupe and subtract suppression list
  • Remove dead company domains
  • Verify all addresses
  • Import valid only; hold catch-all separately
  • Write results back to CRM with a date
  • Re-check later batches if the campaign runs long

Write the verification date back

Whatever CRM you use, store the date of each check next to the status. A valid result from a year ago is not much better than no result. With the date stored, you can build a view of contacts that need re-checking before the next campaign instead of re-verifying everything.

Verify your export

Upload the cleaned export on the verify page; your other columns are kept in the download. You get 100 free email checks when you sign in with Google, no card, which is enough to see how a sample of the export holds up before you verify the rest.

Common questions

Should I verify ZoomInfo emails before sending?

It is worth re-checking any exported B2B contact data shortly before sending. People change jobs and mailboxes close after the provider last checked them, and a quick verification removes those before they bounce.

Why do ZoomInfo contacts bounce?

The same reasons any B2B data bounces: the person left the company, the company changed domain or shut down, or the address was inferred from a pattern rather than confirmed. Catch-all domains also make some addresses impossible to confirm.

What should I do with catch-all addresses from a ZoomInfo export?

Keep them in a separate file. Send to verified valid contacts first, then decide whether to send to catch-all contacts in smaller batches, watching bounces closely.

Can I verify ZoomInfo data without breaking my CRM records?

Yes. Keep the record ID column in the CSV, verify, then re-import results using that ID so you update existing records rather than creating duplicates.

Check your list before you send

Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.