Facebook Ads Cost Per Lead for Roofing: What You'll Actually Pay (and How to Cut It)
On this page
If you've run Facebook ads for a roofing company for more than a month, you already know the frustration baked into the question "what's a good cost per lead?" You'll find one forum post swearing they pull leads at $9 and another contractor screaming that they spent $4,000 and closed nothing. Both are telling the truth. The number swings that hard because "cost per lead" on Facebook is a measurement of about six different things stacked on top of each other, and most roofers only control two of them.
This is a working breakdown from the contractor's seat: what roofers actually pay per Facebook lead in 2026, why your number is what it is, the math that separates a profitable campaign from a budget bonfire, and a concrete, step-by-step system to push the number down without filling your CRM with tire-kickers. No fluff, no "engagement is the new ROI" nonsense. We're going to talk dollars, close rates, and the operational mistakes that quietly double your cost per acquired customer.
A quick honesty note before the numbers, because it matters: any cost-per-lead figure you read online is a snapshot of someone else's market, season, offer, and follow-up speed. Treat ranges as orientation, not promises. Your own historical data beats every benchmark in this piece.
What "cost per lead" really means on Facebook (and the three numbers under it)
The term "cost per lead" (CPL) gets thrown around like it's one thing. It isn't. There are at least three different costs hiding inside it, and confusing them is how roofers convince themselves a campaign is working when it's bleeding money.
1. Cost per form submission (raw CPL). This is what Meta Ads Manager shows you when you run a lead-form or instant-form campaign: total spend divided by the number of people who hit submit. It's the number everyone quotes. It's also the least meaningful, because a form submission is not a homeowner — it's a tap.
2. Cost per contactable lead. Of those form fills, some share gives you a real phone number, picks up, and is actually a homeowner in your service area with a roof problem. The gap between raw CPL and contactable CPL is enormous on Facebook lead forms — much wider than on Google, because Facebook is interruption marketing. Nobody woke up searching for a roof. You interrupted their lunch break with a hail photo.
3. Cost per qualified appointment (and cost per signed job). This is the only number that pays your bills. It's your raw CPL multiplied by all the leakage between form fill and a contract: contact rate, set rate, sit rate, and close rate.
Here's the chain written out so you can see where the money goes:
Cost per signed job =
Cost per form fill
÷ (contact rate × qualified rate × set rate × sit rate × close rate)
A worked example with realistic-but-not-promised numbers:
- Raw CPL (form fill): $22
- Contact rate (you actually reach a human): 55%
- Qualified (homeowner, in area, real roof intent): 70%
- Set rate (books an inspection): 60%
- Sit rate (they're home and let you on the roof): 80%
- Close rate (signed contract): 30%
Work it through: 0.55 × 0.70 × 0.60 × 0.80 × 0.30 = 0.0554. So your cost per signed job is $22 ÷ 0.0554 = $397.
Now watch what happens when your contact rate drops from 55% to 30% because you let leads sit overnight: the denominator becomes 0.0302, and your cost per job jumps to $728. Same ads. Same CPL. Nearly double the cost to acquire a customer — purely from follow-up speed. Hold that thought, because it's the single biggest lever most roofers never pull.
The honest ranges: what roofers pay per Facebook lead in 2026
Let's put numbers on the table. These are observed ranges across residential roofing accounts, not a guarantee, and they assume a competent campaign — decent creative, a real offer, proper targeting. A broken campaign can pay 3-5x these figures.
| Lead type / context | Typical raw CPL range | What it usually means |
|---|---|---|
| Instant lead form, retail re-roof, calm market | $12 - $35 | High volume, low intent, heavy filtering required |
| Instant lead form, storm/hail market (active) | $8 - $25 | Cheap and plentiful while the storm is fresh; quality varies wildly |
| Click-to-website + landing page form | $25 - $70 | Lower volume, meaningfully higher intent and contactability |
| Click-to-call / phone-lead optimized | $40 - $120 | Fewer leads, far better contact and qualification rates |
| Free roof inspection offer (retail) | $18 - $45 | Strong hook, attracts both real prospects and freebie-seekers |
| Commercial / niche (TPO, metal, specialty) | $60 - $250+ | Thin audiences, high ticket, long sales cycle |
A few patterns worth internalizing:
- Instant forms are the cheapest CPL and the most expensive cost per job. The low friction that makes them cheap is exactly what tanks contactability. A $12 instant-form lead with a 25% contact rate can cost more per signed job than a $60 landing-page lead with an 80% contact rate. Always do the full-chain math before you celebrate a low CPL.
- Storm markets compress CPL and explode variance. When a hailstorm hits, intent goes up and CPL drops — but so does your exclusivity, because every roofer in three counties is now advertising to the same neighborhoods. The window is short. Speed and targeting decide who wins.
- Phone-optimized and landing-page leads cost more up front and usually win on cost per job. This is the trade every serious roofer eventually makes: stop optimizing for the cheapest tap, start optimizing for the cheapest customer.
Why your number is probably higher than the forum hero's
When someone quotes a $9 CPL, ask three questions they almost never volunteer:
- What did they optimize for? A $9 lead is almost always a raw instant-form fill optimized for "leads" with a single-field form. Strip away the contactable ones and the real number is 3-4x higher.
- What season and market? Mid-storm in a Texas hail belt is a different planet than a calm February in Ohio.
- Are they counting media spend only? Many "$9" claims ignore agency fees, creative costs, and the staff hours burned chasing junk. Add those back and the picture changes.
None of this means Facebook is bad for roofers. It means CPL in isolation is a vanity metric. The contractors who win treat Facebook as a top-of-funnel firehose and build a system to convert the spray into jobs cheaply.
A second worked example: the cheap lead that costs more
To make the trap concrete, compare two campaigns side by side. Both spend $3,000 in a month.
Campaign A — instant lead form, optimized for volume. Raw CPL of $15, so 200 form fills. But it's a one-field form on a storm hook, follow-up is next-business-day, and the leads are low-intent. Contact rate 30%, qualified 60%, set 50%, sit 75%, close 28%. Full-funnel rate: 0.30 × 0.60 × 0.50 × 0.75 × 0.28 = 0.0189. Signed jobs: 200 × 0.0189 = 3.8 jobs. Cost per job: $3,000 ÷ 3.8 = $789.
Campaign B — landing page, qualifying questions, 5-minute callback. Raw CPL of $48, so 62 form fills. Higher intent and fast follow-up: contact rate 60%, qualified 75%, set 62%, sit 82%, close 32%. Full-funnel rate: 0.60 × 0.75 × 0.62 × 0.82 × 0.32 = 0.0732. Signed jobs: 62 × 0.0732 = 4.5 jobs. Cost per job: $3,000 ÷ 4.5 = $667.
Campaign B has a CPL more than three times higher and still produces more jobs at a lower cost per job — on identical spend. If you only watched Ads Manager's CPL column, you'd kill the winner and scale the loser. This is the most common and most expensive misread in roofing paid social, and it's why the rest of this piece keeps dragging your eyes back to cost per job.
The math that actually decides if Facebook is profitable for you
Before you touch Ads Manager, you need three numbers from your own business. If you don't have them, that's your first job — not a new ad campaign.
Your average job profit (gross). Not revenue. Profit after materials, labor, and crew overhead, before marketing. For a residential re-roof this might be $2,500-$6,000 depending on your market and ticket. Use a conservative figure.
Your target marketing cost as a percent of revenue. Most healthy roofing companies keep total marketing in the 5-12% of revenue range; paid acquisition for retail can run higher when you're scaling. Pick your ceiling.
Your maximum allowable cost per job (CAC ceiling). If you'll tolerate spending up to, say, $600 to acquire a job that nets $3,500 profit, that's your line in the sand. Everything in your funnel either keeps you under that line or it doesn't.
Now flip the chain. If your CAC ceiling is $600 and your full funnel converts form fills to jobs at 5.5%, then your maximum allowable raw CPL is:
Max raw CPL = CAC ceiling × full-funnel conversion rate
= $600 × 0.0554
= $33.24
That single number — "I can pay up to about $33 per form fill and still hit my CAC target" — is your North Star inside Ads Manager. It turns a fuzzy "is this lead too expensive?" gut-check into a decision. And it shows you instantly that improving conversion rates raises your allowable CPL, which means you can outbid competitors for the same impressions and still profit. The roofer with the best follow-up can afford the most expensive clicks. That's the whole game.
A simple break-even worksheet
Fill this in for your own shop:
- Average gross profit per job: $______
- Acceptable marketing % of that profit you'll reinvest: ____%
- CAC ceiling (line 1 × line 2): $______
- Your funnel conversion (contact × qualified × set × sit × close): ____%
- Max raw CPL (line 3 × line 4): $______
- Current actual raw CPL from Ads Manager: $______
If line 6 is below line 5, you're profitable and should scale. If it's above, you have two paths: lower CPL (better creative, targeting, offer) or raise the funnel conversion (faster follow-up, better appointments). Most roofers reflexively attack CPL. The faster wins are almost always in the funnel.
Daily budget, learning phase, and why week one lies to you
One more piece of math that trips up roofers: Meta's delivery system needs a minimum volume of optimization events to leave the "learning phase," and until it does, your CPL is volatile and usually inflated. For a lead campaign, that often means roughly 50 conversion events per ad set per week before delivery stabilizes. If your daily budget is so small that an ad set collects only a handful of leads a week, it may never exit learning, and you'll pay a learning-phase premium indefinitely while concluding "Facebook doesn't work."
Practical implications:
- Don't over-split your budget. Five ad sets at $10/day each will each starve and stay in learning. One or two ad sets at $40-50/day reach stability faster and usually deliver lower CPL.
- Don't make big mid-flight edits. Editing budget by more than ~20%, swapping the offer, or changing optimization resets learning and re-inflates CPL for days. Scale in small steps.
- Don't judge in week one. The first week's CPL is the worst week's CPL. Give a structured campaign 2-4 weeks and enough volume to read a trend before you decide.
If your market or CAC ceiling genuinely can't support enough budget to exit learning on a pure-lead objective, that's a signal to consider a higher-intent objective (calls, landing-page conversions) where each event is worth more, rather than chasing cheap form fills you can't stabilize.
Why roofing CPL swings so much: the seven real drivers
Understanding the levers tells you where to push. Here are the seven that move roofing CPL the most, roughly in order of impact.
1. Offer strength
The offer is the ad. A vague "Need a new roof? Call us!" will cost you 3-5x what a specific, low-friction offer costs. The strongest retail roofing offers give the homeowner a reason to act now and a low-commitment first step:
- Free roof inspection with a written condition report
- Free roof-age and storm-exposure check for your address
- No-cost estimate with photos of any issues found
Keep it factual. Document and report — don't promise outcomes you can't control.
2. Creative format and freshness
Facebook is a visual interrupt. Static stock photos of pristine roofs die fast. What works in roofing:
- Real before/after photos from local jobs (with permission)
- Short vertical video walking a damaged roof, narrated plainly
- Drone footage of storm damage in recognizable local neighborhoods
- A crew member talking to camera for 15-20 seconds, no script polish
Creative fatigue is brutal on Facebook. A winning ad's CPL typically creeps up week over week as your audience sees it too many times. Plan to refresh creative every 2-4 weeks, faster in dense markets.
3. Targeting and audience size
Meta's machine learning needs room to optimize, but roofing is geographically constrained — you can't serve roofs 200 miles away. Too tight a radius and CPL spikes from thin delivery; too broad and you pay to reach renters and out-of-area users. The sweet spot is usually a service-area-shaped audience with sensible exclusions (renters where targetable, recent customers, your own staff). We'll get concrete on this below.
4. Season and storm activity
Demand is seasonal and weather-driven. Spring and post-storm windows compress CPL; deep winter in northern markets inflates it. If you advertise the same way year-round, you're overpaying in slow months and under-scaling in peak ones.
5. Competitive density
When ten roofers bid on the same county after a storm, auction prices climb. CPL is partly a reflection of how many competitors are buying the same eyeballs. This is why exclusivity of targeting — reaching the right homes before the pack does — matters more than headline CPL.
6. Landing experience and form friction
Every extra field on your form and every extra second of page load costs you leads or quality. Instant forms minimize friction but maximize junk. Landing pages add friction but filter for intent. The right choice depends on your follow-up capacity (more on this in the optimization section).
7. Follow-up speed and process
This isn't an ad setting, but it determines your real CPL more than any of the above. The lead-response research is old but stubbornly true: the odds of contacting and qualifying a web lead drop off a cliff after the first few minutes. A 5-minute callback versus a next-day callback can swing your contact rate by 2-3x — which, as the math above showed, can nearly halve or double your cost per job with zero change to spend.
Reading the diagnostic metrics Meta gives you
When CPL climbs, don't just stare at the CPL number — diagnose why using the upstream metrics, because each points to a different fix:
- CPM (cost per 1,000 impressions) rising: auction is getting more expensive — usually more competitors (post-storm), a shrinking audience, or seasonal demand. Fix with broader or fresher audiences, or accept it during a hot window.
- CTR (click-through / lead-form open rate) falling: your creative or offer is tiring. This is the fatigue signal. Refresh creative.
- Frequency climbing past ~2.5-3 in a short window: you're showing the same people the same ad too often. Expand the audience or rotate creative.
- High form opens but low submits: form friction or a mismatch between the ad's promise and the form. Simplify the form or align the copy.
- Good CPL but bad contact/close rates downstream: the problem isn't the ad at all — it's lead quality or follow-up. Add qualifying questions, tighten targeting, or fix response speed.
The discipline here is to treat CPL as a symptom and trace it to the specific upstream metric. Roofers who skip the diagnosis end up randomly swapping creative when the real problem was a saturated audience, or widening targeting when the real problem was a slow callback.
Targeting roofing leads without burning budget
Here's where most roofers leave money on the table. Facebook's native targeting for home services is blunt: homeowner audiences are imprecise, you can't reliably target by roof age or material, and storm targeting is a manual radius-around-a-city-name exercise. You end up paying to reach a lot of homes that will never need you this year.
There are smarter approaches, in increasing order of precision.
Level 1: Geo + basic demographics (the default everyone uses)
Draw a radius or pin your service-area zips, filter to likely homeowners and an income band, exclude renters where possible, and let Meta optimize. It works, but it's a shotgun. You're paying to advertise to brand-new roofs and roofs you replaced last year alongside the ones that are actually due.
Level 2: Custom audiences from your own data
Upload your customer list to build lookalikes, retarget website visitors, and exclude existing customers. This meaningfully improves quality. Two practical moves:
- Exclude recent customers and quote-losers so you stop paying to re-reach people who aren't buying.
- Build a lookalike from your best closed jobs, not all leads. Quality in, quality out.
Level 3: Address-level targeting based on roof age and storm exposure
This is the leap that changes the economics. Instead of advertising to a whole zip code, you advertise to the specific homes most likely to need a roof right now: homes whose roofs are in the due or overdue age band, weighted by the storm exposure that hit their specific location. You feed that ranked list to Facebook as a custom audience.
The difference is dramatic. If 8% of homes in a zip have a roof that's plausibly due this year, untargeted ads waste roughly 92 cents of every dollar reaching homes that won't act. Concentrate spend on the due-and-overdue homes and your effective CPL for a contactable, in-market lead drops hard — even if the headline CPL looks similar — because a far larger share of your leads are real prospects.
A note on honesty here, because it's important to say plainly: roof age estimated from records is a range, not an exact birthday, and storm exposure is a probability of damage, not proof. You're improving your odds of reaching the right home — you're not getting a guaranteed leak. That's still a massive edge over spraying a whole county.
How RoofPredict cuts your effective cost per Facebook lead
This is the part of the funnel where a targeting and operations platform earns its keep, so let me be specific about what RoofPredict actually does and what you'd do with it — not hand-wave "better targeting."
It builds the ranked audience Facebook can't. RoofPredict scores every home in your service area by roof-age band (recent, mid-life, due, overdue) plus that home's specific storm exposure, then combines them into an opportunity score. You draw your territory on a hex map or import addresses by CSV, and you get a ranked, house-by-house list of which roofs are most likely due — each with a "why this home" evidence chain (the age band and the storm history behind the score). You export that due-and-overdue list and upload it to Meta as a custom audience. Now your Facebook spend concentrates on the homes most likely to convert, instead of the whole zip code. That's the lever that lowers your effective CPL — fewer wasted impressions on roofs that aren't due.
It runs the channels Facebook should never run alone. Paid social shouldn't be your only touch on a high-value homeowner. From the same due-roof list, RoofPredict turns the targets into a tracked direct-mail campaign — personalized mail proofs (brand, copy, and address checks), vendor release, and per-piece delivery and return tracking, with the cost quoted up front. 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 for the mail piece and the door. So the homeowner who saw your Facebook ad, then got a mail piece referencing their own roof, then scanned a QR to a page about their address — that's a coordinated sequence, not a lonely ad impression. Coordinated touches close better, which lowers cost per job even if CPL holds steady.
It tracks the number that actually matters. RoofPredict's results funnel runs delivered to views to form to calls to leads to wins, with cost-per-lead and cost-per-win, and it shows actual versus estimate versus an industry benchmark, with A/B variants. So instead of staring at Meta's raw CPL and guessing, you see your true cost per signed job across the whole effort and can tell which variant, which neighborhood, and which channel is carrying the load. That's the difference between optimizing a vanity metric and optimizing your CAC.
The honest limit: the scoring is roof-age and storm-exposure heuristics, not a guarantee that a given roof is failing. Age is a range; a storm forecast is odds. What you get is a far higher concentration of in-market homes in your audience — which is exactly what drives effective CPL down.
A step-by-step playbook to lower your roofing CPL
Enough theory. Here's the operational sequence, in order, with the highest-leverage moves first.
Step 1: Fix follow-up speed before you touch the ads
This is non-negotiable and it's free. Before increasing spend or rebuilding creative, make sure a human (or at minimum an instant auto-text) hits every lead within five minutes during business hours.
Concrete setup:
- Pipe Facebook leads into your CRM in real time (not a daily CSV export — that delay alone is killing you).
- Fire an automatic text within 60 seconds: "Hi [name], it's [company] — got your request about your roof. Are you free for a quick call now, or is later today better?"
- Have a person attempt a live call within five minutes.
- Set a follow-up cadence for non-answers: 6-8 touches over 10-14 days across call, text, and email. Most roofers quit after one or two attempts and leave half their paid leads on the table.
Do this and your contact rate can jump from the 30s into the 50-60% range — which, per the earlier math, can cut your cost per job nearly in half on the same ad spend.
Step 2: Tighten your offer to one specific, low-friction action
Replace any "contact us" energy with a single concrete offer and a single next step. Pick one:
- "Free roof inspection + written condition report — see exactly what shape your roof is in."
- "Free roof-age and storm check for your address."
Match the form to the offer. For a free-inspection offer, you only need name, phone, and address. Every extra field costs you submissions.
Step 3: Build a real creative rotation
Launch with 3-5 distinct creatives, not one. Mix formats: one before/after, one walk-the-roof video, one crew-to-camera, one storm-damage drone clip. Let Meta find the winner, then feed it. Plan your next batch before the current winner fatigues — assume a 2-4 week shelf life.
Step 4: Sharpen targeting from broad to ranked
Start broad enough for delivery, then layer precision:
- Service-area zips or radius, likely homeowners, sensible income band.
- Exclude existing customers and recent quotes (custom audience).
- Add a lookalike from your best closed jobs.
- Upload a ranked due-and-overdue roof list as a custom audience so spend concentrates on homes actually likely to need you. This is the single biggest targeting upgrade available to a roofer and the reason effective CPL drops even when headline CPL doesn't.
Step 5: Choose your lead mechanism by your follow-up capacity
- Strong, fast follow-up team? Instant lead forms are fine — you'll convert the cheap volume because you reach people fast. Add a couple of qualifying questions to the form to thin out junk.
- Thin follow-up? Use a landing page with light friction (a real page, a short form, a clear offer). You'll get fewer, more intentional leads that survive slower follow-up.
Never run high-volume instant forms with a slow follow-up process. That combination is the most expensive cost-per-job mistake in roofing paid social.
Step 6: Instrument the full funnel, beyond CPL
Track every stage: form fills, contacts made, qualified, appointments set, sat, closed — and the spend behind each. You cannot improve what you don't measure, and Meta only shows you the first stage. This is exactly where the results funnel (delivered to views to form to calls to leads to wins, with cost-per-win and actual-vs-estimate) replaces guesswork with a real cost-per-job number.
Step 7: Cut, scale, and refresh on a weekly rhythm
Every week:
- Pause creatives whose CPL has climbed past your max allowable raw CPL.
- Scale spend on winners by 15-25% (big jumps reset Meta's learning and spike CPL).
- Review funnel stages for the bottleneck — usually it's contact rate or set rate, not CPL.
- Queue fresh creative before the current winner dies.
Storm and hail markets: a special note on cost, speed, and staying legal
Storm work is where Facebook CPL gets cheapest and where roofers get into the most trouble — both operationally and legally. Two things to get right.
Speed and exclusivity. After a hail or wind event, intent surges and CPL drops, but the window is short and every competitor floods the same neighborhoods. The roofer who reaches the actually-hit homes first wins. This is precisely where a ranked, storm-exposure-weighted target list pays off: you can filter to the homes inside the hit zone and advertise (and mail, and knock) those first, instead of blasting the whole metro and racing everyone to the same impressions.
Stay on the documentation side of the line. Storm ad copy is where roofers write checks they legally can't cash. You are a contractor who inspects roofs, documents damage, and prepares an accurate repair estimate. You are not a public adjuster. Keep your ads, landing pages, and scripts on the right side of that line.
Safe, factual framing you can use:
- "Free storm-damage roof inspection with a written report."
- "We document hail and wind damage and write a detailed repair estimate."
- "We'll photograph your roof's condition and give you the estimate to take to your insurer."
Claims you must not make in roofing ads or to homeowners:
- "We handle your insurance claim" or "we negotiate with your adjuster" — that's unlicensed public adjusting unless you're licensed for it.
- "We waive / absorb / eat your deductible" or "the roof is free" — deductible rebating is illegal in many states and "free roof" is a red flag.
- "We'll get your claim approved" or "guaranteed approval / payout" — you don't control the carrier's coverage decision.
- Anything interpreting the homeowner's policy or coverage for them.
The compliant model is clean and still wins business: you document thoroughly, write an accurate, Xactimate-aligned repair estimate for your scope, and hand it to the homeowner. The homeowner files the claim, and the insurer decides coverage. Your ad sells the inspection and the documentation — not the claim outcome. (For the claim-side documentation, supplement, and recoverable-depreciation workflow after you've signed the job, that's where RoofClaim's documentation tooling comes in — scope-gap and code-item flags with evidence and pricing, depreciation and deductible tracking, on locked, compliance-gated templates — but that lives downstream of your Facebook ad and stays strictly on the contractor-documentation side.)
Creative that lowers CPL: what to actually put in the ad
Since creative is the lever that fatigues fastest and moves CTR (and therefore CPL) the most, it's worth getting specific about what earns a cheap click in roofing. The pattern across markets is consistent: real, local, and specific beats polished and generic.
The hook (first 1-2 seconds of video, or the image). You're interrupting a scroll. Lead with a recognizable problem or place: a real damaged roof, a local neighborhood, a number on screen ("This roof was 19 years old"). Pristine stock roofs get skipped.
Formats ranked by typical durability in roofing:
- Walk-the-roof video. A crew member on a roof, narrating plainly what they see — granule loss, lifted shingles, cracked boots. Authentic, educational, hard to fake, slow to fatigue.
- Before/after carousel from local jobs. Concrete proof, geographically credible. Use real addresses' general area, never a stranger's house without permission.
- Crew-to-camera, unscripted. Fifteen seconds of a real person explaining the free-inspection offer. Lower production, higher trust.
- Drone storm-damage footage. Strong in active storm windows; tie it to a named local event when you can do so factually.
- Static before/after image. Fine as a supporting variant, fastest to fatigue as a sole creative.
Copy that converts the click into a submit. Keep it short, factual, and tied to one offer. "Free roof inspection with a written condition report. We'll photograph your roof, flag any damage, and give you the estimate to keep." Notice that promises an action and a deliverable, not an outcome you can't control.
What to avoid: countdown-timer fake urgency, "limited spots," miracle claims, and anything implying a guaranteed insurance result. Beyond compliance risk, those hooks attract the worst-fit leads — high cancellation, low close — which raises your real cost per job even when CPL looks fine.
A practical creative-testing cadence. Launch 3-5 creatives, let Meta spend until one or two clearly lead, then build the next batch as variations on the winner's theme (same hook, new footage; same offer, new opener). You're not endlessly reinventing — you're iterating on what already works and replacing it before frequency kills it.
Retargeting: the cheapest leads you're probably ignoring
Most roofers pour 100% of budget into cold prospecting and wonder why CPL is high. The cheapest leads on the platform are usually warm: people who already engaged. Build a small, always-on retargeting layer alongside your cold campaigns.
Audiences worth retargeting, in order of value:
- Landing-page visitors who didn't submit. They raised a hand and stalled. A reminder ad with a testimonial or a sharper offer often converts them at a fraction of cold CPL.
- Video viewers (50%+ watch). They consumed your walk-the-roof content — high intent, cheap to re-reach.
- Form openers who abandoned. They started and quit. Re-engage with a lower-friction path.
- Page and ad engagers (likes, comments, saves). A softer signal, but cheap incremental reach.
Keep retargeting budgets modest — these audiences are small and burn frequency fast. The point isn't volume; it's recovering the prospects your cold ads already paid to attract. For many roofers this is the single highest-ROI line in the account, and it's the one most often left empty.
Tracking and attribution: don't lie to yourself
You can't lower a number you can't see accurately. Two tracking failures quietly corrupt roofing CPL decisions.
Failure one: counting form fills as leads. Ads Manager's "leads" column counts taps, not people. If you optimize against that number, you optimize for tappers. Always reconcile Meta's lead count against your CRM's contactable, qualified count, and compute CPL on the latter for decisions.
Failure two: broken attribution between ad and job. When a Facebook lead closes three weeks later after two calls and a text, that revenue has to trace back to the ad set that sourced it — or you'll scale the wrong campaigns. Get this right by:
- Capturing an immutable first-touch source on every lead at the moment of creation, so the credit can't get overwritten by a later channel.
- Passing the campaign/ad-set identifier into the CRM with the lead.
- Tagging the eventual job outcome (won/lost and value) back against that source.
This is exactly the gap a results funnel closes: delivered to views to form to calls to leads to wins, with cost-per-win and actual-versus-estimate, so the dollars you spent on a specific neighborhood or variant tie to the contracts they produced. Without that thread, you're optimizing CPL in the dark and guessing at ROI.
Common mistakes that quietly double your roofing CPL
A checklist of the failures we see most often. Each one inflates your real cost per job, usually invisibly.
- Optimizing for the cheapest form fill instead of the cheapest customer. The whole article in one line. Always run the full-chain math.
- Slow follow-up. Leads aging overnight cut contact rates in half. Free to fix, biggest single lever.
- One creative, run forever. Fatigue silently triples CPL over a few weeks. Refresh on a schedule.
- Boosting posts instead of running structured campaigns. The "Boost" button is the most expensive button in Ads Manager for lead gen. Use proper campaign objectives.
- Targeting whole counties with no roof-age or storm filter. Paying to advertise to brand-new roofs and renters.
- No deduplication or customer exclusion. Re-paying to reach people who already said no or already bought.
- High-volume instant forms with a one-person follow-up team. Volume you can't work is spend you wasted.
- No funnel tracking past the form. You optimize CPL because it's the only number you can see, and ignore the four stages that actually decide cost per job.
- Storm ads that overpromise on claims. Beyond the legal exposure, "free roof" and "we handle your claim" attract the worst-fit, highest-cancellation leads.
- Judging a campaign in week one. Meta's learning phase and your sales cycle both need time. Give a structured campaign 2-4 weeks and a few dozen leads before you call it.
How to benchmark your own number (the only benchmark that matters)
Forget the forum heroes. Build your own baseline:
- Run a clean, structured campaign for 30 days with proper tracking.
- Record raw CPL, contact rate, qualified rate, set rate, sit rate, and close rate.
- Compute your true cost per signed job.
- Compare it to your CAC ceiling from the worksheet earlier.
- Each following month, change one variable (offer, creative batch, targeting layer, follow-up speed) and measure the delta.
This is how you turn Facebook from a slot machine into a predictable acquisition channel. The contractors who win at paid social aren't the ones with a magic CPL — they're the ones who measured the full funnel, fixed follow-up first, concentrated spend on the homes actually due for a roof, and refreshed creative before it died. Do those four things and your cost per lead will look ordinary while your cost per job quietly becomes the best in your market.
Putting it together
Facebook ad cost per lead for roofing isn't one number, and chasing the lowest CPL is how good roofers lose money. The number that pays you is cost per signed job, and it's governed mostly by follow-up speed, targeting precision, and full-funnel measurement — not by shaving a few dollars off a form fill.
If you want the targeting and measurement to stop being guesswork: RoofPredict builds the ranked, house-by-house list of due and overdue roofs (weighted by each home's storm exposure) that you upload to Facebook as a custom audience so your spend stops reaching roofs that aren't due — then coordinates the same target list across tracked direct mail, personalized microsites, reports, and QR codes, and reports your real delivered-to-won funnel with cost-per-win and actual-vs-estimate. You stop optimizing a vanity metric and start driving down your true cost to acquire a customer. Honest about its limits — roof age is a range, a storm forecast is odds — but a real edge over spraying a whole county and hoping. Draw your territory, pull your due-roof list, and feed your ads the homes that are actually ready to buy.
FAQ
What is a good cost per lead for roofing on Facebook ads?
Raw cost per form fill commonly lands between $12 and $35 for residential re-roof in a calm market, $8 to $25 in an active storm market, and $25 to $70 for higher-intent landing-page or click-to-call leads. But "good" depends entirely on your funnel: a $12 lead with a 25% contact rate can cost more per signed job than a $60 lead with an 80% contact rate. Judge cost per signed job, not cost per form fill.
Why is my Facebook cost per lead so much higher than other roofers report?
Usually because the low numbers others quote are raw instant-form fills optimized for volume, taken during a storm surge, and counting media spend only. Strip out non-contactable junk, account for season and competitive density, and add back creative and staff costs, and the real numbers converge. Compare your own historical cost per job, not someone else's headline CPL.
How do I calculate my true cost per acquired roofing job?
Divide your raw cost per form fill by the product of your contact rate, qualified rate, set rate, sit rate, and close rate. Example: a $22 CPL with rates of 55% × 70% × 60% × 80% × 30% (a 5.54% full-funnel rate) gives a $397 cost per signed job. Improve any stage and that number drops; the follow-up-speed stage usually moves it most.
Are Facebook instant lead forms or landing pages better for roofing?
Instant forms give the cheapest CPL but the lowest contactability, so they only pay off if you have fast, persistent follow-up that converts the cheap volume. Landing pages add friction and cost more per lead but filter for intent, which suits a thinner follow-up team. Match the mechanism to your follow-up capacity — never run high-volume instant forms with slow follow-up.
How much does follow-up speed affect my roofing lead cost?
Enormously. Contact rate is a multiplier on your whole funnel, so dropping from a 5-minute callback to next-day can cut contact rate roughly in half, which can nearly double your cost per signed job on identical ad spend. Fixing follow-up speed is free and is almost always the highest-leverage move available before touching creative or targeting.
How do I target only homes that actually need a roof on Facebook?
Facebook's native targeting can't filter by roof age or material, so you build the audience externally and upload it. A platform like RoofPredict scores every home in your service area by roof-age band and storm exposure, produces a ranked due-and-overdue list, and you upload that as a custom audience. Spend concentrates on likely-in-market homes, which lowers your effective cost per real lead even when headline CPL looks similar. Note that roof age is an estimated range, not an exact date.
What should my Facebook roofing ad budget be to start?
Enough to exit Meta's learning phase and generate a few dozen leads in 30 days so you get real data — for many local roofers that's a few thousand dollars over the first month, scaled by your service-area size and CAC ceiling. Don't judge results in week one; give a structured campaign 2-4 weeks and a meaningful lead volume before deciding.
Why do storm and hail markets have lower cost per lead?
A recent hail or wind event spikes homeowner intent, which lowers CPL, but it also floods the area with competing roofers, so exclusivity drops and quality varies widely. The window is short. Reaching the actually-hit homes first — using a storm-exposure-weighted target list — beats blasting the whole metro and racing every competitor to the same impressions.
Can I advertise that I handle insurance claims or waive deductibles?
No. Negotiating or handling a homeowner's claim for a fee is unlicensed public adjusting in most states, and waiving or absorbing deductibles is illegal in many states (and "free roof" claims are a red flag). The compliant model: advertise a free inspection, document the damage, write an accurate repair estimate, and hand it to the homeowner — the homeowner files and the insurer decides coverage. Sell the inspection and documentation, never a claim outcome.
Should I optimize Facebook campaigns for leads or for cost per lead?
Optimize for the cheapest acquired customer, not the cheapest lead. Track the full funnel from form fill through contact, qualification, appointment, sit, and close, and watch cost per signed job. CPL is the only metric Meta shows you, which tempts roofers to optimize it in isolation while the four downstream stages that actually decide profitability go unmeasured.
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
- NRCA - National Roofing Contractors Association — nrca.net
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service — weather.gov
- Federal Trade Commission - Advertising and Marketing — ftc.gov
- Texas Department of Insurance - Public Adjusters — tdi.texas.gov
- National Association of Insurance Commissioners (NAIC) — naic.org
- U.S. Census Bureau - American Housing Survey — census.gov
- International Code Council (ICC) — iccsafe.org
- U.S. Bureau of Labor Statistics - Roofers — bls.gov
- OSHA - Roofing Safety — osha.gov
- NOAA National Centers for Environmental Information - Storm Events — ncdc.noaa.gov
- Meta for Business - Lead Ads — facebook.com
- 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.