Every list that has been imported more than twice is dirty. Duplicates, dead addresses, names in the company field, and contacts nobody can source. Here is how to clean one properly, and what has to stay a human decision.
Key takeaways
Lists degrade through ordinary business activity: a trade show import, a Shopify sync, a form that writes slightly different field names, staff adding contacts by hand. Nobody does anything wrong and the list still ends up with the same person three times under two spellings.
The cost shows up indirectly. Send volumes look larger than the real audience, engagement rates look worse than they are, and bounces accumulate in a way that damages deliverability for everyone else on your domain.
Matching probable duplicates across spelling and formatting differences, normalising phone numbers and postal codes to a consistent format, separating a person’s name from a company name that landed in the wrong field, and grouping hard bounces for removal.
These are pattern tasks with clear rules and high volume, which is exactly where automation earns its keep in Mailchimp, HubSpot, Zoho or whichever platform holds the list.
Deleting a record is irreversible in practice, and merging two contacts that are genuinely different people creates a worse problem than the one you started with. The workflow should propose merges and removals in batches for approval, not perform them silently.
In our experience the approval step takes a fraction of the time the cleanup would, and it is the reason people trust the result afterwards.
A cleanup usually surfaces contacts whose origin nobody can explain. That is not a data-quality issue to be tidied away; under CASL you need to be able to say what consent you hold and where it came from.
Treat unsourceable contacts as a separate pile and decide deliberately: seek express consent while any implied consent is still valid, or suppress them. Quietly keeping them on the list is the one option that carries real risk.
A one-off cleanup decays within a year unless the intake is fixed too. Every form, import route and integration should write the same normalised fields and record the consent source at the moment of capture.
Once that is in place, the ongoing cleanup is a small automated job that runs weekly and rarely needs anyone’s attention.
A 30-minute call is enough to tell you whether AI pays for itself here.