Leads and enrichment

CRM Duplicate Contacts 2026: How to Clean Your Data

By Lars KrügerUpdated 9 min read

Cover: two matching lead cards merging into one record – symbol for cleaning CRM duplicate contacts
Contents
  1. What are CRM duplicate contacts and why do they hurt?
  2. How do you spot duplicates?
  3. What does the GDPR say about data accuracy?
  4. How do you clean existing duplicates?
  5. How do you prevent new duplicates on import?
  6. What role does the blacklist play?
  7. How do you prepare a CSV file before import?
  8. When is a full rebuild better than cleanup?
  9. Which cleanup mistakes happen most often?
  10. How does duplicate hygiene connect to lead sources?
  11. How do you check after cleanup that it stuck?
  12. Which cleanup plan fits you?
  13. Keep reading
  14. Frequently asked questions
  15. Sources

Cleaning CRM duplicate contacts means merging or removing multiple records for the same person or company before they distort lists, follow-ups, and metrics. Clean data is the baseline for any lead process. inDeal (indeal.ai) is a free AI CRM for small businesses from Lars Krüger GmbH in Berlin and matches existing leads on import by email or LinkedIn URL. Not to be confused with indeal.io, a different company.

As of November 6, 2026. Law: GDPR Art. 5 (EUR-Lex); data: Eurostat 2025; product: success.indeal.ai and indeal.ai. Not legal advice.

What are CRM duplicate contacts and why do they hurt?

A duplicate is a second record for the same person or organization. Common causes: form plus CSV import, browser capture plus manual create, or two spellings of the same company.

Duplicates cost time and trust. Two people call the same contact. Follow-up dates disagree. Pipeline numbers count the same deal twice. And GDPR access requests become unnecessarily hard.

In 2025 only 24.69% of small EU enterprises used CRM software (Eurostat). Teams moving from spreadsheets often bring duplicate rows with them—migration is the best moment to clean up; see CRM migration.

Infographic: two lead cards with the same email merging into one cleaned record
CRM duplicates: same key (email or LinkedIn URL) → one record

How do you spot duplicates?

Names alone rarely suffice. “M. Miller” and “Max Mueller” may be the same person—or two. Stable keys are digitally unique identifiers.

Field Strength as a key Typical trap
Email address High +newsletter aliases, domain typos
LinkedIn URL High Old vs new profile URL, company page instead of profile
Phone Medium Country code, extension, mobile vs main line
Company name Medium Ltd vs Inc, diacritics, abbreviations
First and last name Low Common names, typos, name changes

Practical order: email first, then LinkedIn URL, then phone. Everything else is a clue, not proof.

Screenshot of the open leads list with Import button and contact rows
Open leads: one clear row per person—duplicates show up as repeated names or companies

What does the GDPR say about data accuracy?

Article 5(1)(d) of the GDPR requires personal data to be accurate and, where necessary, kept up to date; inaccurate data must be erased or rectified without delay (EUR-Lex). GDPR applies whenever you process personal data of people in the EU, regardless of where your company sits.

Duplicates are often the opposite of accuracy: conflicting phone numbers, different opt-out states, two storage places. Anyone who must answer access, rectification, or objection requests needs to know which card is right.

Storage limitation (Art. 5(1)(e)) also applies: data nobody needs anymore does not belong in the CRM forever—not even as “maybe later.”

How do you clean existing duplicates?

A cleanup run follows a fixed order. Improvising creates new errors.

  1. Prepare an export or filter. Sort by email, LinkedIn URL, and company. Mark groups that share a key.
  2. Pick a master. Keep the record with the richer history (activities, notes, stage).
  3. Merge fields. Move missing phones, roles, and notes onto the master—do not overwrite wildly the other way.
  4. Close the second card. Mark the duplicate lead lost or put the identifier on the blacklist so it does not return.
  5. Spot-check. Search the email—only one open card should remain.

inDeal has no separate on-screen “Merge” button. Cleanup runs through import logic, manual edits, and the blacklist (Creating, importing, and enriching leads).

Lead detail with email and company fields as match keys
Lead detail: email and profile URL are the stable keys for matching

How do you prevent new duplicates on import?

Prevention is cheaper than cleanup. CSV import in inDeal has fixed limits and clear rules: file up to 4 MB, at most 50,000 rows and 200 columns, preview and auto-mapping.

Under Existing leads you choose:

Option Effect When it fits
Fill empty fields (default) Existing lead stays; empty fields are filled Re-import from the same source
Skip Existing lead stays unchanged You want no silent field changes

Matching uses email or LinkedIn URL, always within your own account. Skipped rows include trash leads, blacklist hits, conflicts (email → lead A, LinkedIn → lead B), and duplicate rows inside the file. Those cases appear with a reason in the error report (CSV) with columns Row, Field, Raw value, and Reason.

At least one name field, an email, or a profile URL must be mapped—or the import will not start. After the run, new leads stay cold until you set a follow-up.

A free CRM for your whole team. Start inDeal in 2 minutes. Just an email address, no credit card to sign up, unlimited users.

Start free

What role does the blacklist play?

The blacklist blocks people and companies you do not want to contact: competitors, existing customers, partners, or explicit opt-outs (Managing the blacklist).

You can block an email, LinkedIn profile, domain, or company. Values are normalized (case, +alias, www, legal form). Free-mail domains such as gmail.com cannot be blocked as a domain.

Where it applies:

  • CSV import: blocked rows are skipped
  • Manual create: creation is prevented
  • Chrome extension: blocked profiles are not created, no credits used
  • API and MCP: rejection with status 409 and code blacklisted
  • Campaigns: no create and no assignment

Existing contacts are not deleted; they are flagged as blocked. Removing the entry clears the flag—unless another list entry still matches.

How do you prepare a CSV file before import?

The best duplicate check fails on dirty files. Thirty minutes of prep saves hours in the CRM.

1. One row per person. No merged cells, no blank spacer rows.

2. One email column, one LinkedIn URL column. Name them clearly. A second mobile number belongs in its own column (inDeal maps “Mobile 2” to Mobile 2).

3. Dedupe in the sheet first. Sort by email and remove obvious double rows. What is already duplicated internally otherwise creates duplicate error-report rows.

4. Normalize legal forms and countries. “Ltd” vs “ltd”, “US” vs “United States”—that helps later filters even when matching runs on email.

5. Pre-load blacklist candidates. Competitor domains and opt-out emails go on the blacklist before import, not after you hunt them in the list.

6. Take the preview seriously. inDeal shows mapping before the run. If name, email, and LinkedIn URL are all missing, the import will not start—by design.

Help-center limits: at most 4 MB, 50,000 rows, 200 columns. Split large files and import in batches; check the error report after each batch.

If you still live in spreadsheets, see Manage leads in spreadsheets and Spreadsheet vs CRM.

When is a full rebuild better than cleanup?

Sometimes the base is so messy that piecemeal work costs more than a controlled rebuild. Signals:

  • Several people keep parallel spreadsheet lists beside the CRM
  • The same email exists three or four times with conflicting stages
  • Nobody trusts the metrics on Home
  • Blacklist and trash are empty even though opt-outs are known

Then run a project: build a master list outside (one row per email), load the blacklist, archive or mark old CRM rows lost, re-import cleanly with “Fill empty fields.” That is close to a migration—the flow is in CRM migration.

For most small businesses, wave cleanup is enough: email key first, then LinkedIn, then company clusters, while growing the blacklist in parallel.

Which cleanup mistakes happen most often?

Cleanup can make data worse if you work without rules. These mistakes show up again and again in small teams.

Search by name only. You find “Max Miller” but miss “M. Miller” with another email. Always start with email and LinkedIn URL.

Keep the wrong master. The newer card looks fresh but has no history. Keep the card with activities, notes, and stage history.

Overwrite fields instead of filling empties. A blind overwrite import deletes good phone numbers. Use “Fill empty fields.”

Delete the duplicate, forget the key. Without the blacklist, the same contact returns via the Chrome extension or the API.

Try to finish everything in one afternoon. Large bases need waves: email doubles first, then LinkedIn, then company clusters.

Mistake Result Better
Name only False confidence Email / LinkedIn first
Newer = better History lost Pick master by history
Blind overwrite Good data gone Fill empty fields
Delete without block Duplicate returns Blacklist entry
Big-bang cleanup Team overloaded Waves by key

How does duplicate hygiene connect to lead sources?

Each source creates typical double patterns. Knowing them lets you filter with intent.

Website form + manual create. Sales creates the contact again because the form email sat in another mailbox. Rule: forms land only in the CRM.

CSV from an event or partner. Lists often contain the same domains many times. Before import: dedupe by email, then “Fill empty fields.”

Chrome extension + later import. Profile URL and email must match. Conflicts (email → lead A, LinkedIn → lead B) land in the error report—fix them there.

Campaigns and existing customers. Blacklisting existing customers prevents awkward double outreach. Opt-outs too.

More on browser capture: Capture leads from Chrome. On spreadsheet lists: Manage leads in spreadsheets.

Plan a short quarterly data check: sample 50 leads, search for duplicate emails, review the blacklist. It takes an hour and saves weeks of confusion.

How do you check after cleanup that it stuck?

After cleanup you need a short control loop. Otherwise duplicates grow back within four weeks.

Spot-search ten emails that used to be doubled. Only one open card should remain.

Read the error report from the last import: if the same domains conflict again, a blacklist rule is missing.

Compare metrics before/after. Fewer open leads with the same pipeline quality is a good sign—not every removed card was a lost deal.

Ask the team. If two people see the same contact on the daily list, cleanup is not done.

Write the rules in three sentences: Which key wins? Which import option is default? Who may edit the blacklist? Only admins change the blacklist; everyone else can view it (Managing the blacklist).

Which cleanup plan fits you?

If you are migrating from spreadsheets, plan one import with “Fill empty fields” plus an afternoon for the error report. If the CRM is already full, start with top sources (email doubles) and blacklist domains that should never enter.

A free CRM for small business only helps when the data foundation is sound. An AI CRM for small business automates reminders—not the decision of which of two cards is right. For the full process, see Lead management for small business.

Keep reading

Frequently asked questions

What are CRM duplicate contacts?
Duplicates are multiple records for the same person or organization. Typical case: the same contact once from a form and once from a CSV import, with a slightly different spelling.
How do you spot duplicates in a CRM?
Most reliably via email and LinkedIn URL. Names, companies, and phone numbers are clues, but typos and legal forms make them unreliable as sole keys.
How do you clean duplicates in inDeal?
On import, choose “Fill empty fields” or “Skip”. Conflicts (email points to lead A, LinkedIn to lead B) land in the error report. Manually keep the richer lead and mark the other lost or add it to the blacklist.
What does “Fill empty fields” mean?
Existing leads stay; empty fields are filled from the import row, populated fields are not overwritten. The record grows without creating a second card.
Why are duplicates a data-protection issue?
GDPR Article 5(1)(d) requires accuracy. Conflicting doubles make access, rectification, and objection harder. This is not legal advice—ask a specialist if unsure.
How does the blacklist help with duplicates?
It blocks emails, LinkedIn profiles, domains, or company names. Blocked rows are skipped on import and rejected on manual create and via API/MCP. Existing contacts are flagged, not deleted.
How do you prevent new duplicates?
Use a primary key (email or LinkedIn URL) before import, normalize columns, prefer “Fill empty fields” over blind imports, and blacklist competitors and opt-outs.
Is inDeal the same as indeal.io?
No. inDeal (indeal.ai) is a free AI CRM for small businesses from Lars Krüger GmbH in Berlin. indeal.io is a different company.

Sources

  1. Regulation (EU) 2016/679 (General Data Protection Regulation), Art. 5 EUR-Lex ·
  2. E-business integration Eurostat Statistics Explained ·
  3. Creating, importing, and enriching leads inDeal Help Center ·
  4. Managing the blacklist inDeal Help Center ·
  5. CRM migration without data chaos inDeal Guides ·
  6. inDeal – free AI CRM for small businesses inDeal ·
  7. Lead management for small business 2026 inDeal Guides ·

Keep reading