Home/Resources/Cost-Per-Booked-Job: The Only Metric That Matters

Strategy guide

Cost-Per-Booked-Job: The Only Metric That Matters

For $5–20M home-service operators Brand voice: receipts, not pitches No paywall, no email gate Updated 2026-Q2
calculator and ledger on real business desk

Your marketing budget is a leaky bucket. Every month you pour money in, every month water hits the floor, and nobody (including your agency) can tell you how many booked jobs actually came from it.

Stop measuring impressions, clicks, and cost-per-click. These are vanity metrics designed to make agencies look busy. The only number that matters is how much you’re actually paying for a booked job on your calendar.

Why Every Other Metric Is Noise

An agency tells you they got 5,000 impressions last month. You stare at that number. Does it mean anything? No.

Then they tell you the click-through rate was 2.3% and cost-per-click was $1.40. Congratulations. You paid $1.40 for someone to look at your ad. That person might be a homeowner in another state, a tire-kicker comparing prices on three tabs, or someone who clicked by accident on mobile. None of that matters.

Here’s what matters: A homeowner calls you. They book a job. You send a crew. You get paid.

Everything between your ad spend and that booked appointment is theater. Impressions don’t pay for fuel. CTR doesn’t cover payroll. CPC doesn’t fill your calendar.

Most agencies obsess over cost-per-click because it’s easy to optimize and makes their performance look good on a dashboard. It costs them nothing to get you cheap clicks. It costs you money to convert them (if they convert at all). They get paid. You eat the difference.

Cost-per-booked-job is the one metric that forces honesty. You can’t fake it. Either the booking happened or it didn’t. Either you paid $45 for that job or you paid $180. There’s no middle ground, no metrics gymnastics, no dashboard theater.

LAUNCHER LEDGER — REAL CLIENT RECEIPTS TRAILING 90 DAYS · 2026-Q2
HVAC-04 HVAC operator, 4 locations — booked jobs added Q1 +842
PLB-02 Plumbing operator, 2 metros — pipeline added Q1 $1.9M
RFG-01 Roofing, regional — cost-per-booked-job reduction (90d) −43%
ELC-03 Electrical, 3 markets — LSA win-rate lift (90d) +38%

How to Calculate Cost-Per-Booked-Job (The Right Way)

This is simple. Most operators get it wrong anyway.

Take your total marketing spend for a channel or campaign over a defined period (usually a month). Divide it by the number of booked jobs that came from that channel during that same period. Done.

Total Marketing Spend / Number of Booked Jobs = Cost Per Booked Job

Example: You spent $3,000 on Google Local Services Ads in March. That channel produced 12 booked jobs that month. Your cost-per-booked-job from LSA is $250.

But here’s where most shops fail: They don’t track attribution carefully. A call comes in on Thursday. Someone else answers. They don’t log which ad the caller saw. By the time you realize it was from your campaign, three other jobs came in and the data is muddy.

Fix this now. Set up a simple system:

  • Use unique phone numbers for each major marketing channel (Google, Facebook, direct mail, etc.).
  • Train your office staff to ask “How did you hear about us?” and log it in your dispatch system.
  • Track which jobs actually booked (not inquiries, not price quotes, not “interested but didn’t schedule”).
  • Use your calendar system as the source of truth. A booked job is on your calendar. Period.
  • Count only jobs from the same period as your spend (if you spent on ads in March, count only March bookings).

Once you have three months of clean data, you’ll have a real number. Not an estimate. Not a guess. A receipt.

What Good Cost-Per-Booked-Job Looks Like (By Vertical)

Numbers are different by trade, market size, and service type. Here’s what we see across the $5–20M operator range:

HVAC

HVAC shops in mid-to-large markets typically see cost-per-booked-job between $120–$280 for paid digital (Google/Facebook). Emergency calls and maintenance agreements skew higher because the service area is bigger and the customer acquisition cost spreads across a smaller booking window.

If you’re above $350 per booked job on HVAC, your ad targeting is too broad, your messaging isn’t filtering tire-kickers, or your landing page is weak.

If you’re below $100, good. You’re either in a small market with low competition or your brand is strong enough to do heavy lifting. Don’t expect that to scale without adjusting spend.

Plumbing

Plumbing runs $100–$240 per booked job in most markets. Emergency/same-day service commands higher cost-per-booking because those calls are expensive to fulfill (truck rolling in 1–2 hours costs more to market for). Routine work (drains, fixtures) tends cheaper because the booking window is longer and the customer is less urgent.

Plumbing is also the most sensitive to service area size. A mom-and-pop shop with one truck in a zip code might see $60–$100. A regional chain with 20 trucks might see $180–$240 because they can reach further.

Roofing

Roofing is the wild card. After a major weather event (hail, tornado, hurricane), cost-per-booked-job can drop to $30–$80 because demand is insane and supply is tight. Homeowners hunt for roofers; you barely need to market.

In normal market conditions, roofing typically runs $200–$500 per booked job. The sales cycle is longer (homeowners take weeks to get estimates and decide). The customer acquisition cost is higher because the average job value is high but so are the touchpoints required to close.

If your roofing cost-per-booked-job is above $600 in a steady market, your follow-up is weak or your pricing is out of range.

Electrical

Electrical tends toward $140–$300 per booked job depending on whether you’re chasing service calls or new construction/remodel work. Service calls are faster to close but lower-ticket. Construction work takes longer but higher-ticket jobs make the math work.

Most electricians underestimate their cost-per-booked-job because they lump all electricians together. You’re not competing for the same jobs as the guy doing panel upgrades. Separate your channels by service type.

Why Your Agency Won’t Report This Number

Ask your agency for cost-per-booked-job. Watch what happens.

They’ll tell you the data is “hard to track” or they “don’t have visibility into your calendar system.” They’ll pivot to cost-per-lead instead. They’ll show you engagement metrics. They’ll say attribution is “multi-touch” and complex.

Translation: They don’t want you to know it because it exposes that they’re inefficient.

An agency gets paid the same whether your cost-per-booked-job is $120 or $450. They have zero incentive to optimize for your actual outcome. They optimize for the metrics they control (clicks, impressions, cost-per-lead). Those look good on their dashboards. You pay the bill. Everyone’s happy except you.

A good agency (or a freelancer, or an in-house marketer) will not only report this number. They’ll obsess over it. They’ll break it down by channel, by offer, by time of week. They’ll experiment to lower it. They’ll know why it’s moving.

If your agency says “we can’t track that accurately” or “that’s your job,” you have the answer you need. Fire them. They’re not accountable to your outcome.

Using Cost-Per-Booked-Job to Make Agency Decisions

Once you know your cost-per-booked-job, you can actually make smart decisions about where to spend money.

Say your Google Local Services Ads run $180 per booked job. Your Facebook campaigns run $310. Your direct mail runs $140. Your Google Ads search campaigns run $220.

In a tight month, you cut Facebook. You double down on direct mail and LSA. You trim search ads slightly. Your budget goes to channels that actually work for you.

This sounds obvious. Almost no operator does it. Most spend based on “what the agency recommends” or “what feels like it’s working” or “where competitors are.” That’s not strategy. That’s guessing with a checkbook.

Here’s a harder decision: If an agency can’t get your cost-per-booked-job below your threshold (the number you need to hit profit margin), you end the relationship. Not because they’re lazy or inexperienced. Because the math doesn’t work. If they’re producing jobs at $420 each and you need $200 to make money, they’re burning cash.

Cost-per-booked-job also tells you when to say no to growth. If your cost-per-booked-job jumps 40% when you expand to a new service area, that expansion isn’t as profitable as it looks. You might still do it, but you know the real cost.

The Conversation You Need to Have Right Now

Call your current marketing person or agency. Ask for cost-per-booked-job by channel for the last three months.

If they give you the number cleanly, you have someone accountable. Keep them.

If they deflect, if they give you a range (“somewhere between $150 and $300”), if they say they need to “pull that data” for two weeks, if they start with “it’s complicated,” you already know what to do.

The number doesn’t lie. If you’re not measuring it, you’re not managing it. And if you’re not managing it, you’re throwing money at a problem hoping it solves itself.

It won’t.

What to Do This Week

Three actions. Do them in order.

1. Audit your last three months of marketing spend. List every channel (Google Ads, Facebook, LSA, direct mail, referrals, etc.) and the dollar amount you spent on each.

2. Go to your calendar or dispatch system. Count the number of actual booked jobs that came from each channel in those same three months. “Booked” means on your calendar. Not inquiries. Not quotes. Jobs that were scheduled.

3. Divide spend by bookings for each channel. That’s your cost-per-booked-job by source. Write the numbers down. Look at them.

Now you know. Next month, when your agency sends you a report with fancy graphs and lots of impressions, you’ll know how to read it. You’ll ask one question: “What’s the cost per booked job?” If they don’t have it, or won’t report it, you’ve already got your answer about whether they’re worth keeping.

This is the only metric that matters. Everything else is noise.

Receipts

Three operators. Three numbers that didn’t exist before us.

Operator confidentiality means we don’t name names publicly. We’ll connect you with the operator on a 1:1 reference call after the diagnostic.

HVAC · 4 LOCATIONS +842 Booked jobs added in Q1

$9M HVAC operator with two underutilized markets. We rebuilt local SEO + LSA + speed-to-lead in 45 days. Q1 booked 842 jobs above prior-year baseline.

Multi-market HVAC · LLL since 2025

PLUMBING · 2 METROS $1.9M New pipeline / Q1

Plumbing operator leaning 90% on referrals. We launched paid + programmatic SEO across two metros. Q1 added $1.9M attributable.

Multi-metro plumbing · LLL since 2025

ROOFING · REGIONAL −43% Cost-per-booked-job, 90 days

Roofing operator with $480 cost-per-booked-job. We rebuilt LSA + landing pages around storm triggers. CPBJ down 43% in 90 days, same spend.

Regional roofing · LLL since 2025

Common questions

Ready to swap dashboards for a calendar full of jobs?

30-minute strategy call. We pull your numbers, find the bottleneck, give you the plan. No deck. No pitch. No follow-up sequence.

3 diagnostic spots open this month