CRM
CRM Data Hygiene That Actually Sticks
Every team runs one big clean-up, feels good for a month, then drifts back. The fix isn't a bigger clean-up — it's making the bad record impossible to create.
The standard response to a messy CRM is a data cleansing project. Someone exports 40,000 records, a team spends three weeks merging duplicates and filling in blank fields, and the reports look believable again. Six months later the same meeting happens with the same slide. The clean-up worked; nothing about the system that produced the mess changed.
Decide what a good record is
Most teams cannot answer this precisely, which is why nobody can be held to it. Write down the minimum viable record for each object and keep the list short enough that people remember it.
• Company: legal name, website domain, country, industry, owner.
• Contact: first and last name, work email, role, linked company.
• Opportunity: value, currency, close date, stage, source.
The website domain is doing more work than it looks. It is the only company field that is naturally unique, stable, and machine-checkable, which makes it the best deduplication key you will ever get. Company names are not — 'Acme Ltd', 'Acme Limited' and 'ACME' are three records waiting to happen.
Validate at entry, not in a report
A validation rule that blocks a save is worth more than a dashboard that counts violations. Nobody reads the dashboard; everybody notices the block. Required fields, picklists instead of free text, and a duplicate check on domain and email will stop the majority of bad records before they exist.
A field that is optional at entry is a field that is empty in the report.
Kill the free-text field
Free text is where reporting goes to die. Industry, lead source, and lost reason should all be picklists with fewer than a dozen options. If someone needs a thirteenth, that is a conversation, not a keystroke — and the conversation is the point, because it forces the taxonomy to stay deliberate.
Give every record an owner and an expiry
Ownership makes the mess someone's problem. An expiry makes it visible. A contact with no activity in eighteen months is not a contact, it is a liability under most privacy regimes and a distortion in every conversion metric you calculate. Archive on a schedule and report the archive count next to the new-record count.
Measure the rate, not the total
The useful metric is not how many bad records exist — it is how many were created last week. A falling creation rate means the system is improving. A falling total with a flat creation rate means somebody is just cleaning up faster than the team breaks things, and that person will eventually leave.
Using the website domain as the dedup key is the advice I wish I'd had three years ago. Company name matching gave us 'Acme', 'Acme Ltd' and 'ACME (do not use)' as three separate accounts with three separate owners.
Measuring the creation rate rather than the total is the bit most people skip. Our 'data quality' hero left and the backlog was back within four months, which told us exactly how much we'd actually fixed.
One wrinkle on domains: multi-brand groups and franchisees share a domain, and holding companies have several. Works for 95% of records, but decide the exception rule up front or you'll create a different mess.