- Fix Guides
- How to Fix Duplicate Contacts in Salesforce
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.
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
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.
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.
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.
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
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.
SELECT Email, FirstName, LastName, COUNT(Id) cnt FROM Contact GROUP BY Email, FirstName, LastName HAVING COUNT(Id) > 1 ORDER BY cnt DESC LIMIT 50Configure 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.
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.
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.
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.
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 DemoCommon 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.