
How to Find and Merge Duplicate CRM Records
Duplicate CRM records waste selling time and distort reports. A three-step method: matching rules, a master-record rule, and entry controls that hold.
You clean duplicate CRM records in three steps: define a matching rule (tax ID, email domain, normalized company name), decide by one rule which record becomes the master (not the oldest one — the one with the most activity), then put an entry control in place so the same duplicate cannot be created again. Skip the third step and you will run the same cleanup in three months. Duplicates are not a housekeeping problem; they are a data-entry design problem.
Here is how each step works in a real B2B CRM.
Why do duplicate records appear in a CRM?
Almost never carelessness. A second record gets created because the system found no match:
- Name variants: "Northfield Manufacturing Inc.", "Northfield Mfg", "NORTHFIELD MANUFACTURING" — one company to a human, three to a database.
- Channel splits: A web-form lead and a business card from a trade show enter through different doors and nobody checks in between.
- Contact-level entry: Two people from the same company reach out separately and two company records get opened.
- Ownership fear: The rep sees an existing record, sees it belongs to a colleague, and opens a new one. This is the most expensive cause, because what is broken is the incentive structure, not the software.
- Bulk imports: A spreadsheet is uploaded without matching against existing records. Thousands of copies in one move.
What do duplicates actually cost you?
Take a team of 8 reps creating 250 new records a month. Typical duplicate rates run 12–18%. At 15%:
- About 37 duplicate records a month. Each one costs roughly 20 minutes of "have we talked to this company before?" research — about 12 hours of selling time per month.
- Two reps sending two different quotes to the same buyer. Lost trust on their side, a discount race on yours.
- Inflated reporting: a dashboard showing 250 new accounts actually describes 213 companies. Your conversion rate looks lower than it is and your acquisition cost looks higher.
- Marketing emailing the same person twice and paying for a list that is bigger than your market.
How do you detect duplicates?
Do not rely on a single field. Build a tiered rule and apply it top down:
- Exact match: Same tax ID or company registration number — a certain duplicate. Merge without debate.
- Strong match: Same email domain (@northfieldmfg.com) plus same city — almost certainly a duplicate. Merge with a human confirmation.
- Fuzzy match: Normalize the company name — case, punctuation, suffixes like Inc., Ltd., LLC, Corp. — then score similarity. Anything above 90% goes to a review queue.
- Phone match: Strip everything but digits, drop the country code, compare the last 10.
Do not run this across the whole database at once. Start with the last 12 months. Dormant old records will occupy you for weeks and return nothing to the pipeline.
Which record should become the master?
The most common mistake is "keep the oldest record." The right rule is keep the record with the most context, in this order:
- The record with an open opportunity
- The record with more activities, notes, and email history
- The record with a closed-won deal
- The record with more complete fields
Once you pick the master, do not delete the other one — merge it. A single note on a deleted record may be the only evidence explaining why you lost that customer six months later.
What has to carry over in a merge?
- All activities, notes, and email threads
- Open and closed opportunities, including closed-lost — loss reasons are valuable data
- Contacts and their roles
- Original source: lose the campaign that produced the lead and you lose your marketing attribution with it
- Files, quotes, and contracts
Back up before merging and review the first 50 merges by hand. Scale automated merging only if those 50 come back clean.
How do you stop duplicates from coming back?
Cleanups are temporary; controls are permanent. Four of them:
- Live warning at creation: As the rep types a company name, show similar records. A warning works better than a block.
- Make the tax ID or registration number required — at minimum before a record can move to the opportunity stage.
- Match before import: No spreadsheet gets uploaded without a matching pass.
- Fix the ownership rule: Let reps see existing records and request a transfer. A record nobody can see becomes a record somebody recreates.
How do you measure whether the cleanup worked?
Three metrics, checked monthly:
- Duplicate rate: Suspected matches divided by total records. Target under 3%.
- New duplicate creation rate: How many new duplicates appear per month? If this is not falling, your entry control is not working.
- Identifier fill rate: Keep tax ID or registration number above 95% on records at opportunity stage.
Four mistakes to avoid
- Deleting duplicates instead of merging them — context disappears.
- Trying to clean the entire database in one weekend.
- Merging on personal judgment with no written rule — two people produce two different results.
- Cleaning up without building the entry control, and landing in the same place six months later.
The deeper point: duplicates are not caused by data entry being hard. They are caused by good data never being produced in the first place. Closync extracts the record from the conversation itself and matches it to the right company, which removes the moment a duplicate would have been born.

