Cost per booked job: what good looks like
Cost per booked job is the marketing metric that actually matters for a contractor: not what you paid to generate a lead, but what you paid to put a job on the board. Here is how to build a target from your own numbers, why lead-source averages mislead, and how to watch the figure in real time before ad spend quietly outpaces revenue.
Definition
Cost per booked job = total marketing spend ÷ number of jobs booked from that spend
Cost per booked job measures what you paid, across one channel or all channels combined, to convert a homeowner into a scheduled appointment. It is a downstream metric: it starts where cost per lead stops, and it factors in the conversion work your CSRs do between a caller and a booked slot. For a home-service company, cost per booked job is often more actionable than cost per lead because two channels can generate the same CPL while delivering very different booking rates.
The full KPI definition lives on the cost-per-booked-job KPI page. This page is about setting a sensible target and tracking it by channel and season.
Warning
Data visibility gap: your ad platform shows CPL, not cost per booked job
Google Ads, Meta, and most lead-gen platforms report cost per lead. Your CRM or job-management system holds the booked-job count. Unless those two data streams are connected in a single view, you cannot calculate cost per booked job without building a spreadsheet after the fact. Most operators discover this gap when they try to compare channels: Google looks expensive per lead but books at 70 percent, while an aggregator looks cheap but books at 25 percent. The real cost per booked job tells a completely different story.
Why cost per lead is not enough
Imagine an HVAC company running two channels in August. Google Search Ads deliver leads at $85 each, which sounds steep. Local Services Ads (LSA) deliver leads at $42, which looks like a win. But when the CSR team books those leads, the Google callers book at 72 percent and the LSA callers book at 38 percent.
Google: $85 ÷ 0.72 = $118 per booked job. LSA: $42 ÷ 0.38 = $111 per booked job. The gap narrows to almost nothing once you account for conversion. And if the Google jobs average a higher ticket, the channel that looked overpriced is suddenly the most efficient dollar in the budget.
That is why a cost-per-booked-job target must be set by channel, not as a single blended number. A blended average will always obscure the channel worth doubling down on and the one worth cutting.
Sample channel breakdown: CPL versus cost per booked job (illustrative HVAC company)
| Channel | Cost per lead | Booking rate | Cost per booked job | Action signal |
|---|---|---|---|---|
| Google Search Ads | $85 | 72% | $118 | High intent; protect budget |
| Local Services Ads | $42 | 38% | $111 | CPL looks cheap; cost per job is similar |
| Referral / word of mouth | ~$0 direct | 85–90% | Near zero | Protect reviews and referral programs |
| Membership / repeat customer | ~$0 direct | 90%+ | Near zero (covered by membership fee) | Membership ROI is enormous; track separately |
| Aggregator / lead-gen platform | $30–$55 | 25–40% | $75–$220 | Wide range; audit booking rate before scaling |
Info
Quick example: a plumbing company's real cost per booked job
A plumbing company spends $8,400 in a month across Google Ads and an aggregator, generating 140 leads total. Of those, 82 become booked jobs. Cost per booked job: $8,400 ÷ 82 = $102. If the average ticket is $380 and gross margin is 55 percent, the company earns about $209 in gross profit per booked job before any tech or material cost. At $102 per booked job, the marketing math works. At $200 per booked job, it becomes a serious conversation about channel mix, pricing, or booking-rate coaching. These are illustrative numbers; your trade, market, and pricing will produce different figures.
Illustrative cost per booked job ranges (starting points only)
There is no single correct number. Cost per booked job varies by trade, season, market size, service type, ticket size, and how you define a booked job. Use these illustrative ranges as a conversation starter, not a report card. Always compare to your own prior period first.
- Cost per booked job vs. ticket and marginAs a rough internal check: if marketing cost per booked job is under 10–15 percent of your average ticket, the channel is usually worth keepingGood
- Current
- Your shop
- Target
- Under ~10–15% of avg ticket
- Watch zone: cost approaching 20% of ticketProfit per job is compressing; investigate booking rate and channel mix before adding spendWatch
- Current
- Your shop
- Target
- ~15–20% of avg ticket
- Action zone: cost exceeds 20% of ticketMarketing is eating margin; review channel efficiency, CSR booking rate, and average ticket togetherPoor
- Current
- Your shop
- Target
- Over ~20% of avg ticket
- Blended cost per booked job (all channels)A blended number is a starting point; always break it out by channel to find the real storyWatch
- Current
- Your shop
- Target
- Set from 90-day baseline
- Referral and repeat cost per booked jobIncluding these in a blended average will pull it down and mask paid-channel inefficiency; report separatelyGood
- Current
- Near zero
- Target
- Track to understand true channel value
| Metric | Current | Target | Status |
|---|---|---|---|
| Cost per booked job vs. ticket and marginAs a rough internal check: if marketing cost per booked job is under 10–15 percent of your average ticket, the channel is usually worth keeping | Your shop | Under ~10–15% of avg ticket | Good |
| Watch zone: cost approaching 20% of ticketProfit per job is compressing; investigate booking rate and channel mix before adding spend | Your shop | ~15–20% of avg ticket | Watch |
| Action zone: cost exceeds 20% of ticketMarketing is eating margin; review channel efficiency, CSR booking rate, and average ticket together | Your shop | Over ~20% of avg ticket | Poor |
| Blended cost per booked job (all channels)A blended number is a starting point; always break it out by channel to find the real story | Your shop | Set from 90-day baseline | Watch |
| Referral and repeat cost per booked jobIncluding these in a blended average will pull it down and mask paid-channel inefficiency; report separately | Near zero | Track to understand true channel value | Good |
Formula
Cost per booked job = total channel spend ÷ booked jobs from that channel
The key decision is scope: are you calculating by channel, by campaign, by trade, or across the whole company? Start by channel so you can act on the number. Exclude referral and repeat calls from the paid-channel calculation, or report them in a separate row. Re-run the calculation monthly, and compare the same month year-over-year to account for seasonal demand swings.
Worked example: $8,400 spend ÷ 82 booked jobs = $102.44 per booked job for the month.
What cost per booked job looks like on a marketing dashboard
When ad-platform spend data and CRM booking data are consolidated in one place, cost per booked job becomes a live number you can watch through the day. These tiles illustrate a marketing board with call and booking data connected.
Dashboard figures are illustrative. Actual values depend on your ad spend, CRM, and booking data.
How to set and improve your cost per booked job target
01 Pull 90 days of spend and booked jobs by channel
Export ad spend from each platform and booked-job counts from your CRM or job-management system. Match them by date range and source. This is your baseline; most shops discover their true cost per booked job is 30 to 50 percent higher than the cost per lead they have been reporting.
02 Calculate by channel, not blended
Run the formula for each channel separately. Google Ads, LSA, an aggregator, direct, and referral will produce very different numbers. The channel with the lowest CPL is rarely the channel with the lowest cost per booked job.
03 Set a channel-level target from your own baseline
Take each channel's 90-day average cost per booked job and set a 5 to 10 percent improvement target. Borrowing industry averages without knowing your own baseline will produce a number that is either too easy or impossible given your trade, market, and team.
04 Pair it with booking rate and average ticket
Cost per booked job alone does not tell you if the channel is profitable. Add average ticket and gross margin per job. A channel that costs $180 per booked job but books $900 average-ticket service calls may outperform a channel with a $90 cost per booked job but $280 average tickets.
05 Watch it monthly and compare year-over-year
Seasonal demand swings make month-over-month cost comparisons misleading. Compare August to August, not August to May. A real-time dashboard that shows MTD cost per booked job alongside prior-year MTD lets you act during the month, not after the books close.
Owner takeaway
- Cost per booked job is more actionable than cost per lead because it captures your CSR team's conversion work, not just the ad platform's delivery.
- Always calculate by channel. A blended average will hide the channel worth scaling and the one draining budget.
- Compare cost per booked job to your average ticket and gross margin, not to a borrowed industry number.
- Most operators cannot calculate this in real time because ad spend and booked jobs live in different systems. Connecting those data streams is the first practical step.
Cost per booked job benchmark FAQs
See your ad spend and booked jobs side by side in one dashboard
Datacube can consolidate marketing spend from your ad platforms and booked-job data from your CRM into a real-time marketing dashboard, so cost per booked job, booking rate, and channel ROAS are live numbers, not end-of-month spreadsheet calculations. See what your marketing board could look like.
Keep exploring
Related
Go deeper
