Why do duplicate records keep getting created?
Duplicates enter through four doors: manual entry by reps, web form submissions, list imports, and integrations writing on their own schedule. A cleanup project that ignores those doors produces a clean database that degrades inside a quarter.Rep entry creates duplicates because searching is slower than creating. A rep on a live call types "Acme" into global search, sees nothing because the existing record reads "Acme Corporation," and creates a new account in eight seconds. That behavior is rational. The system made the wrong path faster than the right one.
Web forms create duplicates because the form has no idea who is filling it out. Same buyer, work email in March and a personal address in June, two lead records with no link between them.
Imports create duplicates in volume. A conference list lands with no match check, and some share of those people already exist as contacts under a different email format.
Integrations are the quietest source and the hardest to trace. A marketing automation platform, an enrichment vendor, and a sales engagement tool each hold write access to the same objects. Each carries its own definition of uniqueness. Every sync is a chance to fork a record.
Close the doors and cleanup becomes a one-time job instead of a standing one.
What is the difference between a matching rule and a duplicate rule?
A matching rule defines what counts as the same record. A duplicate rule defines what the system does when a match is found. Most teams configure the first, skip the second, and then wonder why the database keeps filling up.Matching logic is comparison. Two accounts are the same when the website domain is identical. Two contacts are the same when email matches exactly, or when last name and account both match while first name matches loosely.
Enforcement is policy. Warn the user and let them continue. Block the save outright. Allow the save but flag the record into a review queue. Those choices carry different costs, and applying a single policy to every object is where this usually goes wrong.
Block on contacts and leads where email matches exactly. That comparison is unambiguous and the cost of a false block is close to zero. Warn on accounts. Company names vary for legitimate reasons, and a hard block that rejects "Acme Holdings" because "Acme Holdings LLC" exists will stop real work and teach reps to invent workarounds.
Which fields should your matching rules compare?
Match on fields that are structurally unique rather than fields that are typed by a human under time pressure. Email address and website domain beat company name in every comparison.| Object | Primary match field | Match type | Why it holds up |
|---|---|---|---|
| Contact | Email address | Exact | Unique by definition, near zero false positives |
| Contact | Last name plus account | Exact and exact | Catches records created with a personal email |
| Account | Website domain | Exact, normalized | Survives naming variations and legal suffixes |
| Account | Company name | Fuzzy | Useful as a warning, unreliable as a block |
| Lead | Email address | Exact | Same logic as contact, applied earlier |
| Opportunity | Account plus close date window plus amount | Fuzzy | Catches double-entered renewals and split deals |
The opportunity row is the one most teams skip, and it does the most damage. A duplicate contact wastes a rep's time. A duplicate opportunity inflates pipeline coverage and puts revenue in the forecast twice. Renewals are the usual culprit, created once by the account manager and once by an automated renewal process that did not check for an existing record.
How do you stop integrations from creating duplicates?
Give exactly one system permission to create records for each object and make every other system update-only. This single change removes more duplicate volume than any matching rule you will write.Start with an access audit. List every integration user, every API key, and what object permissions each one carries. The list is almost always longer than the RevOps team expects, because tools accumulate through pilots that were never revoked.
Then set the create authority. The CRM itself creates accounts and contacts. Marketing automation updates them. Enrichment vendors update them and never create. Sales engagement tools log activity and touch nothing structural.
Where an external system genuinely needs to create records, force it to use an upsert keyed on an external ID rather than a plain insert. An upsert asks whether the record exists before it writes. An insert does not ask.
What happens when a duplicate rule blocks a rep in the middle of a deal?
They file a ticket, wait two days, and then create the record under a slightly different name to get around the block. Design for that behavior rather than pretending it away.Give frontline managers a documented override. Log every override with the user, the timestamp, and the record. Review the log weekly for the first month after you turn rules on.
The override log is diagnostic. A rule that gets overridden repeatedly on the same pattern is a rule that is wrong, and the correct response is to loosen the matching logic rather than to lecture the team. A rule that almost never gets overridden is working and can stay strict.
How do you know prevention is working?
Count new duplicates created per month rather than total duplicates in the database. Total duplicates measures how far your cleanup got. New duplicates per month measures whether the problem is actually solved.Publish two numbers monthly: duplicate sets created in the last 30 days, and the share of those that came from an integration rather than a human. The second number tells you where to spend the next hour of configuration work.
There is a version of this project that never ends, where a team keeps merging records and waits for the database to be perfect before trusting any of its numbers. That wait is unnecessary. Every revenue team believes its data is uniquely bad, and almost none of them are right. Consistency matters far more than perfection, because a stable pattern can be corrected for and a shifting one cannot. Prevention is worth the effort because it holds the pattern steady, which is the actual precondition behind every recommendation in sales forecasting best practices and the reason duplicate opportunities damage forecast accuracy in a way duplicate contacts do not.
Frequently Asked Questions
What is the difference between a matching rule and a duplicate rule?
A matching rule is the comparison logic that decides whether two records are the same. A duplicate rule is the enforcement action taken when a match is found, such as warning the user, blocking the save, or flagging the record for review. Configuring the first without the second is why duplicates keep appearing.
Should you block or warn on duplicate creation?
Block on contacts and leads where email matches exactly, because that comparison is unambiguous. Warn on accounts, because company names vary legitimately and a hard block on name similarity will stop real work and train reps to route around the system.
Which field is most reliable for account matching?
Normalized website domain. Company name is entered by humans and varies with legal suffixes, abbreviations, and typos. Domain survives all of that. Strip the protocol, strip the www prefix, and lowercase the value before comparing.
How do integrations create duplicates?
Each connected system holds its own definition of a unique record. When a marketing platform, an enrichment vendor, and a sales engagement tool all have create permission on the same object, every sync is an opportunity to fork a record that already exists.
How do you measure whether duplicate prevention is working?
Count new duplicates created per month rather than total duplicates in the database. Total duplicates measures cleanup progress. New duplicates per month measures whether your rules are holding, and it is the number that tells you if the problem is solved or paused.
See how ORM turns these insights into action
ORM builds custom revenue forecast models for B2B SaaS companies. Not dashboards. Prescriptive analytics that tell you what to do next.
Schedule a Demo