Cost Per Lead Is the Wrong Number for Home Services
The cheapest lead in my book of home-services accounts costs $80. The most expensive costs $309. And the cheap one often has the worse economics. That is the problem with judging Google Ads on cost per lead. The number that looks best is frequently the one you should trust least.
Cost per lead tells you what it cost to make the phone ring. It says nothing about what it cost to book a job, and the job is the thing that pays you. The number that should run a home-services account is cost per booked job. Here is how to get it, and why the cheapest lead is often the worst deal on the board.
What the dashboard shows you, and why it varies
Across twelve home-services accounts I manage, cost per lead over ninety days ran from about $80 for a lawn-care lead to $309 for a roofing lead, with a median near $128. The order tracks job value. Septic and lawn leads are cheap because the jobs are smaller and the search is specific. Someone typing “septic pumping near me” is close to booking. Roofing and landscaping leads cost more because the jobs are larger and more of the clicks are early-stage shopping.
The spread is about four times, which is the first reason a borrowed benchmark is useless. A number you read for HVAC tells you nothing about what a fencing lead should cost. The full trade-by-trade table, pulled from the same accounts, is on the home-services benchmark page.
There is a second problem underneath the first. In a good share of the accounts I audit, the conversion the dashboard counts is not a real lead: every phone call scored as a win, or no call tracking at all. I broke down what that looked like across these same twelve accounts on that benchmark page. Assume for the rest of this that your tracking is clean. Cost per lead is still not the number to manage on.
The number that gets you paid
A lead is not a customer. A booked job is. To get from one to the other you need two figures Google does not have: your close rate and your average job value. The math is simple.
Cost per booked job = cost per lead ÷ close rate.
Take the roofing account. A $309 lead sounds expensive until you run it through. Close one in four of those leads and each booked job cost about $1,240 in ad spend. Against a $15,000 roof, that is a rounding error.
Now the septic account at an $84 lead, near the bottom of the book. Close one in three and each booked job cost about $250. If that job is a $400 pump-out, more than half of it went to Google. If it is a $6,000 drainfield repair, it is one of the best numbers you own. Same lead price, opposite verdict, and the dashboard cannot see the difference.
That is the whole point. The cheap cost per lead is not automatically the better account. Your close rate and your job value decide it, and those two inputs can flip which trade is winning. Run your own numbers here, not mine. The close rates and job values above are illustrations. Yours are the ones that matter.
Why this comes back to your tracking
Here is the catch that makes the booked-job number hard to chase. Google’s Smart Bidding optimizes toward whatever you set as the conversion. Set it to “lead” and it buys you more leads, cheap ones, whether or not they book. It cannot see which leads became jobs, because that happens in your CRM days later, off the platform.
So the only way to make the algorithm chase booked jobs instead of phone rings is to send the booked job back to it. That is the rebuild I run on every service account, in this order:
- Make one qualified lead the single primary conversion. Not every call. Not every form. The one action that means a real person wants real work.
- Track calls properly, with a minimum call duration, so a fourteen-second wrong number does not get counted as a lead.
- Feed the booked job back to Google. When a lead becomes a scheduled job in the CRM, send it back as an offline conversion with its dollar value attached.
Once the booked job and its value flow back, Smart Bidding stops chasing $84 leads that never book and starts chasing the ones that fill the calendar. The full architecture for that loop is the Lead Quality Stack.
What it costs to leave it
Leave it and you keep managing on the cheap number. The account that counts every call as a win will show you a $40 lead and look like your best performer, right until someone asks how many of those calls turned into jobs. Budget flows to the lowest cost per lead, which is often the account learning the least.
The truth is one query away, and it is the first thing I pull on any account. Trace a month of leads to the jobs that closed. The gap between what the dashboard reported and what the calendar shows is the whole story.
Keep going
If this hit, the next two pieces in the same universe:
- The CLOSE Audit: the 5-pass lead-quality walkthrough. The diagnostic that finds why the conversion behind your cost per lead is wrong in the first place.
- I switched a law firm off Max Clicks. The same booked-job rebuild, run on a $14K/mo legal account, 38% to 72% qualified-lead share over ninety days.
Free PDF: The 25-page Lead Quality Stack. The full architecture for feeding booked jobs back to Google. No email gate.
What’s next
If you run a home-services account, run one number this week: your cost per booked job, not your cost per lead. If you want me to run it with you, that is the free Lead Quality Audit. I look at your conversion setup, your call tracking, and whether your booked jobs make it back to Google, then I tell you which of your numbers are real.
More reading
-
The field your Google Ads audit is reading is the wrong one
conversion_action.primary_for_goal is legacy and will make a clean account look broken. The conversion-goal layer is what actually decides what Smart Bidding buys.
-
The Foreign Hostname (Why I Check Where My Analytics Data Came From)
Four page paths in my analytics project have never existed on my site. A pitch mockup carried the same public key. The provenance check that finds it.
Want a review like this on your account?
Want this kind of review
on your account?
Thirty minutes on the phone. Same person on the call as on the work. Walk out with a clear set of next steps.