A CRM data clean-up is the least glamorous project in your business and one of the most valuable. If your team does not trust the CRM, they keep their own spreadsheets, reports are argued about instead of acted on, and any AI or automation you build on top will be working from rubbish.
This guide is the method I use when cleaning up CRMs for businesses in Wollongong and the Illawarra, mostly in HubSpot, but the steps apply to any CRM. Work through it in order. Skipping straight to deduplication without the earlier steps is how people end up merging the wrong records.
Why clean data matters (especially for AI)
Bad CRM data costs you in ways that are easy to miss:
- Two salespeople call the same prospect because there are two records.
- Marketing emails go to people who left the company years ago, hurting deliverability.
- Pipeline reports are wrong because deals sit in stages nobody updates.
- Nobody can answer simple questions like "how many active clients do we have?"
- You pay for contacts you should have deleted, if your CRM bills by contact volume.
And then there is AI. Every AI tool that touches your CRM, whether it is drafting emails, scoring leads, summarising accounts or running as an agent, treats your data as truth. It cannot tell that "Acme Pty Ltd", "ACME" and "Acme Group" are the same company, or that the lifecycle stage on half your clients was never updated. It will produce confident, well-written output based on wrong information.
AI does not fix messy data. It makes messy data faster and more convincing.
If you are planning any AI or automation work, a clean-up is step one. I cover the order of operations in AI agents explained.
Before you start: back up and agree the rules
- Export everything. Full exports of contacts, companies, deals and any other objects, with all properties. Store them somewhere safe and dated. Merges and deletions can be hard or impossible to undo.
- Name an owner. One person accountable for the clean-up decisions and, afterwards, for keeping it clean.
- Agree definitions. What is a "customer"? What is an "active" contact? What counts as a duplicate? Write these down before touching anything.
- Pause risky automations. Workflows that trigger on property changes can fire during bulk edits. Check what will run before you bulk update.
- Tell the team. Give them a date range when records may change, and ask them to flag anything odd.
Step 1: the field audit
Start with fields (properties), not records. If you dedupe first, you will be merging records full of fields nobody understands.
Export a list of all custom properties for each object. For each one, record:
| Column | What to capture |
|---|---|
| Property name and internal name | So you know exactly what you are looking at |
| Fill rate | Percentage of records with a value |
| Used in | Forms, workflows, lists, reports, integrations |
| Created by and when | Often explains why it exists |
| Duplicate of | Another field that holds the same thing |
| Verdict | Keep, merge, rename, archive |
Rules of thumb for the verdict
- Fill rate under 5 percent and not used anywhere: archive it, after exporting the values.
- Two fields holding the same thing (for example "Industry" and "Sector"): pick one, copy values across, archive the other.
- Free text fields that should be dropdowns: anything you want to report or filter on should be a dropdown with fixed options. "Wollongong", "W'gong" and "wollongong NSW" are three values in a report.
- Confusing names: rename with a clear label and a description. "Status 2" helps nobody.
- Fields used by an integration: do not touch without checking the integration first.
Example: a portal with 180 custom contact properties often ends up with 40 to 60 after an audit. The rest were one-off imports, abandoned experiments or duplicates.
Step 2: deduplicate
Duplicates come from imports, forms, integrations, sales reps creating records by hand, and people using different email addresses. Here is the order I tackle them in.
Companies first, then contacts
Dedupe companies before contacts. Company duplicates split your contact associations and deal history. Once companies are clean, contact merges have somewhere sensible to point.
Matching rules, from safest to riskiest
| Match on | Confidence | How to handle |
|---|---|---|
| Exact email address (contacts) | Very high | Merge, usually in bulk |
| Exact company domain (companies) | Very high | Merge, with a quick check of large accounts |
| Same name and same phone | High | Merge after a spot check |
| Same name and same company, different emails | Medium | Review by hand. Could be a personal and work email, or two different people |
| Similar company names, no domain | Low | Review by hand. Branches and franchises often look like duplicates but are not |
| Same first name and surname only | Very low | Do not merge on this alone |
Deciding which record wins
When merging, decide in advance which record is the primary. My default rules:
- The record with the most recent activity wins.
- If one record has deals, it wins.
- Check the owner field. Merging can change who owns a client, which can upset a salesperson.
- Check lifecycle stage. You do not want a customer merged into a record marked as a lead.
Use the CRM's built-in duplicate tools for high-confidence matches. For medium and low confidence, export the candidates to a spreadsheet, have someone who knows the clients mark each pair "merge" or "keep", then action it. Slow, but much safer.
Step 3: deal with dead and junk contacts
Not every contact deserves to stay. Build lists for each of these groups and decide what to do with them:
- Hard bounces: email addresses that no longer exist.
- Long-term unengaged: no opens, clicks, form fills, meetings or deals in, say, 18 to 24 months.
- Junk: test records, spam form submissions, obviously fake details.
- Missing essentials: no email, no phone, no company. If you cannot contact them, why keep them?
- Unsubscribed and not a client: keep them suppressed, but consider whether they need full contact records.
For each group, the options are: delete, archive (export then delete), mark as non-marketing so you are not paying to email them, or keep with a clear reason. Be careful with anyone who has been a client, has open deals, or whose records you need to keep for legal or accounting reasons.
Example: what pruning is worth
A business with 32,000 contacts finds 6,000 hard bounces and junk records, and 11,000 contacts with no engagement in two years and no deals. Removing the junk and moving the unengaged contacts to non-marketing status takes their marketing contact count from 32,000 down to around 15,000. On a CRM that bills by marketing contacts, that can drop them a pricing tier, and their email engagement rates improve because they stop mailing people who never open.
Illustrative example. Check your own CRM's billing rules before making decisions.
Step 4: fix lifecycle stages
Lifecycle stage tells you where someone is in their relationship with your business. It drives reporting, lead routing and marketing. In most messy CRMs, it is wrong on a large share of records.
Define each stage in one sentence
Use whatever stages your CRM supports, but define them in plain words your team agrees on. A typical set:
| Stage | Definition (example) | Set by |
|---|---|---|
| Subscriber | Signed up for content only | Form or import |
| Lead | Has shown interest but is not yet qualified | Form or rep |
| Marketing qualified lead | Fits our client profile and has taken a buying action | Workflow or marketing |
| Sales qualified lead | Sales has spoken to them and confirmed need, budget and timing | Sales rep |
| Opportunity | Has an open deal | Automatically, when a deal is created |
| Customer | Has a won deal or active contract | Automatically, when a deal is won |
| Other | Suppliers, partners, staff, anyone not in the sales journey | Rep or admin |
Then fix the records in bulk
- Anyone associated with a won deal or active contract: set to Customer.
- Anyone with an open deal: set to Opportunity.
- Suppliers, partners and staff: set to Other.
- Everyone else: Lead or Subscriber based on how they came in.
- Then turn on automation so deal creation and deal won update the stage from now on.
Lifecycle should generally only move forward. If a client churns, use a separate property (such as "client status: former") rather than moving them backwards, so your history stays intact.
Step 5: sort out ownership
Every contact, company and open deal should have an owner who is a current staff member. Check:
- Records owned by people who have left. Reassign them using clear rules (by territory, by account, round robin).
- Records with no owner. Anything with a deal or recent activity needs one.
- Contact and company owners that do not match. Decide whether the company owner rules, and sync contacts to it.
- A process for when someone leaves: their records get reassigned the week they go, not six months later.
Step 6: data entry rules that keep it clean
A clean-up without rules is a one-off. Within a year it will be a mess again. Write a one-page data standard and train everyone on it. Mine usually includes:
- Search before you create. Always search by email and company domain before adding a record.
- Required fields on creation: for example email, company, lifecycle stage, lead source and owner.
- Dropdowns over free text for anything you report on: industry, region, source, service interest.
- Formatting rules: phone numbers in one format, full company legal or trading name, Australian state abbreviations.
- Notes go in notes, not in the company name or job title field.
- Imports go through one person who checks columns, maps to existing properties and dedupes first. No ad hoc imports.
- Integrations are documented: what each one creates and updates, so you know where data comes from.
Where you can, enforce the rules in the system rather than relying on memory: required fields on forms and pipelines, dropdown properties, validation, and automation that fills in what it can.
The monthly hygiene routine
One hour a month, owned by one person, keeps the CRM trustworthy. Put it in the calendar. Here is the routine:
Duplicates (15 min)
Review the duplicate suggestions. Merge the obvious ones. Note any source creating them repeatedly and fix it.
Ownership (10 min)
Check for unowned records with activity and records owned by former staff. Reassign.
Stale deals (15 min)
List open deals with no activity in 30 days or past their close date. Send to owners to update or close.
Lifecycle and fields (10 min)
Spot check lifecycle against deals. Check fill rates on required fields. Review any new properties someone created.
Bounces and junk (5 min)
Remove hard bounces and spam submissions from the last month.
Log it (5 min)
Record what you found and fixed. Trends tell you which rule or integration needs attention.
The free CRM Data Hygiene Checklist in the sidebar has this routine as a printable list.
What "clean" looks like: the finish line
A clean-up needs a finish line, or it drifts on for months. Before you call it done, check:
- Every custom property has a clear name, a description and a reason to exist.
- No duplicate companies on the same domain, and no duplicate contacts on the same email.
- Every contact with a won deal is marked as a customer. Every contact with an open deal is an opportunity.
- Every open deal has a current owner, an amount and a close date in the future.
- No records are owned by people who have left.
- Hard bounces and junk are gone, and unengaged contacts are not costing you marketing fees.
- The data standard is written, the team has been trained on it, and required fields are switched on.
- Someone owns the monthly routine, and the first one is in the calendar.
Then run the reports your leadership team uses and ask them one question: do you believe these numbers? If the answer is yes, you are done. If not, find out which number they doubt and trace it back.
FAQ
How long does a CRM data clean-up take?
For a small to mid-sized business with tens of thousands of records, a proper clean-up typically takes a few weeks, mostly because medium-confidence duplicates and field decisions need someone who knows the clients. The monthly routine afterwards takes about an hour.
Should we clean our data before migrating to a new CRM?
Yes. Always clean before migrating. Moving junk into a new CRM costs time in mapping, money in contact fees, and starts the new system with a mess people will not trust.
Can AI clean my CRM data for me?
AI can help: suggesting duplicate matches, standardising free text into categories, and filling gaps from available information. But a person should approve merges and deletions, and the rules still need to come from you. AI helps with the grunt work, not the decisions.
Is it safe to delete old contacts?
Export them first, and do not delete records you need to keep for legal, tax or contractual reasons. If you are unsure about retention obligations, get advice. Deleting genuinely dead contacts you have no reason to hold is generally good practice under Australian privacy principles.
What does a professional clean-up cost?
My data clean-up work starts from $4,500. A HubSpot health check, which tells you how bad it is first, is $1,950. See pricing for details.
Next steps
Do the backup and the field audit this week. That alone will show you how big the job is. If it is bigger than you have time for, or you want it done once and done properly, get in touch. I work on site in Wollongong and across the Illawarra, or remotely.