# 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.

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](https://getclient.pro/blog/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](https://getclient.pro/learn/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.

| Order | Match key | What it catches | Watch out for |
|---|---|---|---|
| 1 | Exact email | Same inbox listed twice | Nothing, these are always true duplicates |
| 2 | Domain | Same business with different emails | Shared domains like gmail.com, or franchise sites |
| 3 | Phone | Same business, different spelling or no website | Shared call centers or franchise numbers |
| 4 | Name + city | Leftovers with no email or site | Chains 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](https://getclient.pro/blog/catch-all-emails-send-or-skip) walks through that call.

Finally, spot check a dozen rows. Do the [merge tags](https://getclient.pro/learn/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. Unsubscribed addresses are also skipped automatically when sending. You can try it with 100 free credits, no card needed; see [plans and credits](https://getclient.pro/pricing).

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

### Should I dedupe by email or by company?

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.

### Can I dedupe a lead list without a formula?

Yes. Google Sheets has Data > Data cleanup > Remove duplicates and Excel has Data > Remove Duplicates. Formulas only help you normalize spelling and spacing first so more true duplicates are found.

### What about near duplicates like slightly different business names?

Normalize names by lowercasing, trimming and removing words like LLC or Inc, then combine name with city as a key. Sort and review those matches by eye, since chains can have several real locations.

### How often should I dedupe my lead list?

Every time you add new rows, whether from a new search, a new city or an imported file. A quick pass before each campaign is much easier than cleaning a large list later.

### Does removing duplicates help deliverability?

It removes one avoidable risk. Sending the same message twice to one inbox can annoy recipients and lead to spam complaints, which can hurt your sending reputation over time.

Source: https://getclient.pro/blog/dedupe-a-lead-list
