A sales rep finds two contacts for the same buyer. One has the right phone number; the other has the open deal and the latest email thread. Merging them sounds simple until the rep has to decide which owner, company, and email preferences should survive.
That’s the practical problem behind CRM data hygiene. A clean customer record isn’t merely free of duplicates. It has trustworthy fields, the right relationships, a clear owner, and a known source for important changes. Getting there takes a controlled cleanup followed by rules that stop the same errors from returning.

The most effective approach is to work in that order: identify where bad data enters, resolve duplicates carefully, standardize the fields people use, assign responsibility, and check the results on a schedule.
Start with the records that affect decisions
Cleaning every field in the CRM is usually a poor first goal. Start with the records and fields that sales, service, and marketing depend on: active accounts, contacts with open opportunities, customer contacts, and recent leads awaiting follow-up.
For each group, write down what a usable record needs. An active sales contact might need a name, company association, working contact method, owner, and a status the team understands. A customer account might also need an account ID from the billing system. Keep the list short enough that people can realistically maintain it.
Then establish a baseline. Save views or export an authorized working file showing:
- Records missing an owner or a critical field
- Contacts without an expected company association
- Values outside approved categories, such as improvised industry names
- Potential duplicate contacts and companies
- Recently created records with no activity or follow-up
- Records changed by an import or integration soon before an error appeared
Record counts by source matter as much as the overall count. If most new duplicates follow a weekly event-list import, fixing manual entry screens won’t solve the problem. Property history can help trace individual errors: for example, HubSpot shows past property values, change dates, and change sources, which can help distinguish a rep’s edit from an import or automation.
Keep the baseline somewhere your CRM administrator and relevant business owners can review it. If you export customer data for cleanup, use an approved, access-controlled location and remove working copies when they’re no longer needed.
Find duplicate candidates before merging anything
A matching rule produces candidates, not a verdict. The same person may appear as “Sam Rivera” and “Samuel Rivera,” while two different people may share a name, employer, or household email address. Company domains can be useful matches, but a domain alone may not distinguish separate business units that your team intentionally tracks as different accounts.
Search in layers:
- Look for strong identifiers, such as the same CRM record ID from an earlier export, customer account number, or email address.
- Check supporting details: name, phone number, company, address, and recent activity.
- Review weaker matches—similar names, alternate emails, renamed companies—manually.
- Separate genuine duplicates from records that should remain distinct, such as two buyers at one company or a parent company and its subsidiary.
Use your CRM’s detection tools to build the review queue. Salesforce uses matching rules to identify possible duplicates and duplicate rules to control what happens when users create them. HubSpot’s duplicates manager presents potential contact and company pairs for review; access to that tool depends on subscription and permissions. Neither tool replaces a decision about whether the records represent the same real-world person or business.
Give reviewers a way to mark a pair as “not a duplicate” and note why. Otherwise, the same legitimate pair can consume time at every review.
Choose the surviving record deliberately
Before a merge, inspect both records’ owners, open deals, tickets, notes, company associations, activity history, and fields used by automation. Decide which record should be primary based on the relationships and identifiers you need to preserve—not simply which one was updated last. For conflicting fields, use a source-of-truth rule: a verified customer update may outrank an old imported list, while an account number maintained by the billing system should not be replaced with a sales rep’s guess.
Check marketing preferences and other sensitive status fields rather than assuming the primary record has the correct value. Also check connected systems. In HubSpot’s merge behavior, primary-record values generally take priority, but there are exceptions; associations and activities are combined, and a merged record’s ID may change unless a specified beta feature applies. HubSpot also warns that merges cannot be undone. Test high-impact merges before doing them in volume.
For example, suppose two records for the same buyer have different emails. The older record owns an open opportunity; the newer one contains a recently confirmed phone number. A sensible merge may keep the older record as primary because of its sales history, select the verified phone number from the newer record, and have the deal owner confirm which email the buyer uses. The primary record is a starting point, not permission to discard better information.
Correct inconsistent fields with a field-by-field rule
Duplicates are visible. Inconsistent values quietly damage lists, routing, and reports. If one team enters “Healthcare,” another enters “Health Care,” and a third enters “Medical,” an industry report may split the same group three ways.
For each field you plan to clean, define four things: what the field means, who supplies it, which values are allowed, and what to do when the value is unknown. Then map old values to the new standard. Review the mapping with the people who use the field before making a bulk update.
Use controlled choices where the category matters for reporting or automation. A state field may need a consistent format; a lead-source field needs categories that distinguish meaningful sources. Don’t force a precise value when the evidence isn’t there. “Unknown” or a blank can be more honest than assigning every uncategorized lead to “Other.”
Work from a small sample before updating thousands of records. Check that a formatting change hasn’t altered meaning, that a company-name cleanup hasn’t collapsed separate accounts, and that downstream reports still group records as expected. Keep a record of the mapping and the affected record IDs so the team can investigate unexpected results.
Field rules need to cover more than the screen a rep sees. For instance, HubSpot property validation can apply to edits and imports, but it has exceptions for certain workflows and other entry paths. Test forms, integrations, and automation separately instead of assuming one validation setting protects every route into the CRM.
Assign an owner—and define what ownership means
An owner field is useful only if someone knows what action it calls for. Set a clear rule for each record type: who owns a new inbound lead, an active customer account, a contact tied to several accounts, and a record left behind when an employee leaves. Decide when ownership changes and who resolves disputes.
For new records, use routing based on territory, account assignment, or another rule your team already follows. Include a fallback queue for records that can’t be assigned automatically, and give someone responsibility for checking it. For existing records, review unowned records in bulk, starting with open opportunities and customers rather than working alphabetically through the database.
The CRM administrator can build the assignment process, but the record owner should confirm business facts such as the right contact, account relationship, and next step. In HubSpot, record owners can be assigned individually, in bulk, by import, or through supported workflows. Those methods make assignment possible; they don’t decide which person should be accountable for a relationship.
Stop the next import from undoing the cleanup
Imports and integrations deserve the same scrutiny as manual entry. Before loading a file, identify how each row will match an existing record. Clean the file’s field values, test a small batch, and check the results for new duplicates, changed owners, overwritten values, and broken associations.
Don’t assume an email address or company name is always a sufficient identifier. In HubSpot, import files can use Record ID or another supported unique identifier to update existing records; contacts can also use email and companies can use company domain name in applicable cases. The right choice depends on what the file represents. A stable customer ID is often a better business match than a company name that may change.
Prevention should be firm without blocking legitimate work. A duplicate warning lets a rep check an existing contact before creating another one. A hard block may be appropriate for a genuinely unique account number, but it can cause trouble when the number is missing or shared for a valid reason. Test rules against actual records, including known exceptions, before enforcing them broadly.
Make it easy for users to report a bad match or a field they cannot complete correctly. If the approved choices don’t reflect the business, people will invent workarounds—and the database will drift again.
Put maintenance on a schedule the team can keep
Treat the first cleanup as the start of a routine, not a finished project. A practical cadence is:
- Weekly: review new duplicate candidates, unowned active records, and failed imports or syncs.
- Monthly: check missing critical fields, invalid values, stale open records, and recurring error sources.
- Quarterly: revisit field definitions, matching rules, ownership logic, and integrations after changes to the business.
Track a few measures with clear denominators: the share of active contacts missing an owner, the share of open opportunities missing a usable company association, and the number of unresolved duplicate candidates. Watch new records separately from the historical backlog. If the backlog falls but each import creates another batch of errors, the process hasn’t improved.
Assign the CRM administrator responsibility for rules and monitoring, and give sales, service, and marketing leaders responsibility for decisions about their records. That division keeps cleanup from becoming an endless admin task. When a recurring problem appears, trace it to the form, file, sync, or workflow that created it, then fix that entry point before tackling the next batch.