Skip to content

CRM deduplication for Salesforce and HubSpot.

CRM deduplication means finding the records that describe the same company or person and merging them into one, so deals, activity and reports stop splitting across copies. In Cleanlist AI an agent scans Salesforce or HubSpot on a schedule, groups likely duplicates with the reason they matched and merges the groups a person approves, keeping the best record and filling its blanks.

CRM duplicate cleanup in Cleanlist AI, live: its home and chat, and its Agent, Triggers, Play, Runs and Settings tabs. Each step of the play opens its settings. Typing a message or pressing Run now, Turn on or Pause opens a free trial.

CRM duplicate cleanupActive

CRM duplicate cleanup

Worked on 13 tasks

Get started1
Triggers1
Review duplicates
Open
38
Merging
0
Merged
172
Skipped
3
Failed
0
Not duplicates
1
31 more groups
Starts
Its scheduled scan of Salesforce or HubSpot comes due
Runs
Quarterly by default, or weekly or monthly. Never daily
Costs
0 credits: the scan, the review and the merges are free
Plan
Pro, with 5 active agents. Build it on the 14-day trial.

10,000+ users, from founders to full sales teams

  • Switched fromZoomInfo
  • Case study
  • HackerOneSwitched fromApollo
  • Switched fromClay
  • Case study
  • Sumo LogicSwitched fromClay
  • Switched fromApollo
  • Case study
  • Switched fromZoomInfo
  • Switched fromZoomInfo

How to build the CRM duplicate cleanup agent

Describe the cleanup in one sentence. Clu reads your connections and CRM settings, asks at most two questions and proposes the play below. Nothing is saved until you accept it, and nothing merges until a person approves it.

  1. Open Agents and describe the cleanup in a sentence. Clu checks which CRM is connected, reads the match keys in your CRM settings and asks at most two questions in one card: how strict to be (similar names in the same account, or exact matches only) and what to do with matches (show you first, merge exact contact matches after your first review, or report only).

  2. The trigger is CRM duplicates. It scans the whole CRM on a schedule: Salesforce accounts, contacts and leads, or HubSpot companies and contacts. Quarterly is the default, on the first business day at 9:00 AM; weekly and monthly work too, daily never does.

    Each object has its own match rules, and a person's name only matches inside the same account or company. Exclude keeps chosen owners, recent records or records that meet a field condition out of every group.

  3. Review duplicates holds every group the scan finds and emails you a link to review them. Review first, the default, waits for a person on every group. Leave out the merge step and the play only reports.

    Auto-merge exact contacts (it reads Auto-merge exact records once leads are checked) merges exact Salesforce contact and lead groups of up to 3 records with no flags, at most 50 a run, after a person has reviewed one scan. Accounts and HubSpot groups always wait. Only an org admin or the person who connected Salesforce can accept it.

  4. Merge duplicates keeps one record per group by rules in the order you set: Most open opportunities (accounts only; Most open deals in HubSpot), Owned by a rep, Oldest, Newest, Latest activity and Most complete.

    With fill blanks on, each empty field on the kept record takes the first filled value from the others, and the kept record keeps its owner, record type and parent.

  5. The review shows each group with the record it keeps, why the records matched and any flags, such as different owners or open deals on several. Pick Merge, Not duplicates (never grouped again) or Skip (back on the next scan).

    Merging needs the agent on and an org admin or the person who connected the CRM. Each merge reads the records again and skips any that changed since the scan. In Salesforce, related records move to the kept record and the others sit in the Recycle Bin for 15 days; merges can't be undone from Cleanlist.

  6. On Pro or Enterprise, accepting the play starts the first scan, and Clu emails you when it is done. The free test reports the groups found and how many would merge, and merges nothing. Then turn the agent on; Clu does that only after you say yes. A cleanup spends no credits, so it carries no credits or records cap.

CRM duplicate cleanupDraft Run a testTurn on
New agent
Alex Kim9:12 AM
Find duplicate contacts, leads and accounts in Salesforce, and merge them after I review them.
Clu

Here is the play: scan Salesforce accounts, contacts and leads for duplicates every quarter, hold each group for your review, then merge the groups you approve into the best record and fill its blank fields. Review it on the canvas, then Accept to save it.

Play change for review3 steps
  1. CRM duplicatesSalesforce · Quarterly
  2. Review duplicatesReview first
  3. Merge duplicatesKeep the best record, fill its blanks
No runs yetClu's proposal: turn the agent on to run it

What a run returns

A list of duplicate groups in Cleanlist, an email with the link to review them and, once you approve, merges in your CRM. Each group keeps its match reason, its flags and the record it will keep.

CRM duplicate cleanupActive Run now
CompletedExample run · 3 steps

An example quarter: the scan found 186 groups, a person approved 172 and marked 14 not duplicates, and 171 merged. One was skipped because a record changed in Salesforce after the scan. The review email is the scan's report.

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.

  1. Start with accounts: contacts and leads hang off them.
  2. Match on keys: domain for accounts, email and LinkedIn URL for people, names only within one account.
  3. Exclude what must never merge: free email domains, converted leads and do-not-sync records.
  4. Set a survivor rule: most open deals, then a rep owner, then the oldest.
  5. 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.

RecordMatched byAlways left out
Accounts and companiesDomain; Name without a domain, when neither record has a websitePerson accounts and records your sync marks do not sync
ContactsEmail, LinkedIn URL, Cleanlist ID, or Name in the same accountFree 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 companyConverted 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.

  1. Export ID, name, website, owner, created date and open opportunities.
  2. Reduce each website to a lower-case bare domain.
  3. Group by domain, and group blank domains by name without suffixes such as Inc.
  4. 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 toolWhat it doesExamplesBest when
Built into the CRMHubSpot suggests pairs to merge or reject; Salesforce rules warn or block at entry, and duplicate jobs find existing duplicatesHubSpot Manage duplicates; Salesforce duplicate rules and jobsThe backlog is small, or the goal is stopping new duplicates
Dedupe apps for one CRMFind and merge duplicates by rules you set; some also merge automaticallyKoalify for HubSpot; Cloudingo and DemandTools for SalesforceOne CRM, a large backlog and an admin who owns the rules
Data quality platformsFind and merge across objects and systems, in bulk or automatically, with field rulesInsycle, DedupelySeveral systems, or dedupe inside a wider data cleanup
Agents on a scheduleScan, group with a match reason, wait for approval, merge and fill blanks, beside enrichment and routing agentsCleanlist AICleanup 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.

What you need

  • Pro or Enterprise to run it. Pro includes 5 active agents across your workspace.
  • Salesforce or HubSpot connected. In Salesforce, the user Cleanlist connects as needs Delete on each object it merges.
  • An org admin, or the person who connected the CRM, to confirm merges.
  • Your CRM settings in Cleanlist AI. The cleanup starts from the match keys set there.

Other ways to ask Clu for it

  • Every month, find duplicate companies and contacts in HubSpot and let me review them before anything merges.HubSpot companies and contacts on a monthly scan. Every HubSpot group waits for a person.
  • Clean up duplicate accounts and contacts in Salesforce every month, exact matches only.Exact only: the same email, LinkedIn URL or website. The name rules stay off.
  • After my first review, merge exact duplicate contacts in Salesforce on their own.Auto-merge exact contacts: groups of up to 3, at most 50 a run. Accounts still wait for you.

Questions before you turn it on.

How credits work
Can I run the duplicate cleanup agent on the free trial?

You can build it and review its play during the 14-day Pro trial. Testing it, turning it on and merging need a paid Pro or Enterprise plan.

Does it merge anything without my approval?

Not by default. Every group waits for a person. If you choose Auto-merge exact contacts, exact Salesforce contact and lead groups of up to 3 records merge on their own after your first reviewed scan, at most 50 a run. Accounts and HubSpot groups always wait for a person.

Can a merge be undone?

Not from Cleanlist. In Salesforce, merged records sit in the Recycle Bin for 15 days, where an admin can restore them, but related records moved to the kept record stay there and filled fields stay filled. A HubSpot merge can't be undone.

Which CRMs and records does it clean?

Salesforce accounts, contacts and leads, and HubSpot companies and contacts. Leads and contacts never merge with each other.

How often does it run?

Weekly, monthly or quarterly, at a time you pick. Quarterly is the default, on the first business day. It never runs daily, and you can scan once with Run now.

What happens to records I mark as not duplicates?

They are never grouped together again. Skip puts a group aside until the next scan instead.

Every duplicate, grouped. Merged when you say so.

Describe the job in one sentence. Clu proposes the play, you review it and accept it, and it runs on Pro from $89 a seat.

The 14-day Pro trial includes 250 credits and 3 seats to build and review agents. Turning one on needs a paid plan.