• Skip to primary navigation
  • Skip to main content

Opta

Block Duplicate & Junk Leads | Opta

  • Pricing
  • Case Studies
  • Resources
    • Lead Quality Guide
    • Duplicate Leads Guide
    • Top Lead Sources
    • Lead Management Guide
    • Lead Gen Crash Course
  • Book a demo →
Guide for Contractors

Duplicate Leads: Why Contractors Pay Twice for the Same Homeowner

If you buy leads from more than one source, you are paying for the same homeowner twice. Not occasionally. Constantly. Here’s why it happens, what it actually costs, and how to stop it without wrecking your vendor relationships.

In this guide
  • What counts as a duplicate lead
  • Why you get the same homeowner twice
  • What duplicates actually cost you
  • The data: duplicates are the #1 reject reason
  • Why your CRM can’t fix this
  • How to stop paying for duplicates
  • The mistake: rejecting too much
  • Common questions

What counts as a duplicate lead

A duplicate lead is the same homeowner sold to you more than once. It can come from one source or several, minutes apart or weeks apart, under the same product or a different one. If the email or phone number matches a lead you already bought, you’re paying twice for one opportunity.

Duplicates come in four flavors, and most contractors only catch the first one:

Same source, same campaign. A homeowner fills out the same form twice, or the vendor’s system re-posts a lead. The easiest to catch, and the rarest.

Cross-source. The same homeowner arrives from two different aggregators. Your Modernize lead shows up again three days later from another vendor. Neither vendor knows about the other, so neither one flags it.

Cross-campaign. A homeowner who came in as a roofing lead comes back as a windows lead. Different product, same person, same conversation your rep already had. If you run multiple product lines, this one quietly eats budget every month.

Re-submissions over time. A homeowner who inquired 45 days ago fills out a new form. Whether this is a duplicate or a fresh opportunity depends entirely on your sales cycle, which is why the duplicate window matters (more on that below).

Why you get the same homeowner twice

It’s tempting to blame the vendors. They’re not the problem. The structure of the market is.

Homeowners shop around. Someone researching a roof replacement doesn’t fill out one form. They fill out four, across four different sites, in one sitting on the couch. Each of those inquiries flows to a different network of buyers. If you buy from two of those networks, you just bought the same person twice. The vendors did their job. The homeowner just did it twice.

Nobody upstream can check. There is no shared database between lead vendors, and there shouldn’t be. Vendor A has no visibility into what Vendor B sold you yesterday. The only party in the transaction who can see all your sources at once is you. Which means deduplication is your job, at your intake, or it doesn’t happen.

Catching duplicates at intake is better for your vendors too. The alternative is what most contractors do today: pay, notice the duplicate weeks later, and open a refund dispute. Disputes are slow, adversarial, and the vendor eats the cost of a credit on a lead they can no longer use. A real-time rejection at the moment of posting is clean. The vendor knows instantly, nothing gets billed, and they can sell that lead to another buyer instead of writing it off. This is why most vendors prefer real-time rejection over credit requests.

This is also why “just buy from better sources” doesn’t solve it. Even good lead sources will collide with each other. The more sources you run, the more collisions you get. Growth makes the problem worse, not better.

What duplicates actually cost you

Run the math on a typical mid-sized contractor:

Leads purchased per month, across 3 aggregators 600
Average cost per lead $75
Monthly lead spend $45,000
Duplicate rate with no filtering (conservative) 10%
Leads you already paid for 60 per month
Annual spend on homeowners you already own $54,000

And that’s just the invoice. Your real cost per lead is higher than the sticker price too. $45,000 for 540 unique homeowners is an effective CPL of $83, not $75. Every duplicate inflates the true cost of every source you buy from, which means your source-level ROI numbers are wrong until duplicates are out of the data.

Then there’s the part that doesn’t show up on any invoice: your reps calling a homeowner who already told your company no last week. That call doesn’t just waste ten minutes. It burns the brand with that homeowner and teaches your reps not to trust the lead list.

The data: duplicates are the #1 reject reason

This isn’t a hypothetical. Opta filters leads at intake for home improvement contractors across the country, and duplicates are consistently the largest single category of blocked leads.

Across Opta customer accounts
23%
of purchased leads rejected by the average customer
#1
reject reason is duplicates, typically around half of everything blocked

Based on Opta production data. Rejection rates vary by lead source, filter settings, and number of sources.

Here’s how rejections typically break down, blended across Opta accounts:

Reject reason Typical share of rejections
Duplicate lead (email, phone, and cross-campaign) ~50%
Phone verification failed ~15%
Home value and property type filters ~10%
Credit score proxy ~5%
Outside zip code targeting ~10%
Invalid or missing data ~10%

Blended across accounts. Your mix will vary with filter settings and sources.

The mix shifts with filter settings, but duplicates hold the top spot in every configuration we see. Whatever else is wrong with your lead flow, duplicates are almost certainly the biggest line item.

Why your CRM can’t fix this

Most CRMs have some form of duplicate detection, so contractors assume they’re covered. They’re not, for three reasons.

It happens after the sale. Your CRM sees the lead after the vendor has delivered and billed it. Merging two records doesn’t get your money back. To avoid paying, the duplicate has to be caught at the moment the vendor posts the lead, before delivery is confirmed.

It only sees one system. If leads flow into your CRM from six different sources through six different integrations, CRM-side dedup logic tends to be inconsistent, and anything living in your dialer or marketing tools is invisible to it entirely.

It has no connection to billing. The whole point of catching a duplicate is not paying for it. That only works when the rejection is a real-time API response the vendor’s billing system respects. A CRM merge is invisible to the vendor.

This is why the fix has to sit between your lead sources and your CRM, not inside the CRM. Every source posts to one intake point, the intake point checks every lead against everything you’ve already bought, and only clean leads pass through.

How to stop paying for duplicates

Five pieces, in order of importance:

1. Centralize your intake

All sources post to one place before anything touches your CRM. This is non-negotiable. Cross-source duplicates can only be caught by a system that sees every source. If Modernize posts to your CRM directly and BlueFire posts to your dialer, no tool on earth can dedupe between them.

Your own leads flow through too, but with different rules. A homeowner who fills out your website form at 2pm and then shows up from an aggregator at 2:15pm is one lead: you keep your free one and reject the paid duplicate. Dedup rules apply per source, so your internal leads are never blocked by your own filters.

2. Match on email AND phone

Homeowners don’t fill out forms consistently. Same email with a different phone, same phone with a new email. Matching on either field independently catches both. Matching on email alone misses a large share of duplicates. In production reject data, duplicate-phone catches run nearly as high as duplicate-email.

3. Set a duplicate window that matches your sales cycle

The window is how far back you check. If you close deals within 60 days of first contact, a 90-day window catches every real duplicate while letting genuine re-inquiries through. Common settings are 30, 60, 90, and 120 days. A homeowner who comes back 14 months later is not a duplicate. They’re a homeowner who’s finally ready.

One setup detail that matters: the system can’t catch duplicates on day one if it starts blind. During onboarding, upload your recent lead history across all sources (matching your window) so every incoming lead is checked against everything you already bought, from the first day live.

4. Check across campaigns

If you sell roofing and windows, a roofing lead and a windows lead from the same homeowner in the same month is one conversation, not two. Cross-campaign checks make sure you pay for it once. Contractors running three or more product lines are consistently surprised by how much this alone catches.

5. Reject in real time, tied to billing

The rejection has to happen via API response at the moment the vendor posts the lead. With sources that support real-time rejection, a rejected lead is never billed. For the handful of sources that can’t tie billing to an API response, the duplicate still gets kept out of your CRM, and you get the records to dispute the charge. Confirm this source by source before launch. It’s the difference between blocking duplicates and actually not paying for them.

The mistake: rejecting too much

Here’s the part most filtering advice leaves out: you can hurt yourself by over-rejecting.

Lead vendors route volume toward buyers who accept and monetize their leads. An account that bounces an unusually high share of volume gets deprioritized, and over time the leads that do arrive get worse. Reject rate is a relationship metric, not just a savings metric.

The goal is not to reject as much as possible. It’s to reject only what’s genuinely unworkable: true duplicates inside your sales cycle, contact data that can’t be reached, and homeowners you can’t legally or physically service. Set the duplicate window to your sales cycle, not to forever. Keep zip targeting current so you’re not rejecting areas you actually cover. A well-tuned account rejects the right 20%, keeps vendors happy, and gets first crack at the good volume.

This is also why “cut sources with high rejection rates” is bad advice, even though it appears in most lead quality guides. With real-time rejection, you don’t pay for what’s blocked, so a high-duplicate source might still deliver great accepted leads. Judge sources on what matters: cost per appointment set on the leads that come through.

Customer Results

Install America: $685K reclaimed in four months

Install America, a multi-product remodeler in PA, TN, and NC, had nothing filtering leads at intake. Duplicates, disconnected numbers, and unprofitable properties flowed straight to reps. They went live on Opta in four business days.

$685K+
reclaimed in lead spend in the first 4 months
+80%
appointment set rate per lead
+10pts
gross-to-net conversion
“We were paying for ridiculous stuff. Duplicates, bad phone numbers, leads that thought they were getting something for free. These were the things we were looking to eliminate.”
Tom McMillan, CEO, Install America

Read the full case study

Common questions about duplicate leads

What is a duplicate lead?

A duplicate lead is the same homeowner sold to you more than once. It can come from one source or several, under the same product or a different one. The most common forms are matching email, matching phone number, and cross-campaign duplicates, where a homeowner who came in as a roofing lead shows up again as a windows lead.

Why do I get the same lead from multiple aggregators?

Because homeowners shop around. A homeowner researching a project fills out forms on several sites in one sitting, and each inquiry flows to a different network of buyers. There is no shared database between lead vendors, so nobody upstream can check whether you already own that homeowner. The only party who can see all your sources at once is you, which is why deduplication has to happen at your intake.

How many of my purchased leads are duplicates?

Across Opta customer accounts, the average contractor rejects about 23% of purchased leads, and duplicates are consistently the largest reject reason, typically around half of everything blocked. If you buy from multiple aggregators with no filtering, roughly 1 in 10 leads you pay for is a homeowner you already bought.

Do I still pay for rejected duplicate leads?

With sources that support real-time rejection, no. The lead is rejected via API response before delivery, so it never gets billed. A handful of sources can’t tie billing to a real-time API response. For those, Opta keeps the duplicate out of your CRM and gives you the records to dispute the charge. We confirm which category each of your sources falls into before launch.

How long should my duplicate window be?

Match it to your sales cycle. If you typically close within 60 days of first contact, a 90-day window catches genuine duplicates while letting real re-inquiries through. Common settings are 30, 60, 90, or 120 days. Blocking forever sounds safe but throws away homeowners who genuinely re-enter the market a year or two later.

Why doesn’t my CRM catch duplicates?

Most CRMs can flag or merge duplicate records, but only after the lead has been delivered and billed. CRM deduplication happens inside one system, after the fact, with no connection to vendor billing. To avoid paying for a duplicate, it has to be caught before delivery, at the moment the vendor posts the lead, so the rejection ties directly to your invoice.

Can rejecting too many leads hurt my vendor relationships?

Yes. Vendors route volume toward buyers who accept and monetize their leads, and deprioritize accounts that bounce an unusual share of volume. Reject only what’s genuinely unworkable: true duplicates inside your sales cycle, invalid contact data, and leads you can’t service. A well-tuned account rejects the right leads and stays a preferred buyer.

How does Opta block duplicate leads?

Opta sits between your lead sources and your CRM. Every incoming lead is checked in real time against everything you’ve already purchased, by email and phone, across all sources and campaigns, with a duplicate window you control. Duplicates are rejected before delivery, so with sources that support real-time rejection, you never pay for them. Setup is done for you, and most accounts are live within a week.

Find out how many duplicates you’re buying

Book a 15-minute demo. We’ll look at your sources and show you what a filter would have blocked.

Book a demo

No setup fees. No long-term contracts. Live in one week.

Opta

Resources

  • Lead Quality Guide
  • Duplicate Leads Guide
  • Lead Management Guide
  • Top Lead Sources
  • Lead Gen Crash Course

Industries

  • Home Services
  • Home Improvement

Company

  • We’re Hiring!
  • LinkedIn
  • Help Center
  • Log In
Privacy Policy Terms of Service Security & SOC II Do Not Sell or Share My Personal Information

Copyright © 2026 · Opta, All rights reserved.