Cost per lead is the metric almost every home services report leads with, and it's the wrong one to lead with. It answers "how much did we pay for contact information," not "how much did it cost to get a job on the schedule," and for a roofer or HVAC contractor those two numbers can point in opposite directions. A $40 lead that books at 8% costs $500 per job. A $150 lead that books at 35% costs $429 per job. The second lead is more than three times as expensive to acquire and still the better buy, and a report that only shows cost per lead will never surface that.

On our home services agencies page we talk about reporting cost per booked job instead of ROAS or raw lead volume, because that's the language a contractor actually thinks in. This is the part underneath that framing: cost per lead is a real number, but it's an input, not an outcome, and treating it as the outcome is how agencies end up defending a "cheap" lead source that's quietly costing the client more per job than the "expensive" one they wanted to cut.

What cost per lead actually looks like right now

WebFX's 2026 Home Services Marketing Benchmarks, drawn from a database of 24 home services sub-industries, puts overall cost per lead at $181 for B2B and $144 for B2C, but the range underneath that average is enormous. Premium categories like kitchen and bath remodeling, sunrooms, and roofing run $350 to $500 per lead. Standard categories like HVAC, landscaping, and electrical run $60 to $264 depending on B2B or B2C. High-volume categories like plumbing and pest control run as low as $30 to $100.

$30–$500

the range of cost per lead across home services trades, per WebFX's 2026 Home Services Marketing Benchmarks. A single CPL target across a contractor's whole account isn't measuring the same thing in every campaign.

Lead source matters as much as trade. SearchLight Digital's February 2026 dataset, built from 888 home services contractors, 1,774 campaigns, and $6.72M in tracked Google Local Services Ads spend, put the average LSA cost per lead at $53, with HVAC at $51 and plumbing at $57. Compare that to SearchLight's separate roofing analysis of 15 contractors and $310,000 in non-branded Google Ads search spend over Q1 2026: $124 per lead, more than double the LSA average for a completely different channel and trade. Neither number is wrong. They're just not measuring comparable leads.

Why the cheap lead can be the expensive one

The piece that CPL alone can't show is booking rate, and booking rate swings hard based on whether a lead is exclusive to one contractor or shared across several. Industry lead-gen comparisons, including BaaDigi's contractor lead breakdown built from its own project data, consistently show shared leads closing around 10% to 20% of the time and exclusive leads closing 30% to 50% of the time. That gap exists because a shared lead means three to five contractors are calling the same homeowner within minutes of each other, and whoever isn't fastest usually loses the job before they've finished dialing.

Run the math and the ranking flips. Take a $40 shared lead at a 10% close rate: that's $400 per booked job. Take a $150 exclusive lead at a 35% close rate: that's $429 per booked job, close to the shared lead despite costing nearly four times as much up front. Now drop the shared lead's close rate to 8%, which is common when a contractor is slow to follow up or competing against faster shops, and the shared lead jumps to $500 per job while the exclusive lead stays flat. The "cheaper" channel just became the worse buy, and a CPL-only report would still be showing it as the win.

Reporting that tracks booked jobs, not just leads

NarrateIQ writes a weekly report built around cost per booked job for every contractor client, so a lead source that's quietly underperforming on close rate doesn't hide behind a low CPL.

Book a free audit call →

What to actually put in the report

A useful home services report tracks cost per lead by source and trade, and then multiplies through to cost per booked job using each source's actual close rate, not an assumed one. That means agencies need booking data flowing back from the client's scheduling or CRM system, not just conversion data from the ad platform, because Google Ads and Meta both stop measuring at the form fill or call. Everything after that, whether the lead answered, whether it booked, whether it showed up, happens off-platform.

It also means separating LSA, paid search, and shared-lead marketplaces into their own lines instead of one blended "lead gen" number. A contractor spending on all three needs to see which one is actually filling the schedule at the lowest real cost, and that's a different answer than which one is filling the schedule at the lowest sticker price. Clients who only ever see CPL end up making budget decisions based on the wrong half of the equation, and agencies who only ever report CPL are the ones who eventually have to explain why a "great number" didn't translate into a full truck.

Seasonality complicates this further. An HVAC contractor's booking rate on a July heat-wave lead looks nothing like its booking rate on a mild October lead, even from the identical source. A report that averages CPL and close rate across a full quarter smooths over the exact weeks where budget decisions actually matter, like whether to pull back on a shared-lead source right before a cold snap or push harder on LSA ahead of a predictable seasonal spike. Weekly reporting, broken out by source, is what makes that kind of call possible instead of something the client only figures out after the fact.

This is the same trap that shows up across every home services report I've seen: the metric that's easiest to pull from the ad platform isn't the metric the client actually cares about, and the gap between them is exactly where agencies lose client trust even when the campaigns themselves are working fine.

None of this requires a new data source most agencies don't already have access to. Booking or job data usually already lives in whatever scheduling software the contractor runs day to day, whether that's Housecall Pro, ServiceTitan, or a simpler CRM. The gap is almost always on the reporting side, where CPL from the ad platform gets written up on its own because it's the number that's easiest to grab, not because it's the number that answers the question the client is actually asking.

N
Written by Nick Diaz, founder of NarrateIQ. More about NarrateIQ →