Step 1 — Measure before you touch anything
Save this as your baseline. It's how you prove the cleanup worked, and how you spot decay next year.
- Duplicate rate for contacts (by email) and companies (by root domain).
- Percentage of records missing owner, lifecycle stage, country or industry.
- Contacts with no activity in 24 months.
- Companies with no associated contacts, and contacts with no associated company.
- Free-text fields where the distinct-value count exceeds what a human would ever choose from.
Step 2 — De-duplicate on stable keys
Email and root domain are the only keys worth trusting. Company name matching creates false merges — 'Acme Ltd' and 'Acme Limited' are the same, 'Smith Consulting' twice may not be.
Merge rules must be decided before you start: which record survives (usually oldest created, or the one with most associations), how conflicting property values resolve, and what happens to activity history.
Step 3 — Normalise
| Field | Common state | Target state |
|---|---|---|
| Country | Free text: UK, U.K., United Kingdom, England | Dropdown, ISO-aligned |
| Industry | 120 distinct values | 12–20 values that map to your segments |
| Lead source | Whatever the form said that quarter | Fixed taxonomy, set by workflow not by humans |
| Job title | Free text (keep it) | Free text plus a derived seniority dropdown |
| Phone | Mixed formats | E.164, enforced at form level |
Step 4 — Archive, don't delete
Records with no activity in two years usually shouldn't be deleted — they should be marked non-marketing, removed from active lists and excluded from automation. In HubSpot specifically, un-marking contacts as marketing contacts is the change that reduces your bill; deletion is rarely necessary and is irreversible.
Step 5 — Install the rules that keep it clean
- Required properties on record creation, enforced by permission not by hope.
- Dropdowns instead of free text wherever a report depends on the value.
- Form validation that rejects personal email domains where that matters to you.
- A monthly data-quality dashboard: duplicate rate, blank-field rate, stale-record count.
- A named owner. Data quality without an owner is a one-off project you will repeat.
Why this matters more now
Two things raised the cost of dirty data. First, seat- and contact-based pricing means duplicates and dormant marketing contacts show up directly on the invoice. Second, AI features across the CRM — summaries, scoring, prospecting agents — read your properties and present the results as fact. Bad data used to produce a wrong report someone might question; now it produces a fluent paragraph someone forwards to a customer.
Common mistakes
- Deleting rather than archiving, then losing history you needed for reporting.
- Merging on company name.
- Cleaning the database while workflows are live, so automation fires on merged records.
- Normalising fields without updating the forms and integrations that repopulate them.
- Finishing the cleanup with no owner and no dashboard.
