Data & sandboxes

Salesforce duplicate data: the hidden costs and a safer cleanup plan

By the orgadmin.ai team7 min read

Two Accounts for the same customer can look like a minor inconvenience. At scale, duplicate data changes how a business sells, supports, reports and makes decisions.

Activity splits across records. One account appears to have no open Cases while the duplicate carries the service history. Marketing contacts the same person twice. An integration updates one record while a sales representative works from another. A dashboard counts two customers and divides revenue between them.

Duplicate management is therefore not a cosmetic database exercise. It is part of the operating model for Salesforce data.

Why duplicates enter Salesforce

Most duplicate backlogs have several causes at once.

  • Manual entry: users create a new record because search is slow, naming is inconsistent or the existing record is hard to find.
  • Web forms: submissions create Leads or Contacts without checking a reliable identity key.
  • Imports: insert is used where upsert was intended, or external IDs are missing or dirty.
  • Integrations: several source systems each believe they own the customer record.
  • Mergers and acquisitions: two valid customer lists overlap without a shared identifier.
  • Weak matching: exact-name checks miss abbreviations, spelling differences, phone formats and changed email addresses.
  • Over-broad matching: legitimate branches or people are flagged as the same entity, causing users to ignore warnings.
  • Process incentives: speed is rewarded while data stewardship has no owner.

The cleanup method should address the source. Merging the backlog without fixing the import or form that creates duplicates guarantees another backlog.

How duplicate records damage the org

Customer context is fragmented

Notes, Cases, Opportunities, Tasks, files and consent records can sit on different versions of the same customer. A user looking at one record receives an incomplete history and can make the wrong decision.

Automation runs more than once

Duplicate Leads can enter the same nurture programme. Duplicate Contacts can receive repeated messages. Account-level rollups, reminders and integrations may process each copy independently.

Ownership and routing conflict

Two records can have different owners, territories, segments or service levels. The system no longer has one answer to “who owns this customer?”

Reports become unreliable

Customer counts rise, conversion rates fall, revenue fragments and cohort analysis changes. A dashboard can be mathematically correct against the stored rows and still be wrong about the business.

Data mining and AI inherit the distortion

Segmentation, scoring, forecasting and AI summaries depend on the data presented to them. Duplicate entities create repeated signals, incomplete histories and conflicting labels. More sophisticated analysis does not repair an unstable entity definition.

Users stop trusting Salesforce

Once users expect duplicate or incomplete records, they create workarounds. Those spreadsheets and private notes make the system of record less complete, which reduces trust further.

Measure the duplicate problem before merging

Start with a profile by object and source.

Track:

  • candidate duplicate groups and records involved;
  • percentage of the object represented by candidates;
  • creation channel, integration or import batch;
  • age and last activity;
  • owner and business unit;
  • related Opportunities, Cases, Contacts and Tasks;
  • fields with conflicting values;
  • false-positive rate during review;
  • new duplicate rate after prevention controls change.

Do not use one universal duplicate rate for the whole org. The identity rule for an Account differs from a Contact, Lead, product or custom asset object.

Prevent new duplicates with two layers

Salesforce's native duplicate process combines matching rules and duplicate rules.

A matching rule defines how records are compared. A duplicate rule decides what happens when a match is found, such as alerting the user or blocking the action. Duplicate detection can run during manual creation or editing, API and import activity, and duplicate jobs can identify existing records where available.

Design matching around the real entity

For a person, useful signals might include normalised email, phone, name and organisation. For a company, consider name, website domain, address, registration number or a source-system ID.

One field is rarely enough. Shared inboxes, recycled phone numbers, branch names and changed domains create both misses and false positives.

Make the response proportional

Block only when the match is sufficiently reliable and the business consequence justifies interruption. Warn and allow an override for ambiguous cases, then measure how often users override and why.

Use external IDs and upsert for integrations

An integration or migration should carry a stable source key. Upsert can update an existing record when the key matches and insert when it does not. Validate that the source key is genuinely unique before trusting it.

Improve search and process design

Teach users how to find existing records, expose the identifying fields they need, and remove incentives to create a new record merely to continue a task.

Clean the backlog with a human-review model

Historical duplicates are harder than entry-time prevention because each record may own valuable, conflicting related data.

1. Define blocking rules

Limit comparisons to plausible candidates—for example, the same country, business unit or a normalised domain. Blocking makes large scans tractable and prevents obviously unsafe comparisons.

2. Score with several comparators

Combine exact, normalised, fuzzy and domain-specific comparisons. A high name similarity with a conflicting registration number should not be treated the same as an exact external-ID match.

3. Review the differences

Show records side by side with conflicting fields first. The reviewer needs direct links and enough context to determine whether the pair represents the same real entity.

4. Choose survivorship explicitly

The oldest or most recently modified record is not always the correct master. Choose the surviving record and winning field values using completeness, system ownership, verified contact information and business context.

5. Decide what happens to related records

Contacts, Opportunities, Cases, Tasks and custom children may need reparenting, merging, preserving separately or deleting. “Move everything” can attach obsolete activity to the customer you keep.

6. Preserve an audit and recovery path

Record who approved the merge, what values won, which related records moved and whether the action can be reversed. Test the process in a sandbox before production.

Why automatic merging needs a very high bar

Automation is attractive when thousands of candidates exist, but a false merge is often harder to detect and repair than a missed match. Auto-merge only the narrow band where identity is unambiguous and recovery is tested.

AI can help explain borderline similarity or prioritise a queue. It should not silently decide that two customers are the same when the evidence is ambiguous.

How orgadmin.ai approaches duplicate cleanup

The orgadmin.ai Duplicate Manager scans standard or custom objects with configurable matching rules and multiple comparators, including fuzzy text, email, phone, company name, address, website domain and numeric or date tolerances.

Deterministic scoring handles clear cases. AI can adjudicate only a defined borderline band, and its verdict remains a suggestion. A person reviews records side by side, selects the survivor, chooses winning field values and sees related records before approving the merge.

Each merge is snapshotted and can be undone for 15 days while the underlying Salesforce records remain recoverable. Pairs marked “not a duplicate” are excluded from future scans. Production merging also requires the operator to have enabled the platform's separate production-DML gate.

Native duplicate rules and the cleanup workflow complement one another: rules reduce new duplicates, while the manager addresses records already in the org, including custom objects outside the common native merge path.

Protect analysis by fixing identity first

Before launching a new dashboard, scoring model or data-mining project, test whether the customer, person or asset count is stable. Profile duplicate candidates and understand whether one real entity can appear under several IDs.

Cleaning identity after an analytical project begins forces every metric and model to be revisited. Data quality is part of the analysis design, not a preliminary chore to skip when deadlines tighten.

Start with one object and one source

Choose the object where duplicates cause a visible business problem. Measure the backlog, trace the creation source, tighten prevention and review a small set of merges with the people who understand the data.

Start a free orgadmin.ai trial to scan a Salesforce object, review candidate groups and test a human-approved cleanup workflow in a sandbox.

Sources and further reading

Try it on your own org

orgadmin.ai puts an AI assistant, a security review and 19 more tools on your Salesforce org. 14-day free trial, no credit card.

Start free trial