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:
| Finding | What was happening |
|---|---|
| Wrong objective | Running 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 API | Post-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 event | The account was optimizing for link clicks and landing-page views, not lead or booking events, rewarding the algorithm for the wrong outcome. |
| Unqualified Instant Forms | One-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 creative | A 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-lead | Meta 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 loop | Booked 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:
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
"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."
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.
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.