Meta Ads Roofing Case Study

572 High-Quality Leads: Cost Per Lead Reduced by 75%

31-Day Campaign
Industry: Roofing
Market: Southwest US
Channel: Meta Ads + CRM
Spend: £6,673 (≈$8,938)
Data Pending
Cost Per Booked Job
(client attribution in progress)
572
Leads in
31 Days
£11.67
Cost Per Lead
(from £47)
75%
Cost Per Lead
Reduction
More Leads,
Same Ad Spend

Before you read the £11.67 figure as the headline: it isn't. £11.67 is an ordinary, even expected, cost per lead for Meta lead generation in home services. Every roofing contractor has heard some version of "Meta leads are cheap and they're junk," and a low CPL alone doesn't argue against that. What this case study is actually about is what happened after the lead came in, not what it cost to get it. The cost-per-booked-job figure above is still being finalized with the client, we're publishing this now with that number flagged as pending rather than guessing at it.

The Situation

A roofing contractor in the Southwest US was paying £47 per lead to a generic agency running Meta campaigns with no home service experience. The leads that did come in were cold by the time anyone called them back, the classic "we tried Facebook ads once, never again" story that shapes how most roofing contractors think about the channel.

The prior agency and our rebuild both ran on Meta, so this is a same-channel comparison: the £47 baseline is what Meta was actually costing this contractor before the account was restructured, not a different channel dressed up as one.

What the Audit Found

Every roofing contractor believes two things about Meta: leads are cheap, and leads are garbage. They're half right. Cheap Meta leads are garbage when the campaign optimizes for form-fills and hands them off cold. Here's what the account was actually doing before the rebuild:

FindingWhat was happening
Wrong objectiveRunning boosted posts and Traffic/Engagement objectives instead of the Leads (conversion) objective, the single most common amateur mistake on the platform.
No Pixel / no Conversions APIPost-iOS14, without server-side Conversions API data, Meta's algorithm can't optimize toward real leads, only clicks, so it keeps finding more people who click and fewer who call.
Optimizing for the wrong eventThe account was optimizing for link clicks and landing-page views, not lead or booking events, rewarding the algorithm for the wrong outcome.
Unqualified Instant FormsOne-tap forms harvesting accidental taps, this is the junk-lead pipeline, and it's built into the ad format by default if nobody configures qualifying questions.
Static, fatigued creativeA single static image with no before/after photography, no video, and no refresh cadence, in a trade where visual proof is the entire sales argument.
No speed-to-leadMeta leads decay in minutes. With no instant SMS or call trigger, form-fills sat unanswered long enough to go cold before anyone reached out.
No lead-quality feedback loopBooked and qualified outcomes were never uploaded back to Meta as a custom conversion, so the algorithm never learned which leads actually turned into jobs.

Contractors recognizing their own boosted-post account in that table is exactly the point. This isn't a Meta problem. It's a "nobody built this as a system" problem.

What Was Changed

We rebuilt the account around the Booked-Job Pipeline™, mapping each fix to a stage instead of treating Meta as an isolated tactic:

Funnel used: Meta Feed/Reel Ad (before/after roofing creative) → Qualified Lead Capture → Instant Lead Capture → Automated SMS Follow-Up → Appointment Booking → CRM Pipeline Tracking, with booked-lead quality fed back to Meta as a custom conversion event

The campaign objective moved to Leads with the Pixel and Conversions API feeding real lead events instead of clicks. Instant Forms were rebuilt with qualifying questions ahead of the open capture step. Creative shifted to before/after roofing photography with a regular refresh cadence instead of one static image left to fatigue.

The missed-call text-back system already documented on our homepage for this client carried over directly into this rebuild, and it matters more here than almost anywhere else: the system recovered 30% of leads that would otherwise have been lost to slow follow-up. On Meta specifically, where lead decay happens in minutes, speed-to-lead is the difference between a cheap lead and a dead one.

What It Cost, Honestly

Total spend was £6,673 (≈$8,938 USD) across the 31-day campaign, on a monthly retainer plus ad spend model, the same total budget the prior agency was already spending. At the old £47 CPL, that budget would have produced roughly 142 leads. At £11.67, it produced 572, a 4× increase in lead volume at the same cost.

Want the same audit run against your current Meta account? Book a free audit and we'll show you where your account is leaking before you spend another dollar.

In Their Words

Pending client approval

"I'd tried Facebook ads before and got a pile of cheap leads that never answered the phone. Never again, that's what I actually thought going into this. What changed my mind wasn't the price per lead, it was watching leads that used to go cold actually turn into jobs on the calendar. We're not paying less for the same junk. We're paying less for leads that book."

RC
Roofing Contractor Client
Owner, Southwest US · Web Pinnacles Client

This quote is a draft written for the client's review and sign-off, not yet a confirmed testimonial. It will be replaced with the client's actual words once approved.

Roofing Contractor Meta Ads Case Study, 572 Leads in 31 Days

What We Wouldn't Claim

£11.67 is not a magic low cost. It's a normal, achievable Meta CPL for home services once the account is built correctly. The claim here is booking quality, not lead price.

31 days is fast, not typical and not guaranteed. Results depend on starting account health, market, and creative assets available at launch.

This was Meta Ads plus CRM, not Google Ads and not Local SEO. If you're comparing channels, don't read this as a search or organic result.

One client, one market, one season. This is evidence of what a properly built Meta program can do, not a universal law of Meta CPLs.

Want to know if your Meta account is built the same way?

We'll audit your current campaign, objective, Pixel setup, creative, and speed-to-lead, free, and tell you honestly where it's leaking.