How to Dedupe a Lead List Before You Hit Send

A step-by-step way to remove duplicate businesses, emails and contacts from a lead list in a spreadsheet, so nobody gets your cold email twice.

Updated Nov 6, 2026 · 5 min read

Sending the same cold email twice to one business owner is a fast way to look careless. It happens easily: you scrape two overlapping cities, run a second keyword like "hair salon" after "barber", or merge an old CSV with a new one. Suddenly the same shop sits in your list three times, under slightly different names.

This guide shows you how to dedupe a lead list in Google Sheets or Excel today, in the right order, without deleting leads you actually want.

Why duplicates cost you more than you think

Duplicates are not just untidy. They cause real problems:

  • Double sends. The same person gets your first email and every follow-up twice. That reads as spam and invites complaints.
  • Sender reputation. Complaints and repeated sends to the same inbox can hurt your domain. See how to protect your domain reputation for the wider picture.
  • Wasted credits and verification. Every duplicate you verify or enrich is paid work for no new lead.
  • Misleading numbers. Your reply rate looks worse when one business is counted as three contacts who "didn't reply".

Step 1: Make a backup and standardize your columns

Before deleting anything, duplicate the sheet and name it "raw". Work on a copy.

Then make sure every source uses the same columns. If one file says "Company" and another says "Business Name", rename them so they match, then stack all rows into one sheet. Add a column called Source (for example "Maps Austin" or "Old CSV March") so you can trace where each row came from later.

Step 2: Clean the data so matches can actually match

Duplicates often hide behind formatting. "Joe's Barbers " and "joe's barbers" are the same shop, but a spreadsheet treats them as different. Create helper columns that normalize each key field:

  • Email: lowercase and trim. In Sheets or Excel: =LOWER(TRIM(C2))
  • Domain: strip the website down to the bare domain. Remove "https://", "http://", "www." and anything after the first slash. A simple version: =LOWER(REGEXREPLACE(D2,"^(https?://)?(www\.)?([^/]+).*$","$3")) in Google Sheets.
  • Phone: keep digits only. In Sheets: =REGEXREPLACE(E2,"[^0-9]","")
  • Name: lowercase, trim, and remove common words like "llc", "inc" and "the" if they cause near-misses.

Paste the helper columns as values once they look right, so later sorting does not break the formulas.

Step 3: Dedupe in the right order

The order matters because each key catches a different kind of duplicate. Work from the most reliable key to the least.

OrderMatch keyWhat it catchesWatch out for
1Exact emailSame inbox listed twiceNothing, these are always true duplicates
2DomainSame business with different emailsShared domains like gmail.com, or franchise sites
3PhoneSame business, different spelling or no websiteShared call centers or franchise numbers
4Name + cityLeftovers with no email or siteChains with many real locations

Exact email

Sort by your clean email column. In Google Sheets, use Data > Data cleanup > Remove duplicates and tick only the clean email column. In Excel, use Data > Remove Duplicates with just that column selected. Leave blank emails alone for now; the tool will treat all blanks as one duplicate otherwise, so filter them out first and add them back after.

Domain

This is the step that saves most double sends to small businesses. A barbershop might list info@ and the owner's address. Decide: do you want one contact per business, or every contact? For cold outreach to local businesses, one well-chosen contact per domain is usually the safer default.

Exclude free email domains (gmail.com, yahoo.com, outlook.com and so on) from this step, or you will collapse hundreds of unrelated businesses into one row.

Phone, then name plus city

Run the same process on the digits-only phone column, then on a combined key like =F2&"|"&G2 (clean name plus city). Review these by eye before deleting, especially for chains. Two locations of the same daycare brand in different neighborhoods may be two genuine leads.

Step 4: Choose which duplicate to keep

Remove Duplicates keeps the first row it sees. So sort before you remove, putting the best row on top. A good rule of thumb for what counts as "best":

  1. Has a named owner or decision maker, not just info@
  2. Has a verified email
  3. Has the most fields filled in (website, category, city)
  4. Comes from the most recent source

A quick way: add a Score column that counts filled fields with =COUNTA(A2:H2), sort by score descending, then dedupe. If two rows each hold useful data, merge them by hand first.

Step 5: Dedupe against people you already contacted

A clean new list can still overlap with last month's campaign. Keep a master "contacted" sheet with every email and domain you have sent to, plus anyone who unsubscribed or asked not to be contacted.

Then flag overlaps in your new list with =COUNTIF(Contacted!A:A, C2)>0. Filter TRUE and remove those rows, or move them to a separate follow-up list if your timing and situation make a later touch reasonable. Never re-add someone who opted out. Rules on cold email differ by country, so check what applies to you.

Step 6: Verify, then load

Dedupe before verifying, not after, so you only pay to check unique addresses. Then run verification and decide what to do with risky results such as catch-all addresses; this guide on catch-all emails walks through that call.

Finally, spot check a dozen rows. Do the merge tags fields look right? Is the business name readable, not "JOE'S BARBERS LLC - BEST FADES 24/7"? Fixing these now matters as much as removing duplicates.

Keeping lists clean going forward

Most duplicate mess comes from moving files between tools. In GetClient, leads you scrape from Google Maps and CSVs you import live in My Leads folders, and campaigns send from that same place, so you are not re-exporting and re-merging between a scraper, a verifier and a sender. Unsubscribed addresses are also skipped automatically when sending. You can try it with 100 free credits, no card needed; see plans and credits.

Whichever tool you use, the habit is the same: one master list, one contacted list, and a dedupe pass every time new rows come in.

Frequently asked questions

Do both, in that order. Email catches exact duplicates; domain or company catches the same business listed with different addresses. For small local businesses, keeping one contact per company avoids overwhelming a two-person shop.

AI-powered lead generation from 8 sources

Live leads from Google Maps, Yelp, Yellow Pages, YouTube, Facebook Ads, TrustMRR, Skool and Skool Discovery — AI finds the owner, emails and socials for every one. Start with free credits.

More from Blog

See all