Cost Per Booked Job: The Only Google Ads Metric That Actually Matters for Service Businesses

If you’re running Google Ads for a service business and your reporting shows click-through rate, impressions, and average CPC — but not cost per booked job — your agency is measuring the wrong things. Here’s how to calculate it yourself and what to do with the number.

Full calculation walkthrough

Benchmarks by trade

What to do when it’s too high

What is cost per booked job?

Cost per booked job (CPJ) is the total amount you spend on advertising to produce one confirmed, scheduled service appointment. It’s different from “cost per lead” or “cost per call” — those are earlier in the funnel and inflate performance numbers by including unqualified contacts.

The formula is straightforward:

Cost Per Booked Job = Total Ad Spend ÷ Number of Booked Jobs from Ads

For example: if you spent $4,000 last month on Google Ads and booked 32 jobs that came from paid search, your CPJ is $125. Whether that’s good depends entirely on your average ticket size — more on that below.

How to calculate cost per booked job (step by step)

Step 1: Set up proper call and form tracking

You can’t calculate CPJ without knowing which booked jobs came from ads. You need:

  • Call tracking numbers tied to Google Ads campaigns (CallRail, Google call forwarding, or similar)
  • Form submission tracking if you take online booking requests
  • A way to tag calls and forms as “booked” — either in your CRM or manually in a call review process

Step 2: Pull your ad spend for the period

Use a clean time window: last 30 days, last 90 days, or last full month. Make sure you’re looking at total spend, not just a subset of campaigns, unless you want CPJ per campaign (which is more useful — more on that below).

Step 3: Count booked jobs that originated from ads

This is where most businesses fall short. “Leads from ads” and “booked jobs from ads” are not the same number. Booked means:

  • The call or form came through an ad-tracked number or form
  • The customer scheduled an appointment (tech dispatch confirmed, or estimate booked)
  • The job is on the books — not just “interested” or “will call back”

Step 4: Divide and compare to your average ticket

Take your spend ÷ booked jobs. Then compare CPJ to your average job ticket:

  • If average ticket is $400 and CPJ is $80, you’re at 20% CAC-to-ticket — strong for most service businesses
  • If average ticket is $400 and CPJ is $250, you’re at 62.5% — the account has a problem
  • If average ticket is $8,000 (roofing or HVAC replacement), $300 CPJ is excellent

Cost per booked job benchmarks by trade

These are ranges from well-managed accounts in mid-to-large markets. Your numbers will vary by market competition, ad spend level, and how tightly the account is structured. Use these as directional targets, not guarantees.

  • Plumbing (emergency): $80–$160 • Avg ticket $350–$700
  • Plumbing (drain cleaning): $50–$110 • Avg ticket $150–$400
  • HVAC (emergency repair): $90–$180 • Avg ticket $250–$600
  • HVAC (system install): $120–$300 • Avg ticket $6K–$14K
  • Electrical: $80–$200 • Avg ticket $300–$800
  • Roofing (replacement): $150–$400 • Avg ticket $8K–$20K
  • Roofing (repair): $80–$200 • Avg ticket $400–$1,500
  • Dental (new patient): $60–$150 • First-year production $400–$900
  • Dental (implants): $150–$400 per consult • Case value $3.5K–$6K+
  • Home cleaning: $30–$80 • First-year revenue $600–$2K (recurring)

Note: these assume proper call tracking, tight match types, and segmented campaigns. Accounts running broad match with no negatives will often run 2–3× these numbers.

What to do when your cost per booked job is too high

If your CPJ is significantly above the benchmarks for your trade, the problem is almost never “we need more budget.” It’s structural. Here’s the diagnostic framework we run:

Account-side issues

  • Broad match or Performance Max eating budget on low-intent queries — check your search terms report
  • No negative keyword list, or a stale one that hasn’t been updated in months
  • All service types in one campaign — blended CPA targets don’t work when ticket sizes vary 10×
  • Bidding on competitor brand terms without a separate budget or strategy

Operations-side issues

  • Slow answer rate — missed calls are wasted spend; track call-to-booking rate separately from CPJ
  • Calls going to voicemail after hours when ads are still running
  • CSR close rate below 60% on qualified inbound calls — a sales training problem, not an ad problem
  • Booking rate varies by time of day or day of week in ways that should be reflected in ad scheduling

The fastest wins usually come from: pulling the search terms report and adding negatives, splitting campaigns by service type, and reviewing the last 30 days of calls to identify which are actually booking.

Get your real cost per booked job calculated

We’ll pull 90 days of data from your Google Ads account, run it against your call tracking and CRM data, and calculate your actual CPJ by campaign and service type. Then we’ll show you exactly where the structural problems are and what we’d do to fix them. No pitch — just the math.

Calculate My Cost Per Booked Job