Finally you can send cold emails for $9.99/mo with our new rebellion. Click here to learn more!
Cheap Inboxes Editorial8 min read

Email list hygiene: the checks to run before another campaign

Use a cold-email list hygiene checklist to preserve provenance, verification status, suppression history, bounce evidence, and ownership before another campaign.

DeliverabilityAgency operationsCold email infrastructure

Email list hygiene is not running a CSV through a verifier and naming the output clean-final-v3.csv.

Before another campaign, every row needs a source, a current status, suppression history, a permitted action, and an owner. If that context disappeared during a merge or export, the list is not ready.

Stop and quarantine the file when

  • the original source is unknown;
  • acquisition or enrichment dates are missing;
  • unsubscribe, complaint, or suppression history was dropped;
  • the file mixes clients or campaigns without identifiers;
  • verification results have no date or provider;
  • duplicates cannot be resolved to one canonical record;
  • prior bounce evidence was overwritten;
  • nobody owns the send/no-send decision.

Do not use another verification pass to hide an ownership problem.

Make one person responsible for the gate

The data researcher, verifier, campaign operator, client owner, and compliance owner may all touch the file. One named person still needs to decide whether it can enter the sequencer.

Define the roles:

RoleDecision
Source ownerWhere the record came from and whether the intended use is permitted
Data ownerIdentity, company, field normalization, and duplicate handling
Verification ownerProvider result, date, conflict, and recheck path
Suppression ownerUnsubscribe, complaint, bounce, policy, and client exclusion precedence
Campaign ownerSegment fit and final send/research/quarantine action
Legal or compliance ownerRules that apply to the market, source, jurisdiction, and organization

This checklist cannot grant legal permission to contact someone. Keep that decision with the organization's responsible owner and counsel.

The pre-send hygiene checklist

1. Preserve provenance

For every record, keep:

  • original source;
  • acquisition or enrichment date;
  • company and person identifiers;
  • market, segment, and campaign context;
  • client or business unit;
  • source URL or job ID when available;
  • the owner who approved the source.

Provenance lets you compare outcomes by source later. Without it, one bad data feed can contaminate several campaigns while the team blames the inboxes.

2. Rebuild suppression before deduplication

Collect suppression from every relevant system:

  • unsubscribes;
  • complaints;
  • hard bounces;
  • policy exclusions;
  • client-specific do-not-contact records;
  • previous manual removals;
  • internal or customer records that should never enter outreach.

Merge those decisions into the canonical contact before removing duplicates. If the suppressed copy is discarded first, the surviving row may look eligible even though the person already opted out or failed a prior campaign rule.

Use this order when several files are being combined:

  1. Preserve every original row and source ID.
  2. Normalize candidate identity fields without deleting originals.
  3. Collect suppression and prior-send evidence from every system.
  4. Resolve records to a canonical person/address according to the written key.
  5. Apply suppression precedence to the canonical record.
  6. Add the current verification result without overwriting the older one.
  7. Assign the final acceptance action, reason, date, and owner.
  8. Export only the accepted segment while retaining the full audit record elsewhere.

Do not deduplicate each source file independently and then merge the survivors. The suppressed copy may be in one file while the “clean” copy is in another.

3. Normalize the identity fields

Trim whitespace. Normalize casing where appropriate. Parse names and domains carefully. Keep the original values alongside the normalized ones when transformations could be disputed.

Choose duplicate keys deliberately:

  • exact email;
  • normalized email;
  • person plus company;
  • profile URL;
  • internal contact ID;
  • a combination of those fields.

One person changing companies is not the same record as one CSV repeating the same address three times.

4. Record the verification state

Verification is one part of the hygiene record.

State familyDefault handlingRequired context
ValidEligible for targeting reviewProvider, date, source, and reason fields
InvalidSuppressFailure reason and suppression date
UnknownQuarantine or recheckAttempt date and next decision owner
Catch-allSeparate risk decisionDomain, result, campaign, and owner
DisposableSuppress unless policy documents another actionDetection source and date
Role-basedReview against targeting policyAddress type and campaign reason

Do not turn the tool's label into a permanent fact. People change jobs, mailboxes disappear, and domains change configuration. Set a recheck rule based on age, source, and campaign risk.

Write the recheck rule

Avoid a universal “verify every 30 days” policy unless the organization has evidence and an owner for it. Use the conditions that make the record stale or uncertain.

ConditionPossible action
Person changed roles or companiesResearch identity and verify the new address
Domain changed or stopped resolvingQuarantine and investigate the company/domain
Prior result was unknown or catch-allRecheck or keep under the separate risk decision
Verification is older than the source policy allowsReverify before acceptance
Recent hard invalid-address responseSuppress regardless of an older valid result
Temporary or mailbox-full responsePreserve the class and use the timed policy
Provider results disagreeKeep both and assign manual review
New campaign has materially different targetingRepeat targeting review even if the address is unchanged

Record the trigger and next review date. A date without a reason becomes another field nobody trusts.

5. Keep prior send evidence

Store more than a total bounce rate.

For each earlier send, preserve:

  • campaign and date;
  • sending domain and mailbox group;
  • delivered or accepted state available from the system;
  • full bounce response and class;
  • reply or negative-response class;
  • unsubscribe or complaint state;
  • provider restriction or connection event;
  • copy and tracking version.

A mailbox-full response, invalid address, policy block, and disabled sending account are different problems. Flattening them into failed removes the evidence the next campaign needs.

The acceptance table

Create one final action field. Do not make the sequencer infer it from twelve columns.

ActionMeaningWho can approve it
SendPassed source, suppression, verification, and targeting checksCampaign owner
SuppressMust not enter the campaignSuppression policy owner
ReverifyStatus is too old or inconclusiveData owner
ResearchIdentity, company, or role needs confirmationResearch owner
QuarantineConflict or missing evidence blocks actionOperations lead
RemoveRecord is malformed, irrelevant, or outside policyData owner

Keep the decision date and reason. “Send” without a timestamp eventually becomes another stale status.

Review a sample of the accepted rows

Before importing the full file, manually inspect a fixed sample from each source, segment, and acceptance state that remains eligible.

Check:

  • person and company identity;
  • current role where required by the campaign;
  • domain and work-email consistency;
  • source and acquisition date;
  • verification result and age;
  • suppression check and precedence;
  • required personalization or segment fields;
  • final action, reason, and owner.

Also sample suppressed and quarantined rows. The purpose is to verify the rules are being applied, not to find a way to move more records into send.

If one source has a materially higher correction or quarantine rate, stop that source and review it separately. Do not average the problem away across the entire list.

Handoff fields for the sequencer

The accepted export should include enough context to audit the next step:

contact_id
source
source_date
client_or_business_unit
segment
email
verification_provider
verification_status
verified_at
suppression_checked_at
acceptance_action
acceptance_reason
decision_owner
campaign_id

Store suppression and prior outcomes outside the one campaign import too. A new sequencer or workspace should not erase the decision history.

Feed the next campaign back into the hygiene record

After launch, preserve the evidence by contact and source:

Campaign evidenceHygiene update
Hard invalid-address responseSuppress and record the exact response and date
Temporary or mailbox-full responseKeep the class and apply the timed retry/recheck rule
Unsubscribe or complaintApply suppression at the intended organization/client scope
Reply from wrong personCorrect identity and review the source-matching workflow
Reply from intended personConfirm identity without treating it as proof for every record from the source
Provider policy rejectionInvestigate the sending layer; do not relabel the address invalid
Connection or account failureKeep it out of the list-quality score

This prevents every failed send from becoming “bad data” and every reply from becoming “the database is accurate.” The evidence belongs to the layer it actually describes.

Before release, the campaign owner should be able to state the total rows received, duplicates resolved, suppressions applied, records reverified, records researched, rows quarantined, final accepted count, policy version, review sample, and approval timestamp. If those numbers cannot be reconciled back to the source files, the export is not ready for the sequencer.

Save that reconciliation with the campaign record. The next refresh should start from the governed contact history, not from the last exported CSV.

If two operators cannot reproduce the accepted count from the same source files and policy version, stop the handoff. Fix the merge order, missing status, or undocumented exception before anyone schedules the file. Reconciliation is the last control against a clean-looking export that lost its suppression or provenance on the way through the workflow.

Cheap Inboxes does not clean or verify lists. Its infrastructure starts after the list-quality gate. Better domains and mailboxes cannot compensate for stale, mis-targeted, or poorly governed data.

If bounces or replies change after launch, use the cold email deliverability diagnostic to separate data from authentication, provider, copy, and sending behavior. When the file is accepted, the infrastructure checklist covers the next handoff.

Marketing-list advice is not automatically cold-outbound policy

Most public list-hygiene guidance is written for subscriber email marketing. It commonly discusses opt-in, engagement, re-engagement, and inactive subscribers. Those sources can help explain why records decay and why suppression matters.

They are not a substitute for the rules that apply to your market, data source, campaign, and jurisdiction. Keep legal and compliance decisions with the responsible owner and counsel. This checklist is an operating record, not legal approval.

No row reaches the campaign without provenance, current status, suppression history, a permitted action, and a named owner. That is what “clean” should mean to the team.

Sources