# How do I stop duplicate contacts in my CRM?

> Pick the ways leads reach you and who you sell to. Get the match rule for people and companies, and see which leads a person has to match.

Match a person on their email address, lowercased and trimmed, and a company on its web domain. When a new lead matches the key, update the existing record instead of creating another. This tool reads the ways leads reach you, adds the phone number for calls and texts, and sends leads with neither to a person to match.

## How this is calculated

1. Each way a lead reaches you usually hands you one identifier. Website forms, emails sent to you, booking links, imported lists, referrals you enter by hand and events usually give an email address. Phone calls and text messages usually give a phone number. Website chat, social media messages and marketplace or directory profiles usually give neither.
2. When any channel you picked gives an email, the email is the person key. When some channels give a phone number as well, the phone number is the key for a lead who arrives without an email. When only calls and texts bring leads in, the phone number is the key.
3. When no channel you picked gives either, there is no person key yet. The first reply to every lead asks for an email, and a person matches each lead by hand until then.
4. The company key is the web domain when you sell to companies, or to both companies and people. When you sell only to people, there is no company key.
5. Every key is cleaned the same way before it is compared. An email is lowercased with spaces trimmed. A phone number keeps its digits only, with the country code in front. A domain is lowercased with any leading www removed.
6. A personal email address such as Gmail never matches a company. That contact stays a person until someone links it.
7. A likely match on company domain and name, such as the same person writing from a second address, goes to a person to merge.
8. Leads from channels that give neither go to a person to match by hand. The first reply asks for an email, so the next message from that lead matches on its own.
9. One place holds the source of truth: the CRM you name, or a single spreadsheet until you have a CRM, with every other copy read-only. Every intake point creates or updates by the key and never creates blindly. When two copies disagree, the source of truth wins.

### Assumptions and limits

- The identifier each channel gives is what it usually hands you. A form with no email field, or a chat that asks for an email first, works differently, so read the rule against how your own channels work.
- The tool writes a rule from your answers. It never sees your records, so it can't count your duplicates or say which channel makes the most.
- It says nothing about what any CRM matches on by itself. Check your own CRM's duplicate settings before you rely on them.
- A phone key works only when every number is stored the same way, with its country code.
- A lead who calls first and emails later has two keys. Add the email to the phone record when it arrives, or send the pair to a person to link.
- When no channel you picked gives an email, the company domain waits until you have the lead's email address.

## Questions

**What if one person uses two email addresses?**

The email key sees two people, because the addresses differ. A likely match, such as the same name at the same company domain, should go to a person to merge. Merging on a guess can fold two real people into one record, and that is harder to undo than a duplicate.

**What about a shared address like info@?**

Several people can write from a shared address, so matching people on it would fold them into one contact. I'd match it to the company by its domain and have a person decide who wrote each message.

**Should the phone number ever be the main key?**

Only when calls and texts are the only way leads reach you. Phone numbers get written in many formats, people change them, and several staff can share an office line. Email is steadier where you have it, so the phone number works best for a lead who arrives without one.

**Do I need a CRM for this?**

A single spreadsheet can be the source of truth until you have a CRM, as long as it is the only copy anyone edits. The rule stays the same either way: clean the key, look for a match, then update the record or create one.

[BOOK A FREE CONSULTATION](https://cal.com/mashrur-signalnine/30min)

## Related

- [Dedupe key](https://signalnine.io/md/glossary/dedupe-key): A dedupe key is the field a system uses to decide two records are the same person or company. Which key to pick, an example, and what goes wrong without one.
- [Duplicate contacts: why your CRM keeps making two of everyone](https://signalnine.io/md/bottlenecks/duplicate-contacts): Duplicates come back after every cleanup because each intake lane creates its own records. One match rule, checked before any record is created, stops that.
- [Two tools, two truths: which system is the source of truth](https://signalnine.io/md/bottlenecks/source-of-truth): When two tools disagree about a client, pick one owner tool for each field, let changes flow one way from it, and send edits made elsewhere back to the owner.
- [Source of truth](https://signalnine.io/md/glossary/source-of-truth): The one system whose copy of a record wins when two tools disagree. Why it matters for opt-outs and phone numbers, and how a one-way sync keeps it that way.
- [How do I stop website form duplicates in HubSpot?](https://signalnine.io/md/integrations/website-form-to-hubspot): Where the handoff from your website form to HubSpot makes duplicates or loses leads, which field is the key, what stays with a person, and what I'd pick.
- [Records from forms and emailed PDFs, kept in one place that stays right](https://signalnine.io/md/systems/data-intake-sync): A system I built that keeps the right version of each customer record in Airtable. Forms and emailed PDFs feed it, and HubSpot copies from it.

---
Mashrur Rahman, Founder, SignalNine. Published 2026-10-05, updated 2026-10-05.
Id: T-dedupe-key-builder
Canonical: https://signalnine.io/tools/dedupe-key-builder
