Fix Guide

How to Fix Duplicate Contacts in Salesforce

Step-by-step fix guide with AI-powered diagnosis from BuildForce.

Duplicate contacts in Salesforce are created when Duplicate Rules aren't configured, when integrations (HubSpot, Marketo, Pardot) create records without checking for existing matches, and when manual imports bypass the UI's deduplication checks. The fix involves configuring Matching Rules with the right sensitivity, enabling Duplicate Rules that block or alert on matches, and running a deduplication job on existing records using the Duplicate Jobs feature in Enterprise/Unlimited editions.

Matching RulesDuplicate RulesIntegration DedupBulk Merge

Symptoms

Same customer appears multiple times with different contact records

Email notifications going to the same person twice after campaigns

Sales reps seeing multiple 'same company' accounts with split contact lists

Integration sync creating new records instead of updating existing ones

Reports showing inflated contact counts that don't match expected numbers

Root Causes

1

Duplicate Rules not configured or set to 'Allow' instead of 'Block'

Salesforce ships with Duplicate Rules in 'Alert' or disabled mode. Unless set to 'Block', users can create duplicates with just a warning. Integration APIs bypass UI warnings entirely.

2

Integration upsert keys not set

Integrations like HubSpot and Marketo create new records when they can't match an existing one. Without a configured external ID field or email-based match key, every sync creates new records.

3

Mismatched email formats

Matching on email fails when the same address appears as 'John@Company.com' and 'john@company.com', or when email aliases and forwarding addresses are used inconsistently.

4

Lead-to-contact conversion without deduplication

Converting Leads to Contacts without checking for existing Contact records creates duplicates. Salesforce doesn't automatically merge the Lead's activity with an existing Contact.

How to Fix It — Step by Step

1

Audit existing duplicates

Run Salesforce's built-in Duplicate Jobs (Setup → Duplicate Management → Duplicate Jobs) to get a count of matching records. This is available in Enterprise and Unlimited editions.

Example
SELECT Email, FirstName, LastName, COUNT(Id) cnt FROM Contact GROUP BY Email, FirstName, LastName HAVING COUNT(Id) > 1 ORDER BY cnt DESC LIMIT 50
2

Configure Matching Rules

In Setup → Duplicate Management → Matching Rules, create or enable rules for Contact matching. Use 'Email Exact' as the primary match criterion, with 'Name Fuzzy' as a secondary criterion for cases where email is blank.

3

Set Duplicate Rules to 'Block'

In Setup → Duplicate Management → Duplicate Rules, edit the Standard Contact Duplicate Rule. Change the Action from 'Allow' to 'Block' for the Create action. This prevents duplicates through the UI.

4

Configure integration upsert keys

In each integration platform (HubSpot, Marketo, etc.), set the upsert key to Email for Contact syncs. This tells the integration to update existing records instead of creating new ones.

5

Bulk merge existing duplicates

Use Salesforce's Duplicate Jobs to merge existing duplicates in bulk. Review the merge candidates, set the 'master' record policy (most recent activity, or most complete data), and run the merge job.

6

Monitor with BuildForce duplicate detection

Enable BuildForce's duplicate detection check to receive weekly reports on new duplicate records entering your org, with the source integration identified.

Let BuildForce diagnose and fix this automatically

Instead of following manual steps, connect your org and let our AI identify exactly what's broken and how to fix it — in minutes.

Book a Demo

Common Questions

More answers about this issue and how to resolve it.

Stop debugging manually. Let AI do it.

BuildForce runs 200+ automated checks across your Salesforce org and tells you exactly what's broken and how to fix it.