← All tools

Deduplication

Deduplicate Salesforce and HubSpot, and undo any merge

Find duplicate records and merge them, with the surviving value chosen field by field.

SalesforceHubSpotReversible

The same company, three times. Three reps entered the same account in three quarters, and every report since has counted it three times. Nobody merges them because nobody can say which record is the real one.

Deduplication answers that in three parts, and each part is a decision you make once rather than a judgement somebody makes per record.

Which records are the same record. Matching rules say what counts as a duplicate on this object, in your own fields. A run applies them to the scope you give it and groups what it finds. Nothing is merged at this stage. The run owns its groups, so two runs over overlapping records produce independent findings rather than fighting over the same ones.

Which one survives. Master record rules pick the record the others fold into, by the property you care about: the oldest, the one with the most filled in, the one from the source you trust.

What the survivor ends up holding. Survivorship rules are decided field by field, so the survivor can keep its own name and take the better phone number from a record that is about to disappear. This is the part that is normally lost, and it is the reason a merge done by hand is worse than no merge at all.

How a pass runs

Detect, review, merge.

  1. Scope. A run names the records it covers, as a filter over your own fields. Every account in one region, or every contact created since a date, or all of them.
  2. Detect. The pass applies your matching rules and records the groups it found. It writes nothing to your CRM.
  3. Review. Each group is presented with the records side by side, the proposed survivor, and the value each field would end up with. A person approves the ones that are right.
  4. Merge. Approved groups are merged in the CRM. The survivor keeps the values survivorship chose, the other records are merged away, and their children are reparented onto the survivor.
  5. Record. Every merge is written to the audit trail with what it touched, attributed to the run that proposed it.

The detail

What it needs and what it does.

Object
Accounts, contacts and leads, each with their own matching and survivorship rules.
Configured in
Rules, in three sections: Matching Rules, Master Record Rules, and Survivorship Rules.
What it writes
A merge in your CRM, plus the surviving field values survivorship selected. Detection alone writes nothing.
Who releases it
A person, per group. Detection queues the findings; merging is approved one group at a time and is never pre-authorised.
Reversible
Yes, by unmerge. The merged records are restored and their children are patched back onto them.
CRMs
Salesforce and HubSpot.

Undo

A merge is the one thing a CRM will not give you back.

Which is why unmerge is a first-class operation here rather than a support ticket.

Restoring the record is the easy half. The hard half is that a merge reparented the children: the opportunities, contacts and cases that used to hang off the record that disappeared are now hanging off the survivor. Put the record back and leave them there, and you have a record that exists and owns nothing, which is worse than not reversing at all.

Unmerge restores the record and then patches every child back onto it, one lookup at a time. It reports exactly what it restored and what it could not, rather than claiming a clean reversal it did not achieve.

How this compares with Salesforce's own duplicate management →

For agents

The tools your agent calls.

Reading duplicates is free and needs no permission to write. Merging is a separate grant, held apart from every other mutation.

list_duplicate_groups the groups a run found read
get_duplicate_group one group, record by record read
create_deduplication_run a run over a scope you name write
approve_duplicate_group merge one group write
reverse_duplicate_group unmerge one group write

Where to start

Find out how many you have.

The readiness scan runs detection against your own CRM and reports what it finds, before anything is merged.