How to clean up a CRM database

Four passes in order: duplicates, dead contacts, missing required fields, and inconsistent values. Why order matters, and what to fix at the source instead.

Syncek Team · CRM reference library

/ 4 min read / Art. #26

Cleaning a CRM database works in four passes, run in this order: merge duplicates, deactivate dead contacts, fill the fields you actually filter on, and standardise inconsistent values. The order is the part that saves the time. Standardising values before merging duplicates means doing the same work twice, because every merge you perform afterwards reintroduces the variants you just fixed.

Pass one: duplicates

Merge before anything else, because every later pass costs double on a duplicated record.

Match on email address first. It is the one field that identifies a person on its own. Company name is not: "Acme", "Acme Ltd" and "ACME Limited" are one company and three strings, which is why domain is the better company key.

Decide which record survives before you start, and prefer the one with the most recent activity. Losing recent history to keep an older record is the usual regret.

Pass two: dead contacts

Not everyone who has gone quiet is dead, so separate hard evidence from silence. Bounced email addresses and people who have left the company are dead: mark them inactive.

People who simply have not replied are a different case, and they need a decision recorded rather than deletion.

Deactivate rather than delete throughout. You lose your own denominators otherwise, and a retention rule is what stops this becoming a case-by-case argument every time.

Pass three: the fields you filter on

Do not fill every empty field. Fill the ones that appear in a saved view, a filter or a report, and leave the rest empty.

An empty field is honest. A field filled with a guess so the record looks complete is worse than blank, because you will later filter on it and get a confidently wrong answer.

A field that is empty on most records and used by nothing is a candidate for deletion, not population.

Pass four: inconsistent values

This is where free text goes to die. Country as "UK", "United Kingdom", "GB" and "England" is one fact and four values, and no filter catches all of them.

The durable fix is not the cleanup, it is converting the field to a select so the variants cannot come back. Clean the existing values once, change the field type, and the problem stops recurring. The same logic makes a lost reason a select rather than a note.

Then fix the source

A database that needed cleaning will need it again unless the intake changes. Most bad data arrives in bulk, which makes the import the place to fix it, and the rest arrives through fields that permit variation.

Keep the pass short enough that it stays a habit. HubSpot and Pipedrive ship duplicate managers, Attio and Syncek match on email and domain, and a spreadsheet in Google Sheets or Airtable finds duplicates with a formula. None of them decides which record wins, and that decision is the work.

Frequently asked questions

How do you clean up a CRM database?

Work in four passes in order: merge duplicates, deactivate contacts you can prove are dead, fill only the fields you actually filter on, and standardise inconsistent values. Order matters because cleaning values before merging duplicates means redoing the work, since each merge brings back variants you already fixed. Then change the intake so the same problems do not return.

What should you match on to find duplicate contacts?

Email address first, because it is the only field reliably unique to one person. For companies, match on web domain rather than name: "Acme", "Acme Ltd" and "ACME Limited" are one company written three ways, and name matching either misses them or merges genuinely different businesses. Use name matching only as a second pass with human review.

Which record should survive a merge?

Usually the one with the most recent activity, not the oldest one. Decide the rule before you start merging rather than case by case, because inconsistent choices leave a database that is deduplicated but unpredictable. The common regret is keeping an older record for its creation date and losing recent emails, notes and deal history attached to the newer one.

Should you fill in every empty field?

No. Fill only the fields that appear in a filter, saved view or report, and leave the rest empty. An empty field is honest, whereas a field filled with a guess to make a record look complete will later be filtered on and produce a confidently wrong answer. A field that is empty on most records and used by nothing is a candidate for deletion.

Why do CRM clean-ups keep getting postponed?

Because the job is sized wrong. A two-hour pass gets done and a two-day project gets moved to next quarter, every quarter, while the backlog it was meant to clear keeps growing. Cut the scope until a pass fits in an afternoon, then fix what lets the mess in: reducing what accumulates is the only thing that keeps the next pass small.

How do you stop the same problems coming back?

Change what lets them in. Convert free-text fields that hold a fixed set of values into select fields, so variants cannot be typed at all. Add validation and deduplication at import, which is where most bad data arrives in volume. Cleaning without changing the intake buys a few months and guarantees the same work again later.