Salesforce

How to Deduplicate Contacts in Salesforce

Duplicate contacts destroy reporting accuracy, waste rep time, and cause embarrassing double-outreach. Here is how to find them, merge them, and prevent them from coming back.

March 2026 · 11 min read

Salesforce contact deduplication is the process of identifying and merging duplicate contact records in your CRM. A typical Salesforce org accumulates 10-30% duplicate records over its lifetime through form submissions, list imports, manual entry, and integration syncs. Left unchecked, duplicates inflate pipeline reports, cause reps to compete for the same prospect, and damage email deliverability through repeated sends to the same address.

If you have been running Salesforce for more than a year, you have duplicates. The question is how many and how bad they are. This guide walks through the full process: auditing the damage, choosing your approach, executing the merge, and building prevention rules so you do not end up back here in six months.

Step 1: Assess the Scope of Your Duplicate Problem

Before you merge anything, you need to understand what you are dealing with. There are three types of duplicates in Salesforce:

  • Exact duplicates: Same email address, different record IDs. These are easy to find and safe to merge.
  • Fuzzy duplicates: Same person, slightly different data. "Bob Smith" at "Acme" and "Robert Smith" at "ACME Corporation." These require matching logic.
  • Cross-object duplicates: The same person exists as both a Lead and a Contact. Salesforce treats these as completely separate objects.

Run a Quick Duplicate Count

Create a Salesforce report that groups Contacts by email address. Any email that appears more than once is a confirmed duplicate. For a rough count, export your contacts to a spreadsheet and use a COUNTIF formula on the email column.

For fuzzy matching, you will need to look beyond email. Group by combinations of first name + last name + company, or first name + last name + phone number. This catches records where one version has an email and the other does not.

Benchmark: If fewer than 5% of your records are duplicates, you are in good shape. 5-15% is typical. Above 15%, your data has serious problems that are affecting downstream operations.

Step 2: Choose Your Deduplication Approach

Option A: Salesforce Native Tools (Free)

Salesforce includes built-in duplicate management. Here is what it can and cannot do:

Duplicate Rules define when Salesforce should flag a record as a potential duplicate. You configure matching criteria (email, name + company, phone) and choose whether to alert users, block creation, or allow creation with a warning.

Matching Rules control the logic behind comparisons. Salesforce supports exact match and fuzzy match on standard fields. You can use the "Standard Contact Matching Rule" or create custom rules.

To set these up:

  1. Go to Setup > Duplicate Rules
  2. Click "New Rule" and select the Contact object
  3. Choose your matching rule (or create a custom one)
  4. Set the action: Alert, Block, or Allow with logging
  5. Activate the rule

The limitation: Native tools are better at preventing new duplicates than cleaning existing ones. They do not provide bulk merge capabilities. You will need to merge records one at a time through the UI, which is not realistic if you have thousands of duplicates.

Option B: Third-Party Deduplication Tools

For bulk deduplication, third-party tools are significantly more capable:

  • DemandTools (Validity): The industry standard for Salesforce dedup. Supports complex matching rules, bulk merge with field-level survivor rules, and scheduled dedup jobs. Starts around $125/user/month.
  • Cloudingo: A lighter-weight option with a strong visual interface for reviewing and merging duplicates. Good for teams that need non-technical users to participate in the review process. Starts around $99/month.
  • Duplicate Check: A native Salesforce app that runs entirely within the platform. No external data transfer. Good for orgs with strict data residency requirements.

Option C: Export, Deduplicate Externally, Re-Import

For one-time cleanups, you can export your contacts, deduplicate in a spreadsheet or Python script, and re-import using Data Loader with the surviving record IDs. This approach works well if you have technical resources and want full control over the matching logic.

Before You Merge Anything

Export a full backup of your Contact object. If a merge goes wrong, you cannot un-merge records in Salesforce. The backup is your only recovery option.

Step 3: Define Your Survivor Rules

When two records merge, one survives and one is deleted. You need rules for which data wins. This matters more than most people realize.

For each field, decide the priority:

  • Most recently updated: Good for fields that change (title, phone, address)
  • Most complete: Good for fields that are often blank (direct dial, mobile)
  • Specific source priority: If data from your web forms is more reliable than imported lists, favor that source
  • Master record wins: The older record keeps its values (useful for preserving historical data)

Document these rules before you start merging. If you use DemandTools or Cloudingo, you can configure these as automated survivor rules. If you are merging manually, print the rules and follow them consistently.

Step 4: Execute the Merge

Small Batches (Under 500 Duplicates)

If you have a manageable number, you can merge directly in Salesforce:

  1. Navigate to a Contact record that has duplicates
  2. Click "View Duplicates" in the Potential Duplicates component
  3. Select the records to merge (up to 3 at a time)
  4. Choose the master record and select field values from each duplicate
  5. Click Merge

This preserves activities, opportunities, and related records on the master.

Large Batches (500+ Duplicates)

For bulk operations, use a third-party tool or build an automated process:

  1. Run your matching rules to generate a list of duplicate pairs
  2. Review the matches in batches (50-100 at a time)
  3. Flag false positives for exclusion
  4. Apply survivor rules and execute the merge
  5. Verify a sample of merged records to confirm data integrity

Start with exact email matches first. These are the safest. Move to fuzzy matches after you have validated the process with the easy cases.

Step 5: Handle Cross-Object Duplicates

The same person often exists as a Lead and a Contact in Salesforce. Native duplicate rules can flag this, but merging across objects requires converting the Lead to a Contact and then merging.

  1. Identify Leads that match existing Contacts (match on email)
  2. For each match, decide whether the Lead has useful data the Contact is missing
  3. Convert the Lead, mapping it to the existing Contact and Account
  4. If the Lead had different field values, update the Contact with the better data

Third-party tools like DemandTools handle cross-object dedup in a single workflow. If you are doing this manually, work through them in batches and keep a log of what you changed.

Step 6: Set Up Prevention Rules

Deduplication without prevention is a waste of time. You will be back in the same position within months.

  • Activate Salesforce Duplicate Rules on Contact, Lead, and Account objects. Set them to "Alert" at minimum, "Block" if your team can handle the occasional false positive.
  • Standardize data entry: Create picklist fields instead of free-text fields wherever possible. Use validation rules to enforce email format, phone format, and required fields.
  • Audit integrations: Every tool that pushes data into Salesforce is a potential source of duplicates. Map each integration and ensure it checks for existing records before creating new ones.
  • Schedule regular dedup scans: Run a monthly or quarterly dedup report. Catching duplicates early (before they accumulate activities and notes) makes merging much simpler.

Pro tip: The biggest source of duplicates is usually web form submissions. If your marketing automation creates a new Lead for every form fill without checking existing records, fix that first.

When to Bring in Help

You can handle deduplication yourself if you have fewer than 10,000 records and the duplicates are mostly exact matches. For larger databases, complex matching requirements, or orgs where you cannot afford downtime, a data cleaning service will save you time and reduce risk.

We clean Salesforce data for a living. If you want help with deduplication, get in touch.

Common Questions

How many duplicate contacts does a typical Salesforce org have?

Most orgs accumulate 10-30% duplicate records over their lifetime. An org with 100,000 contacts likely has 10,000-30,000 duplicates.

Will merging duplicates break my workflows?

Salesforce's native merge preserves the master record's ID and reassigns related records. Workflows triggered by record updates may fire during the merge, so test with a small batch first.

What is fuzzy matching?

Fuzzy matching identifies records that are similar but not identical. "Bob Smith" at "Acme" matching with "Robert Smith" at "ACME Corporation." Third-party tools like DemandTools offer more sophisticated fuzzy algorithms than Salesforce's native matching.

Should I deduplicate contacts or leads first?

Start with contacts. They represent real relationships your team has built. Once contacts are clean, deduplicate leads, then run cross-object dedup to find leads that already exist as contacts.

Need help deduplicating your Salesforce data?

See What We'll Find

Related: Salesforce Duplicate Contacts Guide | Duplicate Management | How to Clean Salesforce Data | Data Cleaning Services

Further reading: HubSpot Duplicate Contacts | CRM Data Quality Checklist

About the Author

Rome Thorndike is the founder of Verum. Before starting Verum, Rome spent years at Salesforce working on data quality and CRM implementation challenges. He now helps B2B companies clean, enrich, and maintain their CRM data.