Ask most contractors what a new job costs to win and you'll get a cost-per-lead number — total spend divided by phone calls or form fills. It's the easiest figure to pull and the most misleading one to manage by, because a lead is not a booked job and a booked job is not billed revenue. Here's how to do the math the way it actually predicts ROI.
The four steps a dollar travels
Every marketing dollar has to survive four conversions before it shows up as revenue. Cost-per-lead only measures the first one:
From spend to revenue — where the cost really lands
A worked example
Start with a neutral, non-vendor anchor. WordStream's 2025 benchmarks for "Home & Home Improvement" on Google Ads — drawn from 16,446 US campaigns — show an average cost per lead of $90.92, a 7.33% conversion rate, and a $7.85 average click.1 Now follow that lead down the funnel:
| Step | Rate | Running cost per outcome |
|---|---|---|
| Cost per lead | — | $911 |
| Lead → job booked | ~42% | ~$2173 |
Using ServiceTitan's typical 42% booking rate — booked jobs per opportunity call — the same dollar that looked like a $91 acquisition at the lead stage is really costing closer to $217 per job that actually lands on the calendar.3 Neither number is "wrong" — but only the second one tells you whether the channel pays for itself. Raise that booking rate and the cost per job falls with no extra ad spend; let calls go unanswered and it climbs.
Why channel-blind averages mislead
Blended cost-per-acquisition figures hide everything that matters. A repeat customer who calls back at near-zero cost and an emergency lead from paid search at several hundred dollars average out to a number that describes neither. A maintenance-plan member and a one-time install have wildly different economics. ROI lives at the channel level, tied to the revenue each channel actually generated — not to a blended average that flatters the expensive channels and punishes the cheap ones.
The leak nobody prices in: the unanswered call
Here's the step the cost-per-lead view never catches. Across home services, Invoca found only 61% of inbound calls reach a live person.2 You already paid to generate those calls. Every missed one raises your true cost per booked job without ever showing up in a cost-per-lead report — which is exactly why the lead-stage number feels cheap while the schedule doesn't fill. The fix isn't more spend; it's catching the calls you already bought.
Turning this into ROI
Once you have a real cost per booked job, ROI is just that against the value the job produces. Rather than borrow a vendor's headline "average ticket" — they swing from a few hundred dollars to five figures with little sourcing — build your own from data you control:
Job value = your average revenue per completed job × the repeat and referral work it brings over time. Pull the first figure from your own invoices; pull repeat behavior from your customer records. A transparent estimate you can defend beats a borrowed number you can't.
Sources & methodology
Figures are drawn from the sources below. Where a metric has no authoritative primary source, it is labeled as an industry estimate in the text. Dasher does not yet publish first-party benchmarks; this analysis aggregates public data.