All posts
Data Quality Mar 15, 2026 8 min read

Salesforce Duplicate Records: The Complete Cleanup Guide

25–40% of CRM data is duplicated. Here's exactly how to find them, stop new ones, and safely merge what's already there.

You have duplicate records in your Salesforce. Every org does. The question is how bad it is and whether it's actively hurting your business.

The industry average is alarming — research consistently shows that 25–40% of CRM data is duplicated or incomplete. For a company with 50,000 Contacts, that could mean 10,000–20,000 duplicates silently corrupting your pipeline reports, inflating your email send volumes, confusing your sales reps, and making it impossible to get an accurate view of your customer base.

Step 1: Find Out How Bad It Is (5 minutes)

Method 1: Salesforce Duplicate Record Sets. Go to Reports → New → Contacts. Add filter: "Duplicate Record Set Name" is not empty. Run the report. Divide by your total Contact count. That's your known duplicate rate — but the actual rate is usually 2–3x higher because the default matching rules are conservative.

Method 2: Manual spot check. Search for your most common company names. If "Acme Corp" appears as "Acme Corp," "Acme Corporation," "ACME," and "Acme Corp." — you have a duplicate problem.

Method 3: Duplicate report by Account. Reports → New → Accounts. Group by Account Name. Sort by Record Count descending. Any Account Name appearing more than once is a duplicate.

Step 2: Stop New Duplicates (30 minutes)

Before you clean existing duplicates, stop the bleeding. New duplicates are being created every day through web forms, integrations, manual entry, and lead imports.

Activate Salesforce's built-in Duplicate Rules. Setup → Duplicate Management → Duplicate Rules. Activate all three pre-built rules for Lead, Contact, and Account.

Start with "Alert" mode, not "Block." When a user creates a record that matches a potential duplicate, they'll see a yellow warning banner. They can still save — but they see the duplicate and can choose to use the existing record instead. After 2–4 weeks of Alert mode, move to "Block with Override."

Configure custom Matching Rules. For Contacts: match on Last Name (Exact) + Email (Exact) + Account Name (Fuzzy). Require 2 of 3 to match. This catches "Robert Smith" and "Bob Smith" at the same company who have the same email.

Don't forget API-created records. Web forms, marketing automation tools, and integrations create records via the API — and by default, they bypass your UI-based duplicate rules.

Step 3: Merge Existing Duplicates

Merge rules to commit to memory:

  1. Always pick the "master" record carefully. The master keeps its record ID, audit trail, and Chatter history. Pick the record with the most complete data and the most related records.
  2. Merge Accounts before Contacts. If two Contacts belong to duplicate Accounts, merge the Accounts first.
  3. Salesforce limits merges to 3 records at a time. If you have 5 duplicates, merge 3 first, then merge the result with the remaining 2.
  4. Merged records go to the Recycle Bin for 15 days. Always back up before bulk merging.
  5. Custom fields don't auto-merge. Review custom fields carefully during each merge.

For small-scale cleanup (under 100 duplicates): Merge manually through the UI. Navigate to each record → "Merge" option → select duplicates → choose field values → merge.

For large-scale cleanup (100+ duplicates): Use Data Loader to export, remap relationships, and delete non-master records; or use AppExchange tools like DemandTools or Cloudingo that automate bulk merging.

Step 4: Monitor Ongoing

Cleanup is not a one-time event. Create a "Data Health" dashboard with 4 components: total records by object, records created this month, duplicate record set count (should be declining), and records with missing email/phone.

Check this dashboard weekly. 15 minutes every Monday morning. If duplicate counts start climbing, something changed — a new integration, a new team member who doesn't know the rules, or a process gap.