A polished campaign cannot rescue an audience file that should not be mailed. List hygiene starts before copywriting because recipient quality affects deliverability, compliance, personalization, and every metric used to judge the campaign.
Cleaning a CSV is not simply deleting rows that look unusual. It is a sequence of decisions about permission, identity, reachability, suppression, and whether the available context is good enough to support the message.
Confirm why every contact is in the file
Begin with provenance. Know where the addresses came from, what recipients were told, and whether this campaign fits that expectation. A publicly visible address is not automatically permission to send promotional email.
Rules differ by jurisdiction and message type. The practical baseline is to document the source, respect objections, and make opt-out straightforward. The UK ICO recommends a data-protection-by-design approach and says people have an absolute right to object to direct marketing.
- Record the source and collection date when available.
- Keep consent or lawful-basis evidence outside free-form notes.
- Exclude contacts who opted out of this type of communication.
- Do not mix purchased, scraped, customer, and subscribed audiences without review.
Normalize before detecting duplicates
Email comparisons should be case-insensitive and ignore accidental surrounding spaces. Decide which row wins when duplicate addresses contain different names, companies, or lifecycle fields. Blindly keeping the first row can preserve the oldest information.
A useful merge policy keeps the newest reliable value, never overwrites a populated field with an empty one, and preserves suppression or unsubscribe status above ordinary profile data.
Ava@Example.com
ava@example.com
AVA@EXAMPLE.COM
Result: one normalized recipient, not three campaign targetsSeparate invalid, risky, and incomplete records
A missing address and a malformed address are clear import failures. A valid-looking address is different: syntax alone does not prove that a mailbox exists, that it accepts mail, or that the person expects this campaign.
Keep these categories distinct so a reviewer understands the action. Invalid rows should not enter the sendable list. Risky records may need verification or a separate decision. Incomplete but eligible records may still receive a general fallback email.
- Invalid: missing address, broken syntax, or unusable domain.
- Duplicate: the normalized address already exists in this import.
- Suppressed: previous unsubscribe, hard bounce, or complaint.
- Incomplete: valid recipient but missing campaign context.
- Ready: eligible address with enough reliable context.
Suppress instead of repeatedly deleting history
Deleting a bounced or complained address can erase the reason it must not be mailed again. A suppression record keeps the address blocked across future imports, even when it reappears in a fresh CRM export.
Amazon SES can maintain suppression for hard bounces and complaints. In multi-tenant systems, tenant-level suppression prevents one customer's bounce or complaint history from contaminating another customer's list while preserving isolation.
Measure personalization coverage before generation
List hygiene also includes contextual quality. If only 12 percent of contacts have a reliable renewal date, a campaign that depends on renewal timing will produce weak fallbacks for most recipients.
Inspect field coverage before writing. Choose personalization signals that are relevant, understandable, and populated across enough of the audience. Do not expose raw internal notes just because they exist in the export.
The final pre-import checklist
A trustworthy import should report what it accepted, skipped, deduplicated, and detected. That summary is the handoff from contact preparation to campaign creation.
- Confirm audience source and sending permission.
- Normalize email addresses and remove duplicates.
- Exclude unsubscribed, bounced, and complained contacts.
- Separate invalid rows from incomplete but usable rows.
- Rename unclear columns before campaign work begins.
- Check coverage for every field the campaign plans to use.
- Retain only data needed for the campaign workflow.