Salesforce

How to Find and Merge Duplicate Contacts in Salesforce

Duplicates waste sales time, mess up reporting, and make automation unreliable. Here's how to find them, merge them, and stop them from coming back.

January 2026 · 10 min read

Two reps are working the same deal without knowing it. Your email campaign sent the same message to the same person three times because they're in your database three times. Your contact count says 50,000, but the real number is somewhere around 38,000 once you account for duplicates.

Duplicate contacts are one of the most common Salesforce problems, and one of the most damaging. They corrupt your data, waste your team's time, and make it impossible to trust your CRM as a source of truth.

This guide covers how to find duplicates in Salesforce, merge them without losing data, and set up systems to prevent them from multiplying again.

Why Does Salesforce Create Duplicates?

Before fixing duplicates, it helps to understand where they come from. The usual suspects:

Web forms that create instead of update. Someone fills out your demo request form. They're already in Salesforce from a previous interaction, but the form creates a new Lead instead of updating the existing Contact. Now you have two records.

List imports without deduplication. A purchased or event list can contain people already in the CRM. Match the import against existing contacts before creation and reconcile accepted, rejected, and ambiguous candidates.

Multiple systems syncing independently. Your marketing automation, sales engagement platform, and support system push data to Salesforce. They don't coordinate. The same person gets created multiple times from different sources.

Manual entry without checking. Reps add contacts on the fly. They don't search first, or they search but don't find the existing record because it's spelled slightly differently. "Jon Smith" doesn't match "John Smith" in a quick search.

Lead conversion creating new Contacts. A Lead can convert without matching an existing Contact in Salesforce. This can happen when the Lead's email differs from the Contact's or matching rules are not configured.

Finding Duplicates: The Manual Way

Salesforce has basic duplicate detection built in. Here's how to use it.

Duplicate Reports

You can create reports that identify potential duplicates based on matching fields. The simplest approach:

1. Create a new report on Contacts
2. Group by Email
3. Add a row count
4. Filter where row count > 1

This shows you each email address that appears on multiple Contacts. Same logic works for phone number, name, or any other field.

What this misses is everything that isn't an exact match. "[email protected]" lines up with "[email protected]," but it won't connect "[email protected]" and "[email protected]" as the same person, and that's where a lot of your real duplicates live.

Duplicate Rules and Matching Rules

Salesforce's Duplicate Management feature (Setup > Duplicate Management) uses matching rules to find duplicates. The standard matching rules compare:

  • Exact email match
  • Exact name match
  • Fuzzy name match (catches some variations)

You can view potential duplicates on individual records. Go to any Contact, and if duplicates exist, you'll see a "Potential Duplicates" component (if you've added it to the page layout).

It works, but only one record at a time. For bulk duplicate detection across the whole org, you need something more.

Duplicate Jobs (Performance and Unlimited Editions)

One native option gets overlooked: duplicate jobs. If you're on Performance or Unlimited edition, Setup > Duplicate Jobs lets you run a matching rule across existing Contacts, Leads, or Accounts at once and review the resulting duplicate sets in a report.

The catch is the edition requirement. Most orgs on Professional or Enterprise don't have it, which is why the duplicate report workaround above and third-party tools carry most of the load. Duplicate rules alone won't help with the backlog either; they only fire when a record is created or edited, so the 5,000 duplicates already sitting in your org stay invisible to them.

Finding Duplicates: The Better Way

For serious deduplication, you need tools that can process your entire database and identify duplicates using sophisticated matching.

Third-Party Deduplication Tools

Several AppExchange apps handle bulk deduplication:

Cloudingo. Check current official vendor materials and a dated proposal, then test each option with the same representative sample, field list, provenance rules, and export requirements.

DemandTools. From Validity (the company behind Return Path and BriteVerify). Powerful but complex. Better for admins who need granular control over matching logic.

Duplicate Check. Check current official vendor materials and a dated proposal, then test each option with the same representative sample, field list, provenance rules, and export requirements.

What these tools do that native Salesforce doesn't:

  • Fuzzy matching on company names (catches "Acme Corp" and "ACME Corporation")
  • Phonetic matching on names (catches "John" and "Jon")
  • Cross-object matching (finds Leads that are already Contacts)
  • Bulk review and merge interfaces
  • Scheduled automated deduplication

Export and Deduplicate Externally

If you don't want to buy a tool, you can export your data, deduplicate in Excel or a database, then update Salesforce.

Export Contacts with ID, Name, Email, Phone, Company, and any other relevant fields. Use Excel's Remove Duplicates feature, or better, use a tool like OpenRefine that handles fuzzy matching.

Once you've identified duplicates, you can use Data Loader to merge them back in Salesforce (you'll need to use the merge API or handle this carefully to preserve relationships).

This can become tedious as candidate volume grows. Compare a purpose-built tool and the manual process on the same sample, including setup, false matches, exception review, reversibility, and evidence retained for each approved merge.

How Do You Merge Duplicates Without Losing Data?

Finding duplicates is the easy part. Merging them correctly is where things get tricky.

The Standard Salesforce Merge

Salesforce lets you merge up to 3 Contacts at a time through the UI:

1. Go to the Contacts tab
2. Click "Merge Contacts" in the tools section
3. Search for the duplicate records
4. Select which values to keep for each field
5. Click Merge

The merged record keeps relationships from both source records. Activities, Opportunities, Cases, and other related records transfer to the survivor. The "losing" records are deleted (not moved to Recycle Bin).

Important: Merges Are Permanent

You cannot undo a merge. The deleted records don't go to the Recycle Bin. Generally export a backup before merging, especially if you're doing bulk operations.

Choosing the Survivor

When merging, you choose which record survives. The survivor keeps its record ID, which matters for:

  • External system integrations that reference the ID
  • Bookmarks and saved links
  • API connections

Best practices for choosing the survivor:

  • Oldest created date. This preserves the longest history.
  • Most complete data. Choose the record with fewer blank fields.
  • Most recent activity. The record with recent engagement is more likely to be accurate.
  • Owner assignment. Choose the record owned by the rep who should own the relationship.

Preserving Data From Both Records

During merge, you choose field values from either source record. But what if both records have valuable data in the same field?

For example, one record has the contact's work email, the other has their personal email. You can only keep one in the Email field, but you might want both.

Solutions:

  • Use custom fields. Create "Secondary Email" or "Alt Phone" fields to preserve additional data.
  • Use the Description field. Before merging, paste important data from the losing record into Description.
  • Export first. Save a complete export of both records before merging, so you can reference the original data later.

Bulk Merging

If you have hundreds or thousands of duplicates, merging them one at a time isn't practical. Options:

Third-party tools. Cloudingo, DemandTools, and similar tools support bulk merge operations with configurable survivor rules.

Data Loader with merge API. Salesforce's API supports programmatic merging, but you need to build the logic for survivor selection and data preservation.

Hire someone. Seriously. If you have 10,000 duplicates and no tooling, paying someone to clean it up is often cheaper than figuring it out yourself.

How Do You Stop Duplicates From Coming Back?

Cleaning up duplicates is pointless if they keep coming back. Prevention is the real goal.

Configure Duplicate Rules to Block

By default, Salesforce's duplicate rules just warn users. They can ignore the warning and create the duplicate anyway. Change this.

Go to Setup > Duplicate Rules. Edit your rules to "Block" instead of "Alert." This prevents users from creating records that match existing ones.

Be careful here. If your matching rules are too strict, you'll block legitimate record creation. If they're too loose, duplicates slip through. Test your rules before enforcing them org-wide.

Fix Your Integrations

Most duplicates come from integrations rather than manual entry. Audit each system that writes to Salesforce:

  • Web forms. Should they create new records, or update existing ones? Configure your form handler (Pardot, Marketo, native Web-to-Lead) to match and update.
  • Marketing automation. How does your MAP handle existing records? Is it set to create or update?
  • Sales tools. Outreach, Salesloft, and similar tools often create Contacts. Make sure they're checking for existing records first.
  • Data imports. Avoid import a list without deduplicating it first. Match against existing data before creating new records.

Train Your Team

Reps create duplicates when searching before entry is hard or slow. The process should make finding an existing contact easier than creating a new one.

Make it easy:

  • Use Global Search rather than list views, to find existing records
  • Search on email (more unique than name)
  • Add the Potential Duplicates component to record pages
  • Create a quick action for adding contacts that includes a duplicate check

Regular Maintenance

Even with prevention in place, some duplicates will slip through. Schedule quarterly duplicate reviews as part of your broader CRM hygiene process to catch them before they multiply.

The Hidden Cost of Duplicates

Duplicates seem like a minor annoyance, but the costs add up:

Wasted sales time. Reps research the same contact multiple times. They don't see the full picture of a relationship because the history is split across records.

Inflated marketing costs. You're paying to email the same person multiple times. Your list size looks bigger than it is, so your metrics are wrong.

Broken automation. Lead scoring that considers email engagement is wrong when engagement is split across duplicates. Nurture sequences trigger multiple times for the same person.

Lost trust. When reps don't trust the CRM, they stop using it and quietly start keeping their own spreadsheets. I watched this happen at two different companies, and once a sales floor stops trusting the system, you don't win that back with a memo. The whole org gets less out of the CRM because a handful of duplicates made it feel unreliable.

If your Salesforce has been running for more than a couple years without serious duplicate management, you probably have thousands of them. The question is whether to spend time fixing them now or keep paying the hidden spend every day.

Common Questions

What happens to activities when I merge contacts in Salesforce?

Activities from both records transfer to the surviving record. Task history, email logs, and call records are preserved. Nothing is lost except the duplicate record itself.

Can I undo a merge in Salesforce?

No. Merging is permanent. The losing record is deleted and cannot be recovered. Generally export backups before bulk merging.

Why does the CRM create duplicates in the first place?

Common causes: web forms creating new records instead of updating existing ones, list imports without duplicate checking, multiple systems syncing independently, and reps entering data without searching first.

How do I merge Leads with Contacts?

You can't directly merge across objects. Instead, convert the Lead and merge the resulting Contact with the existing Contact. Some third-party tools can handle cross-object deduplication more elegantly.

How many contacts can I merge at once in Salesforce?

Three at a time through the standard merge interface, and the merge API has the same three-record limit per call. Bulk cleanup means either scripting repeated merge calls or using a tool like Cloudingo or DemandTools that batches the work for you.

Do duplicate rules find duplicates that already exist?

No. Duplicate rules only evaluate records when they're created or edited. Existing duplicates sit untouched unless you run duplicate jobs (Performance and Unlimited editions only), build duplicate reports, or run a third-party deduplication tool across the org.

Have thousands of duplicates and not enough time to clean them?

Merge My Duplicates

Related: All Salesforce Guides | Company Name Normalization | Email Validation | Data Deduplication Services | CRM Hygiene

About the Author

Rome Thorndike is Verum's founder. Between Datajoy, Snapdocs, and Salesforce he has merged, untangled, and argued about more duplicate records than he would care to count. Verum does that work now so revenue teams don't have to.

Related: Illustrative CRM Cleaning Workflow