Updated October 8, 2026
CRM deduplication, defined
CRM deduplication is finding the records that describe the same company or person, choosing one to keep and merging the rest into it, so deals, activity and history live on one record. It runs in three steps (match the records, choose the survivor, merge with related records moved across) and, done on a schedule, it is part of CRM data hygiene.
Duplicates come from list imports, form fills that create a lead for an existing contact, reps adding a contact they could not find, integrations writing their own records and companies saved under two names. Each copy splits the history: two reps call the same buyer, and the pipeline report counts one account twice.
In Cleanlist AI an agent runs all three steps on a schedule and waits for your approval before anything merges. You describe the job to Clu once.
How to clean and dedupe CRM data automatically
To dedupe a CRM automatically, run a scheduled job that scans every record, groups likely duplicates with the reason they matched, holds the groups for a person and merges the approved ones under a rule for which record survives. Automate the finding and the merging, and keep a person on the decision until the exact-match rules have proved themselves on your data.
- Start with accounts: contacts and leads hang off them.
- Match on keys: domain for accounts, email and LinkedIn URL for people, names only within one account.
- Exclude what must never merge: free email domains, converted leads and do-not-sync records.
- Set a survivor rule: most open deals, then a rep owner, then the oldest.
- Review the first scan by hand, then let exact matches merge on their own, quarterly or monthly.
For a one-time cleanup before a migration, the step-by-step CRM cleaning guide covers the manual route.
The agent works this way on a weekly, monthly or quarterly schedule, and merges accounts first, then leads, then contacts.
Where do I find duplicates in HubSpot?
In HubSpot, go to CRM > Contacts (or Companies), click Actions in the upper right and choose Manage duplicates. The duplicates manager lists pairs HubSpot thinks are the same record, and you merge or reject each pair. It needs a Professional or Enterprise subscription and covers contacts and companies only.
- What it compares: name, email, IP country, phone, ZIP code and company name for contacts; domain, name, country, phone and industry for companies.
- How many: up to 10,000 pairs. Data Hub adds bulk management, with 30,000 pairs on Professional and 100,000 on Enterprise.
- Merging: two records at a time. The primary record's values win, its blanks fill from the other, and a merge can't be undone.
HubSpot also deduplicates contacts by email and companies by domain as records arrive through imports and forms. Companies created through the API, including third-party sync apps, skip the domain check.
The agent cleans HubSpot companies and contacts with the same rules as Salesforce. Every HubSpot group waits for a person: auto-merge is Salesforce only.
How can I merge duplicate accounts in Salesforce?
In Lightning Experience, open an account. If Salesforce has flagged duplicates you see a message: click View Duplicates, select up to three accounts, pick the principal record, choose the field values to keep and confirm. You need Delete on accounts, and you must be an admin, the account owner or above the owner in the role hierarchy. The steps are in Salesforce Help.
- Contacts and leads merge the same way, up to three records at a time.
- Related items such as campaigns and activities move to the merged record, and the other accounts go to the Recycle Bin.
- Limits: business and person accounts don't merge with each other, the mobile app can't merge accounts, and accounts the duplicate rules miss go through the Classic merge tool.
The agent merges through Salesforce's own merge, so related records move to the kept record the same way they do by hand.
What are the limitations of duplicate rules in Salesforce?
Duplicate rules check a record when someone creates or edits it, so they prevent new duplicates and leave the existing ones alone. Each object takes up to five active duplicate rules, each rule up to three matching rules, and several common paths into Salesforce skip the rules entirely. Finding the duplicates you already have is a separate job.
- Skipped paths: Quick Create, lead conversion without Apex Lead Convert, Undelete, Lightning Sync, Einstein Activity Capture and manual merges.
- Imports and the API: a record a rule catches gets no alert and can't be saved.
- Edits: a rule runs on an edit only when the edited field is part of its matching rule.
- Batch saves: records saved together aren't compared with each other.
- Existing duplicates: duplicate jobs find them, on Performance and Unlimited Editions only.
The standard rules lean on names too. Every contact and lead condition includes the first and last name, and a shared website alone never matches two accounts.
The agent scans the whole CRM on its schedule, however the records got there, and matches accounts on website domain alone. Keep duplicate rules on for prevention and let the agent clean up what gets through.
Matching rules that catch real duplicates
Good matching starts with keys that identify one company or one person: a website domain for accounts, an email or a LinkedIn URL for people. Names come last, and only inside a narrower scope such as the same account, because two contacts with the same name at different companies are usually two people.
| Record | Matched by | Always left out |
|---|---|---|
| Accounts and companies | Domain; Name without a domain, when neither record has a website | Person accounts and records your sync marks do not sync |
| Contacts | Email, LinkedIn URL, Cleanlist ID, or Name in the same account | Free email domains, and values shared by more than 10 records, such as info@ |
| Leads (Salesforce) | Email, LinkedIn URL, Cleanlist ID, or Name at the same company | Converted leads. Leads and contacts never merge with each other |
A group holds at most 10 records. Exact groups share an email, a LinkedIn URL, a Cleanlist ID or a domain; possible groups match on a similar name or a related domain, and carry flags when owners, accounts or countries differ. The keep rules then pick the survivor, and a tie goes to the oldest record, which keeps the record ID other systems point to.
How do I create a deduplicated list of all accounts in a CRM?
Export your accounts with their website, reduce each website to a bare domain (no https://, no www, no path), group the rows by domain and keep one per group by a rule such as most open opportunities, then the oldest. Accounts with no website group by a cleaned name. The result is one row per company, ready to merge or to use as a target list.
- Export ID, name, website, owner, created date and open opportunities.
- Reduce each website to a lower-case bare domain.
- Group by domain, and group blank domains by name without suffixes such as Inc.
- Keep the first row of each group by your survivor rule, and check groups where owners differ.
The agent does the same inside the CRM. Scan once with Run now or keep it on a schedule; merges wait for your approval and need the agent on.
What is the best way to prevent duplicate data?
Prevent duplicates where records enter the CRM: keep duplicate rules or HubSpot's email and domain matching on, check imports against existing records before they load, make every integration look a record up before it creates one, and give reps one place to search before they add a contact. Then clean up what still gets through on a schedule.
- Forms: match a form fill to the existing contact by email, so a returning buyer doesn't become a new lead.
- Imports and integrations: look each record up by email or domain first. Cleanlist AI's own CRM sync matches on your org's keys before it creates anything.
- Manual entry: keep Salesforce duplicate rules on Alert or Block.
CRM deduplication tools compared
Four kinds of tool dedupe a CRM. The CRM's own features prevent new duplicates and catch some old ones. Dedupe apps built for one CRM handle large backlogs inside Salesforce or HubSpot. Data quality platforms work across several systems. Agents run the cleanup on a schedule next to your other CRM jobs. Choose by CRM, by backlog size and by who will own the rules.
| Kind of tool | What it does | Examples | Best when |
|---|---|---|---|
| Built into the CRM | HubSpot suggests pairs to merge or reject; Salesforce rules warn or block at entry, and duplicate jobs find existing duplicates | HubSpot Manage duplicates; Salesforce duplicate rules and jobs | The backlog is small, or the goal is stopping new duplicates |
| Dedupe apps for one CRM | Find and merge duplicates by rules you set; some also merge automatically | Koalify for HubSpot; Cloudingo and DemandTools for Salesforce | One CRM, a large backlog and an admin who owns the rules |
| Data quality platforms | Find and merge across objects and systems, in bulk or automatically, with field rules | Insycle, Dedupely | Several systems, or dedupe inside a wider data cleanup |
| Agents on a schedule | Scan, group with a match reason, wait for approval, merge and fill blanks, beside enrichment and routing agents | Cleanlist AI | Cleanup should run with your other CRM jobs, and a person approves every merge that isn't exact |
Where Cleanlist AI fits: the agent cleans up on a schedule and spends no credits doing it. It doesn't block duplicates at entry, so keep your CRM's duplicate rules for that.
What it costs, and which plan runs it
A cleanup spends no credits. The scan, the review and the merges cost nothing, so the agent carries no credits or records cap per run. Merges do use Salesforce API calls: when your org nears its daily API limit, the remaining merges wait until after midnight UTC.
Running the agent needs Pro (from $89 a seat a month, $67 billed annually), which includes 5 active agents across the workspace, or Enterprise for unlimited agents. The 14-day Pro trial lets you build the agent and review its play; testing it, turning it on and merging need a paid plan.
An approval lasts 7 days. A change to the rules, the merge policy or the play, or turning the agent off, sends approved groups back to review.
