Skip to content

Guides · 6 min read

Email list cleaning checklist: before, during and after a send

A practical email list cleaning checklist with tasks for every import, every campaign and every quarter, plus a spreadsheet layout you can copy for tracking.

Apr 25, 2026 · SimpleCold team

A list cleaning checklist arranged by timing: every import, before every campaign, right after a campaign, every quarter and every year

Checklists are boring, which is exactly why they work. Most bounce problems come from a step someone skipped once because they were in a hurry: an import that went in without verification, a suppression list that did not get updated, a segment nobody had mailed in a year.

This email list cleaning checklist is split by when you do each task. Copy it into your team wiki or a spreadsheet and tick it off. If you want the reasoning behind each step, the full list cleaning process explains it.

Every time you import contacts

Do these before the file touches your ESP, CRM or sequencer.

  • Keep an untouched copy of the original file, named with the date and source.
  • Check the email column header is present and named clearly (email works everywhere).
  • Trim spaces, remove blank rows and rows with obviously fake values.
  • Remove duplicates, comparing addresses in lowercase.
  • Remove anyone on your suppression list (past hard bounces, unsubscribes, do-not-contact requests).
  • Verify the file with a bulk email verifier.
  • Import only the results you have decided to keep, with the verification category and date as fields.
  • Record the source of the list in a field, so you can trace problems back later.

Before every campaign

  • Confirm the segment excludes undeliverable and disposable results.
  • Decide what happens to risky results (catch-all, role-based, no response). Hold them for a separate send if in doubt.
  • Check when the segment was last verified. If it was months ago and the contacts have not engaged since, re-verify.
  • Check that SPF, DKIM and DMARC still pass for the sending domain. The DMARC checker is a quick test.
  • For cold email, confirm daily sending limits per mailbox are set and the mailboxes are warmed up.
  • Send a test to a few internal addresses on different providers.

Right after a campaign

  • Check the hard bounce rate. Use the bounce rate calculator if your tool does not show it as a percentage.
  • Make sure every hard-bounced address is suppressed. Most ESPs do this; many sequencers need a manual step or setting.
  • Look at soft bounces. Repeated soft bounces to the same address usually mean it should be suppressed too.
  • Process unsubscribes and opt-out replies. For bulk mail to Gmail and Yahoo, unsubscribes must be honoured within two days.
  • Note anything odd: one domain bouncing everything, a spike in complaints, a sudden drop in opens.

Every quarter

  • Re-verify contacts with no engagement since their last check.
  • Review sources. Which imports produced the most undeliverable results? Stop using or start verifying them.
  • Run a re-engagement email to long-inactive marketing contacts, then move non-responders to an inactive segment.
  • Check Google Postmaster Tools for your domain's spam rate and reputation trend.
  • Check your sending domains and IPs against blocklists with the blacklist checker.

Every year

  • Review your sunset policy: how long do you keep mailing someone who never engages?
  • Review data retention: are you keeping contacts you have no reason to hold? Under GDPR, keeping personal data longer than needed is its own problem.
  • Audit who can import lists and whether they follow this checklist.

A spreadsheet layout for tracking

If you track list health in a spreadsheet, these columns cover most of what you need:

ColumnExamplePurpose
Date2026-04-25When the action happened
List or segmentWebinar March 2026What was cleaned
SourceEvent registrationWhere contacts came from
Rows in4,120Size before cleaning
Duplicates removedCount from dedupe
UndeliverableCount from verification
RiskyCount from verification
Risky: no responseCount from the Reason code column
Rows importedWhat actually went in
Bounce rate on first sendDid it work?
NotesAnything unusual

After a few months, the "source" and "undeliverable" columns tell you which lead sources to trust. That is often the most useful thing the sheet produces.

What to do with each verification result

Keep this table near the checklist so everyone applies the same rules:

CategoryDefault action
DeliverableKeep
Risky: catch-all or no responseKeep in a separate segment; send carefully
Risky: role-basedKeep for B2B if appropriate; otherwise remove
Risky: disposableRemove
UndeliverableRemove and suppress

If SimpleCold does the verify step

A few details make the checklist smoother when the file goes through SimpleCold's bulk email verifier:

  • The email column. It's found automatically if the header is email, e-mail, email address, emailaddress, emails or mail, in any case. Rename anything else, such as Work Email, before uploading.
  • Duplicates. You can skip the manual dedupe if you like. Repeated addresses are checked and charged once, and only the first row is kept in the result file. Do your own dedupe anyway if you want to know the count for the tracking sheet.
  • Headers. Your columns come back with their values and headers intact, in the same order. The result columns are added after them.
  • The reason. It's in the Reason column, next to Result, Reason code, Suggestion and Retry later.
  • The "valid only" download. It contains only the Deliverable rows. If you plan to send to some Risky segments, download the full file instead.

Start with one list

You do not need to adopt the whole checklist at once. Start with the "every import" section, because it stops new problems at the door. If you want to test the process on a small file, the free list cleaning tool checks up to 100 addresses once a day without an account, and you can see exactly what each row's result and reason look like before committing to anything.

Check your list before you send it

Start with 200 free credits. Pay per credit after that.