How to Find Overlap Between Two Email Lists Before Sending a Campaign

April 202612 min readBy Similarity API Team

Quick answer

Export your suppression list or existing customer list, then compare it against your campaign list using both exact email matching and fuzzy name-and-company matching. Exact email matching catches most overlap quickly. Fuzzy matching on name and company catches the rest — contacts who appear in both lists with different email addresses, which is more common than most teams expect.

You have a campaign list — new leads, a trade show export, a vendor purchase. You have an existing contact list — customers, active prospects, people you're already talking to. Before you send, you need to know: who's in both?

Sending a cold outreach email to someone you're already mid-deal with is embarrassing at best. Sending an "introductory" email to an existing customer is worse. These mistakes happen because the overlap check is skipped, or done with a method that misses more than it catches.

Here's how to do it properly.

Two Types of Overlap to Catch

Type 1: Same email address in both lists. The most obvious case. Same person, same email, appears in both your campaign list and your suppression list. Easy to catch with exact matching.

Type 2: Same person, different email address. The harder case — and more common than most teams realize. Your existing customer database has the work email they used when they signed up. Your campaign list, built from a trade show export or data vendor, has their personal email or a different work address. Exact email matching misses this entirely.

Most overlap checks only catch Type 1. The mistakes that cause the most damage are Type 2.

Step 1: Exact Email Match First

Start with the easy pass. Run a COUNTIF or VLOOKUP on email addresses between the two files. This is fast, reliable, and catches all the obvious cases.

In Excel:

=COUNTIF(SuppressionList!A:A, CampaignList!A2)

Any campaign list row that returns a value greater than 0 is an exact email match — mark it as suppressed.

In Google Sheets, the same COUNTIF syntax works.

This step takes five minutes and eliminates the clearest overlap. But it's not enough on its own.

Step 2: Fuzzy Match on Name and Company for the Rest

After removing exact email matches, you still have campaign list rows that may correspond to existing contacts — just under a different email. This is where exact matching fails and fuzzy matching is necessary.

For the remaining unmatched rows, compare on contact name and company name together using a fuzzy matching tool.

Clean by Similarity API handles this as a two-file comparison: upload your remaining campaign list as File A and your existing contact/customer list as File B, match on name and company, and it returns likely matches with similarity scores. A contact in your campaign list scoring 0.85+ against an existing customer is almost certainly the same person — just with a different email on record.

Review the high-confidence matches and add them to your suppression list before sending.

Want to reconcile your datasets in under 2 minutes?

Upload your CSV and find duplicates in seconds — no signup, no install, 1,000 rows free.

Try it for free →

Why Different Email Addresses Are More Common Than You Think

The same person accumulates multiple emails over time:

  • Work email changes when they change jobs (old employer email may still be in your CRM from years ago)
  • Personal email used for conference registrations, webinars, and public-facing signups
  • Role-based email (sales@, info@) used for some vendor interactions
  • Different domains for the same company (firstname@company.com vs firstname@companyname.com)

Data vendors like Apollo and ZoomInfo surface whatever email they found most recently in their data aggregation — which may differ from the email your CRM has for the same person. Trade show badge scans often have no email at all, forcing a name-and-company match.

In a well-maintained CRM with a few years of contact history, fuzzy name-and-company matching typically catches an additional 10–25% of real overlap that email-only matching misses.

Building a Clean Suppression List

The output of this process is a suppression list — the full set of contacts from your campaign list who already exist in your database under any email address.

What to include in a suppression list:

  • Current customers (anyone with an active subscription, license, or recent purchase)
  • Active pipeline (anyone currently in a sales stage — cold outreach while a deal is open is a rep relationship problem)
  • Recent churned customers (usually worth separate treatment, not a cold intro)
  • Contacts who unsubscribed or bounced from previous campaigns
  • Any contact explicitly marked as "do not contact"

The cleaner this list is, the more useful it is. Running it through the two-pass process above (exact email first, fuzzy name-and-company second) is the most reliable way to build it from multiple source files with inconsistent data.

For Ongoing Campaigns: Automate the Check

If you're running campaigns regularly — monthly outbound batches, quarterly nurture campaigns, recurring event follow-ups — the manual process works but adds friction. The Similarity API REST API lets you build this check into your workflow:

  • Before each campaign send, POST your campaign list and suppression list to the /reconcile endpoint
  • Receive a flagged file with matched and unmatched rows
  • Import only the unmatched rows into your campaign platform

This means the overlap check runs automatically each time rather than as a manual step someone might skip.

Key Takeaways

  • Exact email matching catches the obvious overlap but misses contacts who appear in both lists with different email addresses — a more common scenario than most teams expect
  • Fuzzy matching on name and company together catches the remainder — particularly important for campaign lists built from trade show exports, data vendors, or manual entry
  • A two-pass approach (exact email first, fuzzy name-and-company second) is the most reliable method for full overlap detection
  • Building a clean suppression list from this process prevents outreach to existing customers, active pipeline contacts, and anyone who's already opted out
  • For recurring campaigns, automating the overlap check via API removes the risk of the step being skipped

FAQ