How to Filter Roofing Leads Bought From Lead Vendors Before You Burn a Crew on Them
On this page
You paid for the lead. That does not mean it is worth a rep's afternoon.
Most roofing companies treat a purchased lead like a paid invoice: money changed hands, so somebody had better go knock. That instinct is exactly how a $35 lead turns into a $300 loss. By the time a salesperson burns ninety minutes on a disconnected phone number, a renter who has no idea why a roofer is calling, or a homeowner who already signed with the company three vendors ahead of you, the cost of the lead is the smallest number on the page. The real cost is the windshield time, the missed appointment with a real prospect, and the slow rot of a rep who stops believing the next name on the list is worth dialing.
Filtering bought leads is the cheapest leverage you have in the whole sales operation. You are not buying better leads, negotiating a better cost-per-lead, or rebuilding your marketing. You are deciding, before a human ever touches the record, whether that record deserves a human at all. Done well, the same monthly lead spend produces a noticeably higher close rate, your best closers stop quitting, and you find out which vendors are quietly selling you garbage long before the contract renews.
What follows is the actual system: how to grade a vendor before you sign, how to scrub a batch the moment it lands, how to score each lead so routing is automatic, the field signals that tell you a lead is dead before you drive, and how roof-level data changes which doors you bother with at all. None of it requires software you do not already have. All of it requires that you stop confusing a paid lead with a qualified one.
Why bought roofing leads need filtering in the first place
A roofing lead from a vendor is a stranger's intent, captured by someone else, sold to you and usually to others, after passing through a form that rewarded the vendor for volume, not truth. Every one of those clauses is a place the lead can go wrong.
Start with how the lead was generated. A homeowner who searched "roof leak repair near me" and filled out a form on a roofing company's own site is a fundamentally different animal than a homeowner who entered a sweepstakes, clicked a "see if you qualify for a new roof" ad, or answered a survey that promised a gift card. The first person has a problem and is hunting for a solution. The second person was hunting for the gift card and got routed to you. Vendors rarely tell you which bucket a lead came from, and the price is frequently identical.
Then there is the question of how many times the lead was sold. A shared lead delivered to four contractors is not 25 percent as good as an exclusive one; it is worse than that, because speed-to-first-contact now decides the whole thing and three competitors are racing you. By the time lead number three calls, the homeowner has already been pitched twice and is annoyed. Many vendors blur the shared-versus-exclusive line, or sell a lead as "exclusive" while reselling the homeowner's data to an aggregator who feeds a different vendor who sells it again.
Layer on the structural problems. Form-fill leads carry typos, fat-fingered phone numbers, and fake names entered to grab a quote without commitment. Aged leads get resold months after the homeowner already fixed the roof. Some leads are flatly fraudulent, generated by bots or incentivized click farms. The Federal Trade Commission has pursued lead-generation operators for exactly this kind of deception, where the lead a buyer paid for never represented a real, consenting consumer at all.
The point is not that bought leads are bad. Plenty of healthy roofing companies run on them. The point is that the raw batch you receive is a mix of gold, gravel, and outright trash, and the only way to make the economics work is to separate the three before your sales team confuses effort with progress.
The taxonomy of where your leads actually came from
You cannot grade a lead well until you know the genus it belongs to, and vendors are not eager to tell you. Here is the practical taxonomy, ranked roughly from strongest to weakest, with what each one means for how hard you should work it.
- Organic-search inbound. A homeowner searched a problem phrase, found a site, and submitted a form. High intent, because the person initiated and described a need. When you buy these, you are buying someone else's SEO. They are scarce and expensive, and worth it.
- Paid-search inbound. Same intent shape, generated by an ad on a problem keyword like "hail damage roof inspection." Slightly noisier than organic because some clicks are accidental or comparison-shopping, but still genuine problem-aware traffic.
- Paid-social / interest ads. A homeowner scrolling a feed saw a roofing ad and clicked. Intent is softer; they were not hunting for you. Workable, but expect more tire-kickers and a longer nurture.
- Survey and quiz leads. "Answer three questions to see if your roof qualifies." The qualifying language inflates response and deflates quality. Many respondents have no roof problem and no intent to spend.
- Sweepstakes and incentivized leads. The homeowner wanted the gift card, the entry, or the giveaway, and the roofing form was the toll. Bottom-tier intent. Some are not even aware they will be contacted by a roofer.
- Co-registration and aggregator buybacks. The homeowner's data was collected on one site and resold across a chain of buyers. By the time it reaches you it may be old, multiply-sold, and stripped of the original context. Treat every co-reg lead as guilty until proven reachable.
- Aged and recycled leads. Any of the above, resold weeks or months later at a discount. Sometimes labeled honestly, often not. A roof problem from ninety days ago has frequently already been solved by a competitor.
When a vendor will not tell you which bucket a lead came from, assume the worse end of the range and price your effort accordingly. The single most useful question you can put to a vendor is simply, "Walk me through exactly how this person ends up in my inbox." The quality of that answer tells you most of what you need to know.
The math that justifies the work
Run the numbers once and you will never skip filtering again. Say you buy 100 shared leads at $40 each, a $4,000 spend. Assume a blunt-force operation where every lead gets dialed and worked equally.
| Stage | Count | Notes |
|---|---|---|
| Leads purchased | 100 | $4,000 spend, $40 each |
| Reachable (valid contact) | 62 | 38 bounce on bad number, dead line, or no answer after attempts |
| Genuinely interested | 31 | Half the reachable were tire-kickers, renters, or already-signed |
| Appointments set | 18 | Some interested never commit to a time |
| Appointments that hold | 12 | No-shows and reschedules eat the rest |
| Inspections done | 12 | |
| Sold | 4 | A 33 percent close on held appointments |
Four jobs from a hundred leads is a 4 percent lead-to-sale rate, which is normal-to-decent for shared storm leads. But look at where the labor went. Your rep dialed 100 records, drove to 12 inspections, and 88 of those records were never going to buy. If a filtering pass could have flagged even half of the 38 unreachable leads and a chunk of the obvious tire-kickers before dialing, the rep works a list of 70 instead of 100 and closes the same four jobs, with thirty fewer dead dials and the same windshield time pointed at live prospects. The close rate per worked lead jumps, morale holds, and you suddenly have capacity to actually call the good leads inside the five-minute window that matters.
The filtering does not create leads. It reallocates human attention from records that cannot pay to records that might. That is the entire game.
Filter the vendor before you filter the lead
The cheapest filter is the one you apply before any money moves. Most lead-quality problems are vendor-selection problems wearing a disguise, and contractors discover this only after three months and a few thousand dollars. Grade the vendor like you would grade a sub before handing them a tear-off.
Ask these questions in writing and keep the answers:
- Exclusive or shared, and if shared, how many buyers? Get the number, not an adjective. "Limited sharing" is not a number. If they will not cap it, assume it is unlimited.
- How is the lead generated? Organic search, paid search, social ads, sweepstakes, survey, co-registration, or a buyback from another aggregator? Each has a different floor on quality. Co-reg and sweepstakes leads sit near the bottom.
- What is the average lead age at delivery? Real-time leads delivered within minutes are worth multiples of a lead that sat for a week. Some "vendors" are reselling aged data dressed up as fresh.
- What is your return and credit policy? A vendor confident in their leads will credit bad numbers, wrong-service-area, and duplicates within a stated window. A vendor who credits nothing is telling you they expect a lot of bad ones.
- Can I geo-fence and filter by service type before delivery? You should be able to exclude ZIP codes you do not serve, exclude commercial when you only do residential, and so on. If every lead is national soup, walk.
- Will you show me a sample batch? Buy a small test batch, never a big contract, from any vendor you have not worked. Fifty leads tells you more than any sales call.
The return policy clause is the one contractors underweight. A 20 percent credit allowance on invalid leads is not generosity, it is a confession about defect rate, and it is also your single best lever. If a vendor offers no credits, your effective cost per usable lead is far higher than the sticker, because you are eating the cost of every dead record yourself. Model your cost per reachable, in-territory, right-service lead, not your cost per lead. Two vendors at $40 can have a 2x difference in real cost once you back out the junk.
Keep a running scorecard per vendor and revisit it monthly. Track, at minimum: contact rate, appointment rate, close rate, average lead age, dispute-credit rate, and revenue per lead. The vendor with the lowest cost-per-lead is frequently the worst vendor by revenue-per-lead. You will only see that if you measure it.
A worked vendor comparison
Numbers make the point that adjectives cannot. Here are two vendors, both charging $40 per shared lead, both selling you 100 leads in a month. On the invoice they look identical. On the scorecard they are not close.
| Metric | Vendor A | Vendor B |
|---|---|---|
| Leads delivered | 100 | 100 |
| Sticker cost | $4,000 | $4,000 |
| Reachable (valid contact) | 70 | 48 |
| In-territory and right service | 64 | 41 |
| Owner-occupied | 55 | 33 |
| Appointments held | 16 | 7 |
| Jobs sold | 6 | 2 |
| Average revenue per job | $11,000 | $11,000 |
| Revenue produced | $66,000 | $22,000 |
| Credits issued for bad leads | $480 | $0 |
| Net cost | $3,520 | $4,000 |
| Effective cost per job | $587 | $2,000 |
Vendor A and Vendor B carry the identical $40 sticker. Vendor A produces three times the revenue, refunds you for the junk, and ends up costing roughly a quarter as much per job won. If you only watched cost-per-lead, the two would look interchangeable and you might even prefer B if a salesperson shaved a dollar off the price. The scorecard is what exposes the gap, and the gap is the difference between a profitable lead program and a treadmill.
Notice the credit line too. Vendor A's policy returned $480 on invalid leads; Vendor B returned nothing, which is itself a signal that B knows its leads will not survive scrutiny. Always model the net cost after credits, never the sticker.
The intake scrub: what happens in the first sixty seconds
The moment a batch lands, before any name reaches a rep, it goes through an automated or semi-automated scrub. Think of this as the bilge pump: it removes water that should never have been in the boat. Everything here is mechanical and rules-based, so it scales and never has a bad day.
Run these passes in order:
Pass 1: Format and validity
- Phone validation. Run every number through a line-validation check. Flag disconnected, invalid-format, and landlines-that-are-actually-fax. A phone-validation API or even a CRM integration catches a meaningful share of dead numbers before a single dial. Many of the 38 unreachable leads in the math table above die right here, for free.
- Email validation. Syntax check plus a deliverability ping. A bouncing email often signals a fake form-fill.
- Address standardization. Run the address against a postal standardization service so "123 Main" becomes a real, deliverable address with a verified ZIP. Non-deliverable or PO-box-only addresses are flags, not necessarily kills.
Pass 2: Territory and service fit
- Geo-fence. Drop or quarantine anything outside your true service radius. Not your aspirational radius, your real one. A lead 70 minutes away that you will never profitably service is a kill, even though it is a perfectly real person.
- Service match. If the form said "gutters" and you only do roofs, route or kill. If it said "commercial" and you are residential-only, same.
- Property type. Flag obvious multifamily, mobile-home, or commercial parcels when they do not match your model.
Pass 3: Duplicates and recency
- Internal dedupe. Match the new batch against your CRM. A name you already quoted last month, already sold, or already marked do-not-contact should never re-enter the queue as a fresh lead. Match on phone and address rather than name alone, because spelling varies.
- Cross-vendor dedupe. If you buy from multiple vendors, the same homeowner shows up twice. Pay once, work once.
- Suppression list. Scrub against your do-not-call list and any prior opt-outs. This is a compliance step, not an optional one; the Telephone Consumer Protection Act and the FTC's Telemarketing Sales Rule govern how and when you can call, and the National Do Not Call Registry is not advisory.
Pass 4: Renter and ownership signal
This one quietly saves more wasted appointments than any other. A renter cannot authorize a roof replacement. If you can append an owner-occupancy signal from property records, a lead where the form-filler's name does not match the parcel owner gets flagged for an ownership-verification question before anyone drives out. You do not kill it automatically, because owners do live in homes titled to a trust or a spouse, but you stop sending reps to inspect roofs the occupant has no authority to replace.
At the end of the scrub, every lead carries flags. Nothing has been deleted that a human might want to review, but the obvious dead weight is quarantined and the survivors are clean enough to score.
Scoring: turn flags into a number a rep can trust
Flags tell you what is wrong with a lead. A score tells a rep what to do with it. The goal is a single, simple number, or a tier, that determines call order and effort. Do not overbuild this. A roofing lead score with eight inputs that a sales manager can explain on a whiteboard beats a 40-variable model nobody trusts and everyone overrides.
Here is a workable scoring frame. Assign points, set tier thresholds, and let the CRM sort the queue.
| Signal | Weight | Why it matters |
|---|---|---|
| Lead age at receipt (minutes vs days) | High | Speed-to-lead is the single biggest controllable factor in contact rate |
| Exclusive vs shared | High | Shared means a race; exclusive means a conversation |
| Source type (search vs incentivized) | High | Intent quality is set at generation |
| Valid, reachable phone | High | No contact, no sale; weight this heavily |
| Owner-occupied match | High | Renters cannot authorize the job |
| In-territory and right service | Gate | A gate, not a score; fail and it drops out |
| Roof age range (aging-out vs new) | Medium | An old roof is a real reason; a 3-year roof rarely is |
| Storm exposure at that address | Medium | A modeled hit gives the conversation a real hook |
| Stated problem specificity | Medium | "Active leak in bedroom" beats "just curious" |
| Property value / parcel data | Low | Rough proxy for ability to pay and job size |
Weight speed-to-lead and contactability the heaviest, because nothing else matters if you cannot reach the person and the people who reach them first usually win. Research on lead response across industries has consistently found that contact and qualification rates fall off a cliff when first contact slips from minutes to hours; in a shared-lead storm market where three competitors got the same name, the cliff is steeper.
Then sort into tiers:
- A (call now, best rep): fresh, exclusive or lightly shared, valid contact, owner-occupied, real stated problem, in territory. These get a call inside five minutes if humanly possible.
- B (call today, standard flow): solid but with one soft flag, an older shared lead, a vague problem, an unverified owner match. Worked, but after the A's.
- C (nurture, low effort): real person, weak intent, or an unverifiable signal. Drip email and text, a callback attempt or two, no rep drive-time until something warms up.
- D (quarantine / dispute): failed a gate, bad number, out of territory, duplicate, renter-confirmed. These never see a rep. Many become vendor credit disputes.
The tiering is what protects your closers. Your best salesperson should spend the morning on A leads, not democratically dialing everything. A democratic queue is how good reps end up with the same effective conversion as mediocre ones, because the queue, not the talent, decided the day.
A worked scoring example
Three leads land in the same batch. Watch how the same $40 spend produces three completely different next actions.
Lead 1. Came in 8 minutes ago from a paid-search ad for "hail damage roof inspection." Phone validates as a mobile, owner name matches the parcel, address is 15 minutes away, stated note says "shingles all over the yard after Tuesday's storm." Shared with one other contractor. This is an A. It gets a call before the rep finishes reading the note. Storm-modeled exposure at the address confirms a credible hail event Tuesday, which gives the rep a true, specific opening line.
Lead 2. Two days old, from a "see if you qualify for a roof program" social ad. Phone validates but the name does not match the parcel owner; the parcel is owned by a different surname. Address is in territory. Note is blank. This is a B at best, flagged for owner verification. The rep's first job on the call is to find out who actually owns the home, not to pitch. If it is a renter, it drops to D. If the occupant is a spouse on title, it climbs back to a real conversation.
Lead 3. Eleven days old, shared with five contractors, phone comes back disconnected, address is 65 minutes outside your normal radius, source is a sweepstakes co-registration. This is a D. It never gets dialed. It goes straight into the vendor dispute file as an out-of-territory, dead-number, over-shared lead, and it becomes a data point in next month's vendor scorecard.
Same price, three destinies. The filter, not the rep, made those calls, and it made them in seconds.
Where roof-level data changes the filter
Everything above filters on the person and the contact. The most valuable filter, and the one almost nobody applies to bought leads, is on the roof itself. A roofing lead is ultimately a bet that a specific roof needs work and the owner can be moved to act. Two of the strongest predictors of that, roof age and storm exposure, are knowable per address before you ever dial.
This is the gap RoofPredict is built to close. The platform looks at a specific address and returns a roof-age range estimated from aerial imagery, plus storm physics modeled per roof, so hail and wind exposure are scored for that individual structure rather than assumed for a whole ZIP. You can take a list, your bought leads, your own farm area, an existing CRM, and enrich every address with two signals that actually move close rates: roughly how old that roof is, and whether the storms that passed over plausibly wore it out.
For filtering bought leads, that does two concrete things.
First, it lets you deprioritize roofs that are unlikely to be due. A lead whose roof reads as roughly three to six years old, with no meaningful modeled storm exposure, is a weaker bet than a lead whose roof reads as eighteen to twenty-five years old or sits under a credibly modeled hail swath, even if both people filled out the same form with the same enthusiasm. Intent gets people to fill out forms; roof condition determines whether there is a job to sell. Bought leads almost never come with roof context, so adding it separates "curious homeowner with a near-new roof" from "homeowner whose roof is genuinely aging out."
Second, it gives your rep a specific, honest opening. "Our records suggest the roof on your home is in the range where shingles often start failing, and the storm that came through last week modeled as a real hail event over your block, so we wanted to offer a documented inspection." That is concrete, it is true to the data, and it is dramatically better than "we're in the area doing roofs."
Be honest about the limits, because pretending otherwise gets a rep embarrassed at the door. A roof-age estimate is a range, not a birth certificate; aerial imagery cannot see a permit. A storm model gives odds, not proof; it tells you a hailstone of damaging size plausibly fell on that roof, not that there is a hole in it. The value is not certainty. The value is that, across a batch of bought leads, you point your scarce drive-time at the addresses where age plus storm exposure say a real problem is most likely, and you stop treating every paid form-fill as if the roof behind it were equally worth seeing. The inspection still decides the truth. The filter just decides which roofs earn the inspection.
Used this way, roof data is the medium-weight tier in the scoring table above, layered on top of the contactability and ownership gates, not a replacement for them. A perfectly aged, storm-hit roof owned by a renter you cannot reach is still not a job.
Field-level filters: signals that kill a lead before the truck rolls
Some leads survive the scrub and even score as a B, then reveal themselves as dead the moment a human makes contact. Train reps to catch these on the call, before they commit windshield time, and to log the reason so the data feeds back into vendor grading.
The pre-drive disqualifiers:
- Renter confirmed. "I rent, you'd have to call the landlord." Get the owner's contact if offered, otherwise close the lead. Do not drive.
- Already signed. "We already had a company out and signed last week." On shared leads this is common and it is final. Log it as a speed-to-lead loss, which is a vendor-sharing problem worth tracking.
- No problem and no interest. "I just wanted to see prices, the roof is fine." If roof data and the homeowner both say the roof is fine, this is a nurture, not a visit.
- Wrong service entirely. They wanted a fence, a deck, solar, anything but a roof. Form mismatch; credit-dispute candidate.
- Out of real territory. The address that looked borderline on a map turns out to be 70 minutes with no other work nearby. Unless you are stacking appointments, the drive eats the margin.
- Hostile or fraudulent. "Stop calling me, I never filled out anything." Suppress immediately, and flag the lead to the vendor, because if the person never opted in, you have both a quality problem and a compliance problem.
The last one deserves weight. If a homeowner genuinely never submitted a form, the lead was fabricated or mis-sourced, and calling them anyway can put you on the wrong side of telemarketing rules. One or two of these from a vendor is noise. A pattern is a reason to terminate the contract and request credits in bulk.
A simple rep script for the qualifying call
Give reps a short, repeatable open that filters in the first thirty seconds without sounding like an interrogation:
- Confirm identity and ownership: "Hi, is this [name]? Great, and are you the owner of the home at [address]?" One question, two filters: right person, and owner vs renter.
- Confirm the trigger: "You reached out about your roof, what's going on with it?" Open-ended, surfaces the real problem or the lack of one.
- Anchor with data if you have it: "Our records show the roof is likely in the [range] age window, and there was a storm modeled over your area on [date]." Specific, honest, earns attention.
- Set the appointment or de-escalate: if there is a real roof and a real owner, book the inspection. If not, route to nurture and free up the rep.
The script is a filter wearing the clothes of a friendly call. By the time it ends, the rep knows whether to drive, and the CRM knows why.
Wiring the filter into your CRM so it runs itself
A filtering system that lives in a sales manager's head dies the first busy week. The whole apparatus has to live in the tools, firing automatically, so the discipline survives a flood of storm leads and a short-staffed Saturday. You do not need a custom build; most roofing CRMs and a couple of inexpensive integrations cover it.
The pieces, in the order a lead hits them:
- Ingestion with source tags intact. When a lead posts in from a vendor, capture the source, the vendor name, the shared/exclusive flag, and the timestamp as structured fields, not as a note. Everything downstream depends on those fields existing and being clean. If a vendor delivers by email or spreadsheet instead of a real-time post, you are already losing the speed game, and that itself is a vendor-grading data point.
- Automated validation on entry. Phone, email, and address validation should fire the instant a record lands, writing pass/fail flags back to the record. This is a webhook to a validation service, available off the shelf, and it is the single highest-leverage automation you can build.
- Dedupe and suppression on entry. Match against existing records and your do-not-contact list automatically. A matched duplicate or a suppressed number should be tagged and pulled from the active queue without a human deciding.
- Enrichment append. Owner-occupancy, parcel data, and roof-level signals like age range and storm exposure get appended as fields. The rep should see these on the record, not have to go look them up mid-call.
- Scoring and tiering. With the flags and enrichment in place, a scoring rule writes a tier (A/B/C/D) to the record and sorts the queue. The rep opens the CRM and the top of the list is already the right next call.
- Routing. A leads route to your strongest closers and trigger an immediate task and an SMS to the rep. C leads drop into an automated nurture sequence. D leads route to a dispute queue.
- Speed-to-lead alerting. An A lead that has not been contacted within your target window should escalate, pinging the rep and then the manager. The window is the asset; protect it with automation, because humans forget under load.
The payoff is that filtering stops depending on anyone's willpower. A new lead is scrubbed, enriched, scored, and routed before a person looks at it, and the person who does look at it is looking at the right lead at the right time with the context already on screen.
A note on speed versus thoroughness
There is a real tension here. The deepest filtering takes time, and time is exactly what a shared lead does not give you. The resolution is to split the work. The cheap, instant checks, phone validity, dedupe, suppression, territory, run in milliseconds at ingestion and never delay the call. The richer enrichment, full roof and storm modeling, parcel deep-dives, can run in parallel and populate the record within minutes, often before the rep finishes the first dial attempt. You never make a fresh, exclusive, problem-aware lead wait for analysis. You let the analysis catch up to it. The only leads you deliberately hold for deeper review are the borderline B's and C's where a few minutes changes the routing decision and speed was never going to win anyway.
The appointment is not the finish line: confirming and protecting holds
Filtering does not stop when an appointment gets set. Look back at the math table: of 18 appointments set, only 12 held. Six holds evaporated into no-shows and reschedules, and every no-show is a filtered-in lead that still wasted a drive. Treating the set appointment as the win is how good filtering leaks value at the last step.
Build a confirmation sequence that re-filters the appointment between booking and arrival:
- Immediate confirmation. A text and an email the moment the appointment is set, with the date, time, rep name, and what to expect. A homeowner who will not confirm a slot they just agreed to is telling you something.
- Day-before reconfirm. A short text asking them to reply to confirm. A non-reply is a soft flag; a "please reschedule" is better caught the night before than in your rep's windshield.
- Morning-of nudge. "Our inspector will be there at 2, reply if anything changed." Cheap, automated, and it converts a chunk of would-be no-shows into either a held appointment or an honest reschedule that frees the slot.
- Re-verify the trigger. If the lead was a storm lead, a quick line confirming the homeowner still wants the documented inspection keeps the reason fresh in their mind and surfaces the ones who have cooled off.
The goal is not to badger. It is to learn, before you spend the drive, which appointments are real. A homeowner who confirms twice and replies in the morning is a far stronger hold than one who went silent after booking. Route your rep's day accordingly, stacking confirmed holds and leaving soft ones as flexible backfills.
Compliance and ethics, briefly and seriously
Filtering touches consumer-contact law, so a short, plain word on staying clean. Honor the National Do Not Call Registry and your internal opt-outs; "we bought the lead" is not a defense if the person is on a suppression list or never consented. Keep records of where each lead came from and the claimed consent, because if a dispute arises, that paper trail is what protects you. Do not let an eager rep rationalize calling a number a homeowner asked you to stop calling.
If any of your filtering or pitching touches storm and insurance, hold a hard line on scope. A roofing contractor can inspect a roof, document damage thoroughly with photos and measurements, and write an accurate, itemized repair estimate aligned to standard estimating practice, then hand that documentation to the homeowner. The homeowner files their own claim, and the insurer decides what is covered. That is the lane.
What a contractor selling roofs may not do, for a fee, is negotiate or "handle" the homeowner's claim, interpret what their policy covers, promise a specific approval or payout, promise that the deductible will be waived or absorbed, advertise a "free roof," or otherwise represent the homeowner against their insurer. In most states that crosses into unlicensed public adjusting, and it is exactly the kind of promise that gets a roofing company sued or shut down. Filter and pitch on what you can stand behind: this roof is likely aged out, this storm modeled as a real event, we will document it thoroughly and write you an honest estimate. Let the homeowner and the carrier own the claim. Capturing storm intent is fine and smart; promising claim outcomes is not.
Building the loop: filtering is a system, not a one-time scrub
The last mistake is treating filtering as a setup task you do once. It is a loop. Every worked lead produces an outcome, and every outcome should sharpen the filter and the vendor scorecard.
Close the loop like this:
- Tag every disposition. Sold, lost-to-speed, renter, bad-number, no-problem, out-of-territory, fraud. Granular, consistent dispositions are the raw fuel for everything else.
- Roll dispositions up by vendor monthly. Which vendor's leads bounce on bad numbers most? Which produces the most already-signed losses, meaning they over-share? Which actually generates revenue per lead rather than merely cheap leads?
- Recalibrate the score. If owner-match turns out to predict closes better than you weighted it, raise its weight. If a source type you scored as B consistently closes like an A, promote it. The score should move with reality.
- Dispute on cadence. Bundle your invalid leads and submit credit requests inside the vendor's window every cycle. Contractors leave real money on the table by never disputing. The credit policy you negotiated up front only helps if you use it.
- Cut and concentrate. Fire the bottom vendor each quarter and move that spend to the top one. The difference between a disciplined buyer and a hopeful one is the willingness to actually cut.
Done consistently, the loop compounds. Your scrub catches more junk automatically, your score gets sharper, your worst vendor gets fired, and your reps spend an ever-larger share of their day in front of owners with aging, storm-worn roofs who can actually say yes. The lead spend barely changes. The output climbs, because attention finally flows to the roofs that deserve it.
What experienced buyers get wrong anyway
Even shops that filter make a predictable set of errors. Knowing them saves you a season of learning the hard way.
Treating cost-per-lead as the metric. Covered above, but it bears repeating because it is the most common and most expensive mistake. The cheapest lead is regularly the most expensive job. Manage to revenue per lead and effective cost per job won.
Letting reps override the tiering. A rep with a slow morning will cherry-pick the C list because those homeowners are friendlier and easier to talk to, friendly precisely because they have no urgent problem and no intent to buy. Discipline the queue. The score exists to stop a rep from confusing a pleasant conversation with a productive one.
Never disputing bad leads. Contractors negotiate a credit policy and then never file a single credit because the paperwork feels like a hassle. That is real money, often several hundred dollars a month, left sitting on the vendor's table. Automate the dispute queue and submit on a fixed cadence.
Chasing speed without quality, or quality without speed. Some shops obsess over five-minute response and call every record instantly, including the renters and dead numbers, which just means they reach junk faster. Others build a beautiful scoring model and then let A leads sit for an hour. You need both: instant cheap filtering to protect speed, and richer filtering to protect quality. Neither alone wins a shared-lead market.
Assuming intent equals condition. A homeowner who fills out a form enthusiastically still may have a perfectly good roof. Enthusiasm is not a leak. This is exactly why roof-level data matters: it separates the person who wants to talk from the roof that needs work, and only the second one becomes a job.
Buying big before testing small. Signing a 500-lead contract with a vendor you have never used is a way to discover their defect rate at maximum cost. Always start with a sample batch, score it, and earn your way into volume.
Forgetting that the same homeowner is being filtered by everyone. On a shared lead, three competitors are running their own version of this on the same person. The contractor who reaches the homeowner first, with the most specific and honest opening, usually wins regardless of who has the prettiest truck. Filtering buys you the speed and the specificity to be that contractor.
Putting it together
A bought roofing lead is a raw input, not a customer, and certainly not a job. Between the invoice and the install sits a filter, and the quality of that filter decides whether your lead budget funds revenue or funds windshield time. Grade the vendor before you sign. Scrub the batch mechanically the minute it lands, killing bad numbers, duplicates, out-of-territory records, and renters before a human is involved. Score what survives on speed, contactability, ownership, and roof reality, then route by tier so your best closers work your best leads first. Catch the dead ones on the qualifying call before the truck rolls. Feed every outcome back into the vendor scorecard and cut the laggards.
The roof-level layer is the piece most contractors are missing entirely. Knowing, before you dial, that an address holds a roof in the aging-out range under a credibly modeled storm tells you which paid leads are bets worth making and which are curious homeowners with near-new roofs. RoofPredict exists to put that age range and per-roof storm model on every address in your list, with the honest caveat that it gives you a range and odds, not certainty, the inspection still settles the truth. Used as one tier inside a real filtering system, it points your scarce, expensive human attention at the roofs most likely to become jobs. That is the whole point of filtering: not to buy better leads, but to make sure a person only ever touches the ones worth touching.
FAQ
Is it worth filtering leads I already paid for, or should I just work all of them?
Filtering is worth it precisely because you already paid. The lead cost is sunk; what filtering protects is your scarce, expensive resource, which is rep time and drive-time. Working a 100-lead batch democratically means your best closer burns hours on dead numbers, renters, and already-signed homeowners. A mechanical scrub plus a simple score lets the same rep close the same jobs while skipping 30 to 40 records that were never going to buy, which raises close rate per worked lead and protects morale.
What is the difference between shared and exclusive roofing leads, and does it change how I filter?
A shared lead is sold to multiple contractors at once, so speed-to-first-contact decides the outcome and you are racing competitors who got the same name. An exclusive lead is sold only to you, so you can have a real conversation. It absolutely changes filtering: shared leads should be weighted heavily on lead age and contactability and called within minutes, because a shared lead an hour old has likely already been pitched twice. Always get the actual number of buyers from the vendor, not a vague adjective.
How do I scrub bad phone numbers from a batch before my reps start dialing?
Run every number through a line-validation check, available through phone-validation APIs and many CRM integrations, which flags disconnected lines, invalid formats, and mismatched line types. Pair it with email deliverability checks and postal address standardization. This pass is mechanical and cheap, and it removes a meaningful share of the unreachable leads in any batch before a single dial, which is also the foundation for your vendor credit disputes.
How can I tell if a lead is a renter who cannot authorize a roof replacement?
Two layers catch most renters. First, append an owner-occupancy signal from property records during the scrub and flag any lead where the form-filler's name does not match the parcel owner. Do not auto-kill these, because spouses and trusts create legitimate mismatches, but route them for verification. Second, train reps to confirm ownership in the very first line of the qualifying call: 'Are you the owner of the home at this address?' That single question filters renters before any windshield time is spent.
What questions should I ask a lead vendor before buying?
Get answers in writing to: exclusive or shared and how many buyers if shared; how the lead is generated, meaning organic search versus sweepstakes versus co-registration; average lead age at delivery; the return and credit policy for bad numbers and out-of-territory leads; whether you can geo-fence and filter by service type before delivery; and whether they will sell a small sample batch first. The credit policy answer doubles as a confession about their defect rate.
How does roof age data help me filter bought leads?
Intent gets a homeowner to fill out a form, but roof condition determines whether there is a job to sell, and bought leads almost never include roof context. Estimating roof age as a range from aerial imagery lets you deprioritize leads whose roofs read as near-new with no storm exposure and prioritize roofs that are aging out or sit under a modeled storm. It is a range, not a permit date, so it sharpens which addresses earn an inspection rather than replacing the inspection itself.
Can storm data tell me which bought leads are most likely to have damage?
Storm modeling gives you odds, not proof. Per-roof storm physics estimates whether hail of a damaging size or wind plausibly hit a specific structure, which is far more precise than assuming a whole ZIP got hit equally. For filtering, a credibly modeled storm over an address raises that lead's priority and gives the rep a true, specific opening line. It does not confirm there is a hole in the roof; only an inspection does that. Treat it as a strong prioritization signal, not a guarantee.
Am I allowed to call leads I bought if they are on the Do Not Call list?
Buying a lead does not override consumer-contact law. You must honor the National Do Not Call Registry and any prior opt-outs, and you should scrub each batch against suppression lists as part of intake. Keep records of where each lead came from and the claimed consent, because that paper trail protects you in a dispute. If a homeowner says they never submitted a form, suppress the number immediately and flag the vendor, because you have both a quality and a compliance problem.
How should I score leads so my best reps get the best ones?
Build a simple tiered score weighted heavily on speed-to-lead and contactability, then layer ownership match, source quality, in-territory and right-service gates, and roof-level signals like age range and storm exposure. Sort into tiers: A leads get a call within minutes from your best rep, B leads get worked the same day, C leads go to a low-effort nurture drip, and D leads are quarantined or disputed and never reach a rep. The tiering, not the rep's mood, decides where talent is spent.
How do I know if a lead vendor is selling me low-quality or recycled leads?
Tag every lead's disposition consistently, then roll them up by vendor monthly. Watch for patterns: high bad-number rates suggest stale or fabricated data, high already-signed losses suggest heavy over-sharing, and old average lead age suggests recycled aged leads dressed as fresh. Compare vendors on revenue per lead, not cost per lead, because the cheapest vendor is often the worst by revenue. A clear pattern of fabricated or out-of-territory leads is grounds to dispute in bulk and terminate.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- FTC Telemarketing Sales Rule — ftc.gov
- National Do Not Call Registry — donotcall.gov
- FTC: Lead Generation business guidance — ftc.gov
- FCC: Telephone Consumer Protection Act rules — fcc.gov
- NRCA: National Roofing Contractors Association — nrca.net
- IBHS: Insurance Institute for Business & Home Safety — ibhs.org
- NOAA National Weather Service: Storm Prediction Center — spc.noaa.gov
- NOAA Storm Events Database — ncdc.noaa.gov
- OSHA: Roofing and fall protection standards — osha.gov
- International Residential Code (ICC) — iccsafe.org
- U.S. Census Bureau: American Housing Survey — census.gov
- Texas Department of Insurance: Public adjuster licensing — tdi.texas.gov
- Bureau of Labor Statistics: Roofers occupational outlook — bls.gov
- RoofPredict — roofpredict.com
Related Articles
How to Avoid Driving to Homes That Just Got a New Roof
Wasted drive time on fresh roofs quietly eats your canvass budget. Here is how to filter them out before a rep ever turns the key.
Roofing Revenue Per Lead vs Cost Per Lead: The Only Math That Tells You Where to Spend
Most roofers chase cheap leads and lose money on them. Here is how to measure revenue per lead next to cost per lead, by source, so you spend where the jobs actually come from.
How to Get to Aging Roofs Before Competitors Knock Them
The crews that win restoration and replacement work aren't faster talkers. They get to the worn-out roofs first. Here's how to find them, rank them, and knock them before anyone else does.