Deduplicate sales leads in a CSV
To dedupe sales leads, export them to a CSV, drop the file into the duplicate remover, match on the email column while ignoring case and spacing, and keep the latest copy of each lead. Sigmera does this in your browser — your lead list is never uploaded to a server, so it stays GDPR-safe by design.
Last updated: August 2026
Duplicate leads quietly wreck your numbers
Leads pile in from multiple sources — a webform, a trade-show list, a paid campaign, a CRM export — and the same person shows up again and again. Left unchecked, those duplicates inflate your pipeline: forecasts look healthier than they are, conversion rates are understated, and your reps email the same prospect twice from two sequences. That double-touch looks careless, trips spam filters, and burns goodwill with the exact buyers you most want. The fix is to collapse each person down to a single, freshest record before the list ever touches your CRM or your reports.
Step by step: dedupe your lead list
- 1. Export your leads to CSV. Pull the leads out of your CRM, ad platform, or webform tool as one CSV file.
- 2. Open the duplicate remover. Drop the CSV into the duplicate remover — the file loads into your browser without being uploaded.
- 3. Match on the email column. Ignore case and spacing so
Jane@Acme.comandjane@acme.comcount as the same lead. - 4. Keep the latest copy and download. Keep the last copy of each duplicate group to retain the freshest record, preview the result, and download the clean list.
What actually counts as a duplicate
Most lead lists have three layers of duplicate, and only the first one is obvious. Exact repeats — the identical row imported twice — fall out of any dedupe. Then come the case and whitespace variants: Jane@Acme.com and jane@acme.com, or the same address carrying a trailing space from a bad export. They read as different strings and identical mailboxes, which is why matching with case and spacing ignored catches far more than a raw match does.
The third layer is provider-specific and catches people out. Google documents that dots in a consumer Gmail address are ignored, so jane.doe@gmail.com and janedoe@gmail.com reach one inbox — but it also warns that on a work or school domain, dots do change the address. So normalize dots for @gmail.com rows only, and leave every other domain alone. Getting that backwards merges two real people into one record, which is worse than the duplicate you were trying to remove.
If the address column is messy enough that matching is unreliable, clean it before you dedupe: lowercase and trim the email column first, then match. For the wider cost of leaving these rows in place, see what duplicate records do to a CRM, and work through the pre-import checklist before the list goes anywhere near your pipeline.
What your CRM will and will not dedupe for you
Both major CRMs already dedupe on email at import, so it is worth knowing exactly where their coverage stops. HubSpot documents that a contact with an email that already exists updates the existing record rather than creating a new one, and only mapped properties are updated. Salesforce goes a step further on names: its Standard Contact Matching Rule matches email exactly, while first and last names are matched fuzzily using Jaro-Winkler and Metaphone algorithms.
Two things follow. The first is that exact email repeats are genuinely handled for you — importing a 1,000-row file with 260 exact repeats will not create 260 extra contacts. The second is that the CRM’s rules, not yours, then decide what the surviving record looks like: which copy overwrites which field, which blank values stay blank, and which automations fire on the update. Deduping the CSV first is what moves that decision back to you — you pick whether the first or the last copy wins while the data is still a file you can re-download.
What neither CRM catches is the same person arriving under two different addresses — a work address on one list, a personal one on another. No matching rule can merge those safely, and a fuzzy name-only match will happily collapse two real people who share a common surname. Treat that layer as a manual review, not an automated pass: sort the export by last name, look at the collisions, and decide by hand. Standardizing the phone column first gives you a second field to judge them on, and the wider set of in-browser cleaning tools covers the rest of the pre-import pass.
What duplicate leads cost you at the mailbox
The pipeline damage is the visible half. The quieter half is that a duplicated list sends the same person the same message twice in one campaign, and the mailbox providers grade you on how often recipients react badly to what lands. Google’s sender guidelines set the bar tightly: bulk senders should keep spam rates in Postmaster Tools below 0.10% and avoid ever reaching 0.30%. Yahoo publishes the same ceiling, telling senders to keep their spam rate below 0.3%.
Those numbers are worth converting into rows, because the percentages read as more forgiving than they are. At the 0.30% ceiling, 3 complaints per 1,000 messages is the edge; at the 0.10% target it is 1. A send to 20,000 addresses has roughly twenty complaints of headroom before the stricter line is crossed. You do not need many people receiving the same pitch twice in an afternoon to spend that.
This is why deduping belongs before the import rather than after the first send. The reputation cost is not charged to the duplicate row; it is charged to the sending domain, and it outlasts the campaign that caused it. Matching on a normalised email column — lowercased and trimmed before the comparison, so Jane@Acme.com and jane@acme.com collapse instead of surviving as two sends — is what makes the dedupe catch the rows that would otherwise become complaints. The same logic applies to any list headed for a mail merge, which the pre-import cleaning sequence walks through end to end.
Before and after
| Messy lead export | Deduplicated list | |
|---|---|---|
| Rows | 1,000 leads | 740 unique leads |
| jane@acme.com | Appears 3× | 1× (latest copy) |
| Pipeline count | Inflated | Accurate |
| Outreach | Double-emails prospects | One touch per person |
🔒 Your lead list stays on your device. The tool runs in your browser’s memory — no file is uploaded, which keeps prospect PII GDPR-safe by design.
Frequently asked questions
- How do duplicate leads inflate my pipeline?
- Every duplicate row is counted as a separate opportunity, so your lead volume, conversion rate, and forecast all look better than reality. Reps also waste time emailing the same person twice, which damages trust and hurts deliverability. Removing duplicates before reporting gives you numbers you can actually plan against.
- Should I deduplicate leads by email or by name?
- Match on email. It is the most reliable unique identifier for a person — names are frequently misspelled, abbreviated, or shared. If a lead has no email, fall back to matching on company plus name. Sigmera lets you ignore case and spacing so near-identical emails still match.
- Will my lead list be uploaded anywhere?
- No. The duplicate remover runs entirely inside your web browser using client-side JavaScript. Your lead list is never sent to a server and never leaves your device, so handling prospect PII this way is GDPR-safe by design.
- Which copy of a duplicate should I keep?
- Usually the most recent one, because it has the freshest activity and contact details. Sigmera lets you keep either the first or the last copy of each duplicate group, so if your export is sorted by date you can keep the newest record in one click.
- Are jane.doe@gmail.com and janedoe@gmail.com the same lead?
- On a consumer @gmail.com address, yes — Google ignores dots, so mail sent to either spelling reaches the same inbox. A case-insensitive match alone will not catch it, because the two strings genuinely differ. The caveat matters: Google states that on a work or school domain, dots do change the address, so the same trick is not safe on Google Workspace or any other provider. Strip dots only for the @gmail.com rows, and treat everything else as a literal string.
- Does HubSpot deduplicate leads automatically on import?
- For exact email matches, yes. HubSpot documents that if a contact already exists with the same email address, the imported information updates that existing contact rather than creating a new one, and only mapped properties are updated. What it does not do is decide the way you would: the CRM's rules choose which values survive the update and which automations fire. Deduping the CSV first keeps that choice with you, because you pick whether the first or last copy wins while the data is still a file.
- Why dedupe before the import if Salesforce has duplicate rules?
- Because the rules cover a narrower case than people assume. Salesforce's Standard Contact Matching Rule matches email exactly and only fuzzy-matches first and last names, using Jaro-Winkler and Metaphone. That catches repeat rows well, but a merge inside a live CRM means reconciling ownership, activity history, and automations that have already run. Deleting a row from a CSV leaves no trace; merging a live record does.
- Do duplicate leads hurt email deliverability?
- Indirectly, and the margin is thinner than most people expect. A duplicated list sends the same person the same message more than once in a campaign, which is a reliable way to earn a spam complaint. Google's sender guidelines tell bulk senders to keep spam rates in Postmaster Tools below 0.10% and never to reach 0.30%; Yahoo publishes the same 0.3% ceiling. At 0.30% that is 3 complaints per 1,000 messages, so a 20,000-address send has around twenty complaints of headroom. The reputation hit lands on your sending domain, not on the duplicate row, and it outlasts the campaign.
- How do I dedupe leads that have no email address?
- Fall back to a composite key. Match on company plus last name, or on a normalized phone number, and review the matches by hand before deleting anything — those fields collide far more often than email does. Standardizing the fallback column first makes the match usable: put every phone number into one shape before you dedupe, and lowercase and trim the company names so trailing spaces do not split one account into two.
Related use cases
- Clean a CSV before a HubSpot import
- Clean a customer list before a CRM import
- Clean recruitment data
- CSV cleaners that never upload your file — the four approaches compared side by side.
- Tool used: remove duplicates from CSV.