The Cheapest Way to Get Roofing Leads Online (Without Renting Them Forever)
On this page
When a roofer asks for the cheapest way to get roofing leads online, the honest answer starts with a correction: the cheapest lead is almost never the one with the lowest sticker price. A $35 shared lead from an aggregator can be the most expensive contact you ever touch once you account for the three other roofers it was sold to, the no-shows, the price shoppers, and the gas your reps burn driving to dead doors. Meanwhile a channel that costs you nothing per click can quietly become your most expensive acquisition source if it never produces a signed contract.
So the real question is not "what is the lowest price per lead." It is "what produces the lowest cost per booked, profitable job, and keeps getting cheaper the longer I run it." That distinction is the whole game. Rented channels (lead marketplaces, pay-per-lead vendors, most paid ads) reset to full price every single month. Owned channels (your site, your reviews, your past-customer list, a data-built target list you mail or knock) cost real effort up front and then compound. The cheapest way to get roofing leads online, over any horizon longer than one quarter, is to shift your mix away from the channels you rent and toward the assets you own.
This breaks down every low-cost online channel a roofing contractor can actually use, ranks them by true cost per job rather than cost per lead, shows the math with worked examples, and walks through the specific workflows that get your number down. It also covers the part most articles skip: how to find the homeowners worth contacting in the first place, because the cheapest lead source on earth is wasted if you point it at the wrong roofs.
The number that actually matters: cost per booked job
Every roofer who has bought leads knows the trap. The vendor quotes a price per lead. You compare it to another vendor's price per lead. You pick the cheaper one. Six months later you cannot figure out why you are busy but not making money.
The price per lead is a vanity number. The number that pays your crews is cost per booked job (sometimes called cost per acquisition, or CAC). To get there you have to walk a contact through a funnel and apply the drop-off at every stage:
Leads (contacts) → Qualified → Inspections booked → Inspections held → Signed jobs
Here is the formula in plain terms:
Cost per booked job = Total channel spend ÷ Number of signed jobs from that channel
Not leads. Jobs. The moment you measure this way, the rankings flip. Let me show you with two channels side by side, using deliberately conservative numbers you can sanity-check against your own books.
Channel A — a shared aggregator lead at $45 each. Say you buy 100 of them for $4,500. Shared leads are sold to multiple roofers, so contact and quality are poor. A realistic funnel:
| Stage | Rate | Count |
|---|---|---|
| Leads purchased | — | 100 |
| Reached / qualified | 55% | 55 |
| Inspection booked | 40% of qualified | 22 |
| Inspection held (no-shows happen) | 75% | 16 |
| Signed | 25% of held | 4 |
Four jobs from $4,500 is $1,125 per booked job — and that is before you count the labor hours your reps spent chasing the 96 contacts that did not close.
Channel B — a Google Business Profile that ranks in your city. It costs you time, not cash per lead. Say you invest a weekend setting it up plus a few hours a month, and it produces 12 inbound calls in a month from people actively searching "roof repair near me." These are high-intent and exclusive to you.
| Stage | Rate | Count |
|---|---|---|
| Inbound calls | — | 12 |
| Qualified | 75% | 9 |
| Inspection booked | 70% | 6 |
| Inspection held | 85% | 5 |
| Signed | 45% of held | 2 |
Two jobs from roughly $0 in per-lead cost. Even if you value your time at $500 for the month, that is $250 per booked job, and next month the profile keeps producing without you paying again.
This is the entire argument in two tables. The aggregator looked cheap at $45. It cost you $1,125 a job. The "free" profile cost you a fraction of that per job and gets cheaper every month it ages. Whenever someone sells you on a price per lead, do this conversion before you believe a single thing they say.
Why "cheap" leads are usually the most expensive
Before ranking the good channels, it is worth being precise about why the obvious cheap option backfires, because the failure modes repeat across every low-quality source.
You are paying for resale. Most marketplace leads are non-exclusive. The same homeowner's form gets sold to three to five contractors. You are not buying a lead; you are buying a coin-flip race to the phone against four other roofers, and the homeowner now expects a bidding war. Your close rate craters and your margin gets shredded by the discounting required to win.
The intent is shallow. A lot of cheap leads come from incentive offers, contests, or content bait — "enter to win a roof inspection." The person filling that out is not in-market the way someone typing "hail damage roofer" into Google is. Intent is the single biggest predictor of whether a contact becomes a job, and the cheapest leads almost always have the weakest intent.
You inherit no relationship. When you rent a lead you get a name and a phone number with zero context. You do not know the roof's age, whether it was already replaced, whether the home took a storm, or whether the person is a serious buyer or a tire-kicker collecting three quotes. You are flying blind, which means you waste inspections.
It resets to full price every month. This is the structural problem. Rented channels never compound. A dollar you spend on a marketplace lead in June buys nothing in July. A dollar you spend building your Google profile, earning a review, or enriching a target list keeps working for years. Over a 24-month horizon the rented channel is almost always the most expensive way to get a job, even when its per-lead price is the lowest.
None of this means you should never buy a lead. Bought leads can fill a gap when your owned channels are still warming up. It means you should price them honestly, work them with a tight cadence so you actually win the resale race, and treat them as a bridge, not a foundation.
The cheapest online channels, ranked by true cost per job
Here is the practical ranking. "Cheapest" here means lowest cost per booked, profitable job over a 12-to-24-month horizon — not lowest sticker price. Your market will shift the order, but this is the right shape for most residential roofers.
1. Your own past-customer and dead-lead list (effectively free)
The cheapest roofing leads online are the ones already sitting in your CRM and your email. Every estimate you ever sent that did not close, every repair customer from five years ago, every "call me in the spring" — those are warm contacts who already know your name and never cost you a cent to acquire again.
The catch most roofers miss: a list of 800 old customers is not 800 leads. Some of those roofs were replaced last year and will not be due again for two decades. Some were 18 years old when you quoted them and are now squarely due. The value is in the segmentation, not the raw count. More on the workflow for this below — it is the single highest-ROI thing most established roofers are ignoring.
Cost per job here is dominated by your time and a few stamps or emails. It is routinely the lowest of any channel because the relationship already exists.
2. Google Business Profile + local organic search (free to set up)
When a homeowner has a leak or sees a missing shingle after a storm, they pull out their phone and search. Showing up in the local map pack and organic results for "roof repair [your city]" puts you in front of people at the exact moment of highest intent, and it costs nothing per lead.
This is the highest-leverage free online channel for a local roofer. The work:
- Claim and fully complete your Google Business Profile. Real address (or service-area setup), correct categories (Roofing Contractor as primary), service list, hours, and a steady stream of photos from real jobs. Per Google's own guidance, complete and active profiles rank better and convert more.
- Earn reviews systematically. Ask every happy customer the day you collect final payment, with a direct link. Respond to all of them. Reviews are both a ranking factor and the thing that makes a stranger pick you.
- Post job photos regularly. Before/after shots of real roofs in named neighborhoods signal activity and relevance.
- Build a few real service-area and service pages on your website so organic search has something to rank. A page on "storm damage roof inspections in [city]" that genuinely helps a homeowner will pull traffic for years.
None of this is instant. It takes weeks to months to mature. But once it ranks, it produces exclusive, high-intent inbound at near-zero marginal cost, which is exactly the compounding profile you want.
3. A data-built target list you mail or knock (low cost, high control)
This is the channel most roofers underuse, and it is where the cheapest-per-job math gets genuinely interesting. Instead of waiting for inbound or renting someone else's leads, you go directly to the homes most likely to need a roof — ranked by roof age and storm exposure — and reach them with a tracked postcard or a door knock.
The reason this beats renting leads on cost per job: you control the targeting and you own the audience. A postcard costs well under a dollar to print and mail. If you send 1,000 pieces to a list you picked at random, you will get a weak response. If you send those same 1,000 pieces only to homes whose roofs are in the "due" or "overdue" age band and that sit inside a recent storm footprint, the response rate climbs and your cost per booked job drops, because you stopped paying to reach roofs that were replaced two years ago.
The difference between blanket every-door mail and targeted mail is enormous, and it comes down entirely to the quality of the list. That is the piece worth investing in, and it is where a targeting platform earns its keep — covered in detail in the workflow sections below.
4. Local Services Ads / Google Ads (rented, but exclusive and measurable)
Paid search is renting, but it is the good kind of renting when done right, because the intent is high and you only pay when someone actively searching clicks or contacts you. Local Services Ads (the "Google Guaranteed" units at the top) charge per lead but are exclusive to you for that contact — a real advantage over shared marketplace leads.
The trap is letting cost per lead drift up. The levers that keep it cheap:
- Tight geographic targeting. Do not pay for clicks 40 miles outside your profitable service radius.
- Negative keywords. Block "roofing jobs," "roofing salary," "DIY," and material-shopping terms that waste budget.
- Match the landing page to the search. Someone searching "emergency roof leak" should not land on your generic homepage.
- Track to booked job, not to click. A campaign with a higher cost per click can have a lower cost per job if its intent is better.
Paid search will never be the lowest sticker price, but as a measurable, exclusive, intent-driven channel it can deliver a defensible cost per job — and unlike a marketplace lead, you control every variable.
5. Referral and reputation loops (free, slow to build, durable)
Referrals are the cheapest leads in the trade and the hardest to manufacture on demand. You build the engine by doing good work, asking for the referral explicitly, and making it easy — a simple "if you know a neighbor who needs a roof, here's a card." Online, this shows up as reviews, neighborhood-app recommendations, and word of mouth amplified by your Google profile. It compounds slowly and then dominates. There is no per-lead cost, only the cost of being worth referring.
Where bought marketplace leads land
At the bottom for cost per job, despite the low sticker price, sit shared marketplace and pay-per-lead aggregators — the Angi/HomeAdvisor-style sources. They have a place as a temporary bridge while your owned channels warm up, and they can work if you have a ruthless five-minute callback cadence to win the resale race. But priced honestly by cost per booked job, they are usually your most expensive option, not your cheapest.
Worked example: rebuilding a roofer's lead mix to cut cost per job
Numbers make this concrete. Take a residential roofer doing $1.8M a year, average job size $14,000, currently buying most of their leads. Here is a realistic before/after when they shift the mix toward owned channels. (These are illustrative planning numbers to show the method, not a promise — plug in your own.)
Before — 90% bought leads:
| Channel | Monthly spend | Jobs/mo | Cost per job |
|---|---|---|---|
| Shared marketplace leads | $6,000 | 5 | $1,200 |
| Google profile (neglected) | $0 | 1 | ~$0 |
| Total | $6,000 | 6 | $1,000 |
After — mix rebalanced over six months:
| Channel | Monthly spend | Jobs/mo | Cost per job |
|---|---|---|---|
| Past-customer / dead-lead mining | $300 | 2 | $150 |
| Google profile + local SEO | $400 | 3 | $133 |
| Targeted direct mail (data-built list) | $1,500 | 3 | $500 |
| Local Services Ads (exclusive) | $1,800 | 2 | $900 |
| Marketplace leads (bridge only) | $1,200 | 1 | $1,200 |
| Total | $5,200 | 11 | $473 |
Same trade, slightly less total spend, and the blended cost per job fell from $1,000 to $473 — while nearly doubling job volume. The mechanism is simple: every dollar moved from a rented channel to an owned one buys more jobs this month and keeps buying them next month. The marketplace line did not disappear; it shrank to a bridge. That is what "cheapest" actually looks like when you measure it right.
The compounding math: why owned beats rented over 24 months
The single-month tables above understate the case for owned channels, because they ignore time. Rented and owned channels behave completely differently as the months stack up, and the gap is what makes "cheapest" a moving target.
Think of two roofers who each commit $2,000 a month for two years.
Roofer A spends it all on shared marketplace leads. Month 1 buys roughly 44 leads at $45 and, at the funnel from earlier, books about 2 jobs. Month 24 buys the same 44 leads and books about the same 2 jobs. There is no accumulation. The 24th dollar buys exactly what the 1st dollar bought. Total over two years: roughly 48 jobs, and on the day the spend stops, the pipeline goes to zero the following week. Roofer A never built anything; they rented the whole time.
Roofer B spends it on owned assets — profile and reviews, CRM reactivation, and a data-built mail list. Month 1 is slow; the profile is not ranking yet, the reviews are thin, and the first mail drop is learning which neighborhoods respond. Maybe 1 to 2 jobs. But by month 6 the profile is in the map pack producing free inbound, the review count is compounding trust, the mail list has been refined to the highest-yield areas, and the reactivation cadence is catching past customers exactly as their roofs come due. By month 12 the same $2,000 is producing well more jobs than it did in month 1, and a chunk of the volume — the inbound and referral share — costs nothing per lead at all. When Roofer B pauses spend, the owned assets keep producing for months because the profile still ranks and the reviews still convert.
The practical lesson is not "never rent." It is that the order of your dollars matters. Early in a roofer's life, or during a cash crunch, rented leads are a reasonable bridge to keep crews fed while owned assets warm up. But every month you should be moving the marginal dollar from the channel that resets to the channel that compounds. Do that consistently and your blended cost per job trends down quarter over quarter — the opposite of the experience most roofers have, where cost per lead creeps relentlessly up because they never stopped renting.
The mistake underneath all of it: contacting the wrong roofs
Here is what ties every channel together. The cheapest possible lead source is worthless if you point it at homes that do not need a roof. Most wasted roofing marketing spend — across mail, knocking, and even ads — comes from one thing: reaching roofs that are too new to replace, were already replaced, or never took damage.
A roof has a replacement window. Asphalt shingle roofs generally run on the order of 15 to 30 years depending on material grade, climate, and installation. A home built in 2009 with an original architectural roof is approaching the front edge of that window in many climates; a home re-roofed in 2022 is dead weight on your list for the next two decades regardless of how the house looks from the street. Year built is not roof age — a 1985 house may have been re-roofed twice. The roof you can see from the curb tells you almost nothing reliable about whether it is one year or fourteen years old.
So the single highest-leverage move for getting cheaper leads is not switching channels. It is improving your targeting within every channel:
- Mail only the homes whose roofs are likely in the due/overdue band.
- Knock the streets where roof age and storm exposure stack up, and skip the subdivisions that re-roofed three years ago.
- Call the past customers whose roofs are coming due now, not the whole database.
That is the difference between a $1,000 cost per job and a $400 one. The list is the lever.
Where RoofPredict fits: turning targeting into the cheapest channel you own
The channels above all get cheaper when you aim them better, and aiming them better is a data problem. This is what RoofPredict was built to solve for roofing contractors, so it is worth being specific about what you actually do with it rather than hand-waving about "targeting."
Build a ranked, due-roof target audience instead of guessing. RoofPredict scores every home in a service area by roof-age band — recent, mid-life, due, or overdue — layered with per-roof storm exposure, and rolls those into an opportunity score. You draw your territory on a hex map or import a CSV of addresses, filter to homes whose roofs are likely due or that sit in a recent storm footprint, and get a house-by-house ranked list with a "why this home" evidence chain (age band, storm history, cost-of-waiting). Instead of mailing 5,000 random homes, you mail the 1,200 most likely to convert. That is the mechanism that drops cost per job: you stop paying to reach roofs that were replaced last year. Be clear-eyed about the limits — this is roof-age and storm-exposure heuristics, not a guarantee, and roof age is a range, not an exact install date. It tells you which homes are worth the contact, not that any specific roof is dead.
Turn that list into tracked, cheap outreach. From the ranked list, RoofPredict turns the due-roof segment into a tracked direct-mail campaign — personalized mail proofs with brand, copy, and address checks, vendor release, per-piece delivery and return tracking, and a cost quote before you commit. Every targeted home also gets a personalized microsite and PDF report (roof profile, storm history, risk and cost-of-waiting) with a lead-capture form, plus per-home and lookup QR codes you can drop on the postcard or a door hanger. So a single piece of mail under a dollar can route an interested homeowner to a page built specifically for their address. For the field, you build door-knock routes from the same ranked list, assign canvassers, and run a mobile app with next-stop, outcome forms, and a leave-behind QR — so reps knock the high-yield doors and skip the dead ones.
The honest pitch is this: RoofPredict does not magically make leads free. It makes the channels you already control — mail, knocking, your own list — dramatically cheaper per job by cutting the waste out of the targeting, and it gives you the tracking to prove it.
Mining the cheapest list you already own: your CRM and dead leads
The lowest cost-per-job channel for any established roofer is the contacts already in the house. Here is the workflow to actually extract jobs from it, step by step.
1. Pull everything into one place. Export past customers, every old estimate that never closed, and every "not now" lead. Most roofers have these scattered across a CRM, a spreadsheet, an inbox, and a notebook. Consolidate.
2. Append roof context. A name and address is not enough — you need to know which of these roofs is actually due now. For a past replacement customer, you know roughly when the roof went on, so you know when it is due again. For an old estimate, the roof was some age when you quoted it; add the years since. Where you do not have install dates, enrich the list with roof-age-band and storm-exposure data so you can rank it.
3. Segment by likelihood the roof is due. Sort into buckets: due/overdue now (call this week), coming due in 1–3 years (nurture), and recently replaced (suppress — do not waste a contact). The recently-replaced suppression is as valuable as the due bucket; it stops you from annoying customers and burning postage.
4. Run a tight reactivation cadence on the due bucket. A sequence of a personal email, a postcard, and a phone call over two to three weeks. The message is not "buy a roof." It is "your roof is getting to the age where it's worth a quick look — want me to come out?" You already have the relationship; you are just timing the contact to when the roof is due.
5. Track first-touch source so you never lose attribution. When one of these reactivated contacts becomes a job, you want it credited to your owned list, not muddied into your paid channels.
In RoofPredict terms, this maps to the lead pipeline (new → contacting → appointment → inspected → won/lost) with an immutable first-touch source, plus two-way sync to 13 CRMs including HubSpot, ServiceTitan, JobNimbus, AccuLynx, Jobber, Housecall Pro, Salesforce, Pipedrive, Leap, Roofr, SalesRabbit, and CompanyCam (and Zapier/CSV for anything else). You enrich the existing CRM records with roof-age and storm context, score which contacts are due now, and work them through the pipeline — so the cheapest list you own actually produces jobs instead of going stale. If you run JobNimbus or AccuLynx today, the sync means you do not rip out your system to do this; the enriched, scored contacts flow back into the CRM your crews already use.
Proving a channel is cheap: the results funnel
You cannot manage cost per job if you cannot see it. The reason roofers keep buying expensive leads is that they never measured the alternative. Build the measurement and the cheap channels reveal themselves.
Track each channel through the full funnel:
Delivered / impressions → Views → Form fills / calls → Leads → Inspections → Wins
And compute, per channel:
- Cost per lead (sanity check only)
- Cost per booked inspection
- Cost per win (the number that matters)
- Revenue per dollar spent
The channel with the lowest cost per win is your cheapest source, full stop — regardless of its per-lead price. Run this for 90 days across mail, your profile, paid search, and your reactivation list, and the budget reallocation will be obvious.
RoofPredict's results funnel does exactly this: a delivered → views → form → calls → leads → wins view with cost-per-lead and cost-per-win, plus actual-versus-estimate-versus-industry-benchmark so you can see whether a campaign beat its projection, and A/B campaign variants so you can test two postcards or two offers and keep the cheaper winner. The point is to stop guessing which channel is cheapest and start proving it with your own numbers.
Storm leads online, the honest and legal way
A huge slice of "cheap online roofing leads" searches are really about storm work, so it is worth being precise here — both about how to find storm-damaged homes cheaply and about the lines you cannot cross.
Finding the homes is a data exercise, not a lead purchase. After a hail or wind event, you do not need to buy a storm lead list. You can identify the neighborhoods inside the storm footprint, cross them against roof age, and prioritize the homes most likely to have both damage and an aging roof. Public hail and wind data (from the National Weather Service and the Storm Prediction Center) plus roof-age scoring gets you a ranked canvass and mail list at a fraction of the cost of buying storm leads. RoofPredict's storm-hit filtering plus roof-age ranking is built for exactly this: filter your territory to storm-exposed, due-roof homes and you have a target list ready to mail or knock the same week.
Now the hard line, because getting this wrong is both illegal and a way to lose your license. As a roofer you may inspect a roof, document damage thoroughly with photos and measurements, and prepare an accurate repair estimate for your own scope of work. You may state facts about your scope to the carrier. What you may not do, for a fee, is negotiate or "handle" the homeowner's insurance claim, interpret their policy or coverage, promise a specific payout or approval, promise that their deductible will be waived or absorbed, advertise a "free roof," or represent the homeowner against their insurer. That last set of activities is unlicensed public adjusting, and several states' departments of insurance (Texas's TDI among them) actively enforce it.
The safe frame in your marketing and at the door: you document the damage, write an accurate, Xactimate-aligned repair estimate, and hand it to the homeowner. The homeowner files the claim and the insurer decides coverage. Your role is documentation and an honest estimate — never claim handling. Avoid "we'll get your roof approved," "we waive your deductible," and "free roof" entirely; they are the phrases that draw regulatory attention and erode trust. A forecast of damage is odds based on storm data, not proof that a specific roof is damaged — say it that way.
Keeping your storm outreach on the document-and-estimate side is more than compliant; it converts better, because homeowners are wary of the deductible-waiver pitch and trust a contractor who documents honestly.
Recovering money you already earned: the claims revenue you are leaving online
There is a second meaning of "cheaper leads" that established storm roofers should not ignore: revenue you already won but never collected. On insurance work, money leaks out of approved claims through missed supplements, unbilled code-required items, and recoverable depreciation that never gets released. Recovering that is, in effect, free revenue — you already paid to acquire the job; you are just collecting all of it.
This is where RoofPredict's RoofClaim handles the claim revenue cycle, strictly on the documentation side. You intake a claim linked to the home, upload the carrier and contractor estimates, photos, denial letters, and invoices, and the system OCRs and auto-classifies them. Opportunity detection maps the estimate's line items against a roofing knowledge base and flags missing scope, code-required items, and missed supplements — each with an evidence anchor and pricing — so your supplement manager is not eyeballing a scope sheet hoping to catch the drip edge or ice-and-water line that got dropped. A recoverable-depreciation autopilot tracks the completion-evidence and final-invoice checklist so depreciation releases do not die in a folder, deductible tracking keeps that straight, and supplement aging with a follow-up cadence and packet-completeness scoring keeps pending supplements moving like receivables instead of going stale.
Everything runs on locked, UPPA-gated, contractor-documentation-only templates — supplement packets, depreciation-release letters, deductible invoices, missing-docs letters, audit reports — so the output stays on the document-and-estimate side of the legal line. You are documenting your own scope accurately and handing it over; you are not negotiating the claim or interpreting coverage. For a roofer already doing storm work, plugging these leaks is often a bigger dollar gain than buying another batch of leads, and it costs you nothing to acquire because the jobs are already won.
Squeezing the most out of the free channel: Google Business Profile and local search
Of the no-cash channels, your Google Business Profile and the local search results around it have the highest ceiling, so it is worth going a level deeper than "claim your profile." The roofers who win here treat it like a job site that needs regular attention, not a one-time setup.
Categories and services drive what you show up for. Set Roofing Contractor as your primary category, then add the secondary categories that genuinely apply (for example a gutter or skylight category if you do that work). Fill out the services list with the specific jobs you want — roof repair, roof replacement, storm damage inspection, leak repair — because Google uses these signals to decide which searches you surface for. A thin profile with one category competes for far fewer searches than a complete one.
Reviews are the lever, and recency matters. A profile with 80 reviews where the last one was a year ago looks dormant; one with 40 reviews where three landed last month looks alive. Build a habit: the day you collect final payment, text the customer a direct review link with a one-line ask. Respond to every review, positive or negative, in a calm professional voice — that response is read by the next prospect deciding whether to call you. Over a year this single habit can move you from page two into the map pack for your city, which is the difference between zero inbound and a steady trickle of exclusive, high-intent calls.
Photos signal activity and relevance. Upload before-and-after shots from real jobs, ideally tagged with the neighborhood. A homeowner two streets over who sees you just did the house around the corner is primed to call. Google also reads photo activity as a freshness signal.
Back it with a few real website pages. Your profile ranks better when it points to a site that genuinely answers homeowner questions. Build a handful of service-area pages ("roof repair in [city/suburb]") and one or two honestly helpful articles — what a homeowner should check after a hailstorm, how to tell whether a roof needs repair or replacement. These rank in organic search for years and feed your profile authority. This is slow-compounding work: nothing happens in week one, and then six months in it is quietly producing some of your cheapest jobs of the year.
The reason this channel sits so high on the cost-per-job ranking is that, once it matures, the marginal cost of the next lead is essentially zero. You are not paying per click or per lead; you are harvesting intent that already exists in your market. Pair it with the data-built target list — inbound for the homeowners already searching, outbound mail and knocking for the due roofs who are not searching yet — and you cover both halves of demand without renting a single lead.
A 90-day plan to lower your cost per roofing lead online
Here is a concrete sequence to move from renting leads to owning cheaper channels, without going dark on revenue while you transition.
Days 1–30 — measure and harvest the free stuff.
- Stand up the funnel measurement so every channel reports cost per win, not cost per lead.
- Fully complete and optimize your Google Business Profile; start asking every closed customer for a review with a direct link.
- Export your CRM, old estimates, and dead leads into one list. Begin enriching and segmenting by roof-age likelihood.
- Keep your current bought-lead spend running as the bridge — do not cut revenue yet.
Days 31–60 — launch your owned outreach.
- Run the reactivation cadence on the due bucket from your CRM (email + postcard + call).
- Build a data-ranked target list for one or two neighborhoods (roof age + storm exposure) and send a tracked, targeted mail drop with a microsite/QR landing page.
- If you run paid search, tighten geo-targeting, add negative keywords, and point ads at intent-matched landing pages.
- Watch cost per win by channel as the data comes in.
Days 61–90 — reallocate toward the cheapest sources.
- Compare cost per win across all channels. Cut or shrink the most expensive (usually shared marketplace leads).
- Double down on the two cheapest-per-job channels the data exposed — typically your reactivation list and targeted mail/local search.
- Stand up A/B variants on your best channel to keep grinding the cost down.
- On storm work, audit recent approved claims for unbilled supplements and unreleased depreciation — collect the revenue you already earned.
Follow this and the marketplace line on your budget shrinks every month while job volume holds or grows, because you are steadily replacing rented leads with assets you own.
What pros get wrong, in one list
- Comparing cost per lead instead of cost per booked job. The single most expensive mistake. Always convert to cost per win before deciding anything.
- Treating "free" as actually free. A free channel that never closes is infinitely expensive. Measure it.
- Mailing or knocking by gut. Random targeting wastes most of the spend. The roof you see from the street is not its age.
- Letting paid search drift. No negatives, loose geo, generic landing pages — cost per lead creeps up and nobody notices.
- Ignoring the CRM. The cheapest list you will ever own is the one you already have, and most roofers never work it systematically.
- Crossing the UPPA line on storm work. "Free roof," "we waive your deductible," and "we'll get it approved" are legal liabilities and trust-killers. Stay on document-and-estimate.
- Leaving claim money on the table. Missed supplements and unreleased depreciation are revenue you already paid to acquire. Collecting it is cheaper than any lead.
The bottom line
The cheapest way to get roofing leads online is not a single tactic — it is a shift in how you think about cost. Stop comparing sticker prices on rented leads and start measuring cost per booked, profitable job across every channel. The sources that win that comparison are almost always the ones you own and that compound: your past-customer and dead-lead list, your Google profile and local search presence, and a data-built target list you mail or knock with surgical precision. Rented channels stay in the mix as a bridge, priced honestly and worked with a tight cadence.
The lever underneath all of it is targeting. Point any channel at the homes most likely to actually need a roof — ranked by age and storm exposure, with the recently-replaced homes suppressed — and your cost per job falls no matter which channel you use. That is the work RoofPredict is built for: ranking the due roofs in your territory, turning them into tracked mail and microsites and field routes, syncing it all to the CRM your crews already run, proving the cost per win with a results funnel, and — on storm work — recovering the claim revenue you already earned, all on the safe side of the documentation line. Build the owned assets, measure honestly, and the cheapest leads stop being something you buy and start being something you own.
FAQ
What is genuinely the cheapest way to get roofing leads online?
Measured by cost per booked job rather than sticker price per lead, the cheapest sources are the ones you own and that compound over time: your past-customer and dead-lead list, a complete Google Business Profile with steady reviews, and a data-built target list you mail or knock. These cost mostly effort up front and then keep producing at near-zero marginal cost, which beats rented leads that reset to full price every month.
Are free roofing leads online actually real?
Yes, but "free" means no per-lead cash cost, not no effort. Inbound calls from your Google Business Profile and local search, referrals from past customers, and reactivated contacts from your own CRM cost you time and consistency rather than a fee per contact. A truly free channel that never closes is not free at all, so measure each one by cost per booked job before you trust it.
Why are cheap bought roofing leads often the most expensive?
Shared marketplace leads are sold to multiple roofers at once, carry shallow intent, and come with no relationship or context, so close rates are low and you discount to win. When you divide the spend by the few jobs that actually close, the cost per booked job is usually far higher than a channel you own. The low sticker price hides a high true cost.
How do I lower my cost per roofing lead online?
Shift spend from rented channels to owned ones, and improve targeting within every channel. Concretely: measure cost per win by channel, complete your Google profile and earn reviews, mine your CRM and dead leads for roofs that are due now, and mail or knock only the homes ranked highest by roof age and storm exposure instead of blanketing an area. Cutting wasted contacts is what moves the number.
Is direct mail or Google Ads cheaper for roofing leads?
It depends on targeting and your market, but both can be far cheaper per job than shared marketplace leads. Targeted direct mail (a data-built, roof-age-and-storm-ranked list) tends to win on cost per job because the audience is yours and the per-piece cost is under a dollar. Google Ads and Local Services Ads are rented but exclusive and high-intent, so with tight geo-targeting, negative keywords, and matched landing pages they deliver a defensible cost per job. Run both for 90 days and compare cost per win.
How does roof-age targeting make leads cheaper?
Most wasted roofing marketing spend goes to roofs that are too new, already replaced, or never damaged. Scoring homes by roof-age band and storm exposure lets you contact only the homes likely to need a roof and suppress the recently replaced ones. Mailing 1,200 likely-due homes instead of 5,000 random ones cuts your spend and raises your response, which drops cost per booked job. Roof age is a range estimate, not an exact install date, so it tells you which homes are worth the contact, not that any specific roof is finished.
Can I get storm-damage roofing leads online without buying lists?
Yes. After a hail or wind event you can identify the neighborhoods inside the storm footprint using public weather data, cross them against roof age, and build a ranked canvass and mail list yourself at a fraction of the cost of buying storm leads. You document damage and write an honest repair estimate; you do not buy a list of pre-qualified claims.
What can a roofer legally say about insurance on storm leads?
A roofer may inspect a roof, document damage with photos and measurements, prepare an accurate repair estimate for their own scope, and state facts about that scope to the carrier. A roofer may not, for a fee, negotiate or handle the claim, interpret policy or coverage, promise a specific payout or approval, promise the deductible is waived, advertise a free roof, or represent the homeowner against the insurer. That is unlicensed public adjusting. The safe approach: document thoroughly, hand the homeowner an accurate estimate, and let the homeowner file while the insurer decides coverage.
How does RoofPredict lower my cost per roofing job?
RoofPredict scores every home in your service area by roof-age band, storm exposure, and an opportunity score, then gives you a house-by-house ranked target list with a why-this-home evidence chain. You turn the due-roof segment into tracked direct mail with personalized microsites and QR codes, build field routes for canvassers, sync leads two-way to your CRM, and watch a results funnel that reports cost per win. By cutting wasted contacts out of mail and knocking, it lowers cost per job on the channels you already control. It uses roof-age and storm heuristics, not magic prediction, and roof age is a range.
Is mining my old CRM really cheaper than buying leads?
For most established roofers, yes. Past customers and dead estimates already know your name and cost nothing to acquire again. The value is in segmentation: enrich the list with roof-age and storm context, suppress recently replaced roofs, and run a reactivation cadence on the contacts whose roofs are due now. Crediting first-touch source keeps the attribution clean. It is routinely the lowest cost-per-job channel a roofer has and the one most often ignored.
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
- National Roofing Contractors Association (NRCA) — nrca.net
- Asphalt Roofing Manufacturers Association — Shingle Service Life — asphaltroofing.org
- Insurance Institute for Business & Home Safety (IBHS) — Roofing & Hail — ibhs.org
- NOAA National Weather Service — weather.gov
- NOAA Storm Prediction Center — Storm Reports — spc.noaa.gov
- Texas Department of Insurance — Public Adjusters & Roofing — tdi.texas.gov
- Federal Trade Commission — Advertising & Marketing Basics — ftc.gov
- Google — Improve Your Local Ranking on Google — support.google.com
- Google — About Local Services Ads — support.google.com
- U.S. Census Bureau — American Housing Survey — census.gov
- U.S. Bureau of Labor Statistics — Roofers Occupational Outlook — bls.gov
- International Code Council — International Residential Code (IRC) — codes.iccsafe.org
- USPS — Every Door Direct Mail (EDDM) — usps.com
- Small Business Administration — Marketing & Sales Guidance — sba.gov
- RoofPredict — roofpredict.com
Related Articles
Google Ads Not Converting Roofing Leads? A Contractor's Fix-It Playbook
Your roofing Google Ads are getting clicks but no signed jobs. Here's how to find exactly where the money leaks out and close the gaps, from match types to call answer rates.
Retargeting Ads for Roofing Companies: A Practitioner's Operating Manual
Retargeting works for roofers as a closer, not a lead source. The audiences, budget math, compliant storm creative, and measurement that turn warm visitors into booked inspections.
Roofr Review for Roofing Contractors: Is It Worth It?
A practitioner's take on whether Roofr is worth it for your shop — what it does well, where it leaves gaps, and how to match the tool to your actual bottleneck.