Every owner has felt the pull of a cheap lead source. The cost per lead is a fraction of what you pay everywhere else, the volume looks huge, and the spreadsheet practically sells itself. Then the quarter closes and the revenue does not match the invoice. This is the counterintuitive reason cheap leads cost more: the price on the label is not the price you pay. Once you account for the leads you can never book, the labor to sort them, and the low close rate on what remains, the "cheap" channel is often the most expensive one you own.
Google Local Services Ads make this trap easy to fall into because you pay per lead, not per click. A low cost per lead feels like efficiency. But a lead is only worth something if it becomes a job, and the gap between "a lead arrived" and "a truck rolled" is where all the real money hides.
The headline number hides three costs
When you compare sources by cost per lead alone, you are comparing the one number that is easiest to game and least connected to profit. Three costs sit underneath it, and none of them show up on the top line.
- Unbookable rate. A meaningful share of raw leads are simply not workable — wrong service, wrong area, no real intent, or a repeat of a job you already have. Third-party estimates put the unbookable share of raw LSA leads at roughly 45% industry-wide. A cheaper, less-filtered source often runs worse than that average, not better.
- Intake labor and wasted first response. Every junk lead still gets a callback, a text, and a few minutes of a human's attention before anyone knows it is junk. That time is not free, and it is time your team is not spending on leads that would have booked.
- Close rate and opportunity cost. Sources that scrape the bottom of the intent pool convert worse even on the leads that are technically bookable. Meanwhile your best estimators are buried in follow-up on tire-kickers, so the good leads cool off waiting for a call.
Run the math: cost per booked job, not cost per lead
The only number that matters is effective cost per booked job — total spend on a source divided by the jobs it actually produced. The table below contrasts a "cheap" high-volume source against a pricier source that books, holding monthly spend constant at $3,000. The figures are illustrative — plug in your own — but the shape is what plays out again and again.
| Metric | Source A — "cheap" & high-volume | Source B — pricier, but books |
|---|---|---|
| Headline cost per lead | $25 | $60 |
| Leads for a $3,000 budget | 120 | 50 |
| Bookable rate | 35% | 65% |
| Bookable leads | ~42 | ~33 |
| Close rate (of bookable) | 25% | 45% |
| Booked jobs | ~10.5 | ~14.6 |
| Intake time on junk leads | High (78 dead leads) | Low (18 dead leads) |
| Effective cost per booked job | ~$286 | ~$205 |
Illustrative figures for demonstration only. Source A delivers more than twice the leads for the same money, yet it produces fewer booked jobs and costs about $81 more per job. The cheap source loses the moment you measure it by outcomes instead of inputs. And this table is generous to Source A — it does not price in the labor of chasing 78 dead leads a month, or the good jobs that slipped because your team was busy doing it.
Why the cheap source degrades further downstream
The math above is static, but real operations compound. Low-quality volume trains your intake team to move fast and dismiss, which means the occasional good lead in the pile gets the same rushed treatment. Speed-to-lead — one of the factors most tied to booking a home-service job — collapses when your callers are triaging noise. On the LSA side of the ledger, a flood of mismatched leads muddies your own read on what is working, and only a slice of that waste is recoverable. Google retired manual lead disputes around mid-2024 and now uses automated credit that assesses within roughly 72 hours; third-party estimates put recoverable spend at only about 6–7% of what you pay. You do not get most of the junk back.
What to actually optimize for
The fix is not to always buy the most expensive leads — it is to stop buying the cheapest ones on faith. A few disciplines change the picture:
- Measure cost per booked job by source. If you only track one metric, track this one. It reprices every channel honestly overnight.
- Tighten the inputs before you tighten the price. Accurate service categories, correct service areas, and clean job types cut the mismatch that drives most unbookable leads — the same categories Google's automated system is willing to credit.
- Respond instantly to the leads that count. Fast, consistent first response lifts close rate more than a lower cost per lead ever will.
- Value your team's time as a real cost. Every hour spent on junk is an hour not spent closing. Opportunity cost is invisible on the invoice and enormous on the P&L.
Cheap leads are not a bargain and they are not a scam — they are a measurement error. Price the channel by what it books, and the "expensive" source that fills your calendar usually turns out to be the affordable one.
Frequently asked questions
Are cheaper leads always a worse deal?
No. A low cost per lead is fine when the leads still book. The problem is judging a source by its headline price instead of its effective cost per booked job. A cheap source with a high unbookable rate and a low close rate can quietly become your most expensive channel, while a pricier source that books can be cheaper per job.
What is a bookable lead in Local Services Ads?
A bookable lead is one for the service you actually offer, in an area you serve, from someone with genuine intent. Google Local Services Ads charge per lead, and third-party estimates put roughly 45% of raw leads as unbookable — often due to job-type or geographic mismatch. Those two categories are also the ones Google's automated credit system may cover.
How do I calculate my true cost per booked job?
Divide the total spend on a source by the number of jobs it actually booked, not the number of leads it delivered. A shortcut is to take your cost per lead and divide it by your bookable rate times your close rate. Then add intake labor and wasted response time to see the full picture.