June 9, 2026·6 min read·By Karan Bhoir

Cost Per Lead vs Cost Per Booked Job: The Metric That Actually Matters for Contractors

Missed call notification on phone next to contractor shaking hands with homeowner

Your agency sends you a report showing a $60 cost per lead. Looks fine, right? But if only one in ten of those leads actually books a job, you're paying $600 every time a customer gets on your schedule. That's the formula no agency puts in the subject line: CPL divided by booking rate equals your real cost per booked job.

Google Ads for local service businesses overview

Key Takeaways

  • Cost per lead is what agencies report. Cost per booked job is what you actually pay per customer.
  • The formula is simple: CPL / booking rate = cost per booked job.
  • Non-branded HVAC ads average a $149 CPL with a 37.6% booking rate, putting the real cost at around $396 per job (SearchLight Digital, Jan 2026).
  • At a $2,830 average HVAC job value, that's a 7.1x return on ad spend.
  • Most contractors don't know this number. You should.

Why Do Agencies Report CPL Instead of Cost Per Booked Job?

Cost per lead is low, clean, and easy to defend. According to SearchLight Digital's analysis of 816 ad accounts (Jan 2026), branded HVAC campaigns average a $34 CPL. That number looks great in a monthly report. Non-branded campaigns average $149. Still a defensible number. Neither tells you how many of those leads turned into work.

Agencies don't necessarily hide this. Many simply don't have access to your booking data. Your CRM lives in ServiceTitan or Housecall Pro. Their dashboard lives in Google Ads. The two systems rarely talk to each other unless someone sets that up deliberately.

So they report what they can see. And CPL is what they can see.

Citation Capsule: Branded HVAC Google Ads campaigns average a $34 cost per lead, while non-branded campaigns average $149, based on data from 816 ad accounts analyzed by SearchLight Digital in January 2026. Neither figure accounts for how many of those leads convert into booked appointments.

The result is a gap between what you're told and what's actually happening to your money. Your agency celebrates a $40 lead. You wonder why the phone rings but the schedule stays half-empty. Both of you are looking at different numbers for the same campaign.

How to choose between flat fee and percentage agency models


What Is the Actual Formula for Cost Per Booked Job?

Cost per booked job = CPL / booking rate. That's the whole thing. A $149 HVAC lead with a 37.6% booking rate costs you $396 to get one job on the books (SearchLight Digital, Jan 2026). A $228 roofing lead with a 30% booking rate costs $760 per booked job (LocaliQ, Feb 2026).

In our experience working with contractors, the booking rate is the variable that catches most owners off guard. They accept the CPL without questioning what happens after the call lands.

Worked Example: HVAC Non-Branded Campaign

Here's the math on a real campaign type. Non-branded HVAC ads are searches like "AC repair near me" rather than your company name.

MetricNumberSource
Cost per lead$149SearchLight Digital, Jan 2026
Booking rate37.6%SearchLight Digital, Jan 2026
Cost per booked job$396Calculated
Average HVAC job value$2,830Service Direct case study
ROAS (return on ad spend)7.1xCalculated

So a campaign your agency might report as "costing $149 per lead" is actually returning $7.10 for every $1 you spend on it. That's a very different story. And it only becomes visible once you run the booking rate through the formula.

Branded vs. Non-Branded: Two Very Different Pictures

Non-branded gets more scrutiny because the CPL is higher. But branded HVAC campaigns show a 55.3% booking rate against a $34 CPL (SearchLight Digital, Jan 2026). That puts the cost per booked job at roughly $61.

If you're spending $1,000 a month on branded search, you're booking around 16 jobs. If that same $1,000 goes to non-branded, you're booking around 6.7 jobs. Neither is wrong. They serve different objectives. But you can't make that call if you're only watching CPL.

Roofing and Plumbing: The Same Math, Bigger Numbers

Roofing leads average $228.15 per lead (LocaliQ, Feb 2026). Industry booking rates for roofing typically run 25-35%. At a 30% booking rate, you're paying roughly $760 per booked roof inspection. Plumbing leads often come in cheaper but booking rates for emergency calls tend to run higher, which compresses the gap.

The trade changes. The formula doesn't.

Citation Capsule: Roofing Google Ads campaigns averaged a $228.15 cost per lead as of February 2026, according to LocaliQ industry benchmark data. At a 30% booking rate, that translates to approximately $760 per booked job appointment.


What Does a "Good" Cost Per Booked Job Look Like by Trade?

Roofing contractor on a job site answering a phone call

A good cost per booked job is any number where your gross margin on the average job leaves enough to cover acquisition cost and still run profitably. Service Direct's case study data puts the average HVAC job value at $2,830. A $396 cost per booked job on that job value is a 7.1x ROAS, which is solid by any standard.

The benchmark question contractors should actually ask is not "is my CPL good?" but "does my cost per booked job stay below 15% of my average job value?" That ratio holds up across HVAC, roofing, and plumbing regardless of lead source.

A few rough benchmarks based on available data:

  • HVAC (non-branded): Target cost per booked job under $450. Average job value around $2,830.
  • HVAC (branded): Target cost per booked job under $80. Much easier to hit.
  • Roofing: Average job values run $8,000-$15,000 for full replacements. A $750-$1,000 cost per booked job is often still profitable.
  • Plumbing: Emergency and repair jobs average $250-$500. Your cost per booked job needs to stay under $75-$100 to keep margins workable.

These aren't universal rules. Your market, your close rate on estimates, and your average ticket all move the target. But they give you a starting benchmark that's far more useful than a CPL number sitting in a Google Ads report.


How Do You Calculate Your Own Cost Per Booked Job?

Pull your last 90 days of ad spend data and your last 90 days of booking records. You need three numbers: total ad spend, total leads generated, and total jobs booked from those leads. Divide spend by leads to get CPL. Divide booked jobs by total leads to get booking rate. Then divide CPL by booking rate.

Don't have 90 days of clean data? Start tracking now. Even 30 days gives you a directional number.

Here's what you're looking for in your CRM or call tracking platform:

  1. Lead source tagging: Every call, form fill, and chat needs a source label. "Google Ads" is the minimum. "Google Ads - branded" vs "Google Ads - non-branded" is better.
  2. Disposition tracking: Each lead needs an outcome. Booked, not booked, left voicemail, no answer. Most CRMs support this natively.
  3. Job value tracking: Once a job closes, log what it billed. This is what eventually gets you to ROAS.

According to Invoca and Blue Grid Media research, 78% of customers hire the first contractor who responds. That means your booking rate isn't just a marketing problem. It's a speed-to-answer problem. Improving your answer rate from 60% to 80% on inbound calls can move your booking rate more than any campaign optimization.


What Should You Ask Your Agency to Report Instead?

Ask for a monthly report that includes CPL, estimated booking rate (even if pulled from call recordings rather than your CRM), and a calculated cost per booked job. If your agency can't produce that, ask them to set up conversion tracking that fires on confirmed appointment events, not just form submissions.

Full Google Ads strategy for HVAC contractors, including conversion setup

Specifically, here's what the report should show:

  • Leads by campaign and by keyword type (branded vs. non-branded)
  • Call duration distribution (calls under 30 seconds are usually not real leads)
  • Booking rate by campaign, even if estimated from call audits
  • Cost per booked job by campaign, calculated from the above
  • Revenue or job value tracked if your CRM is connected

Most agencies won't offer this by default. You have to ask. Some will push back because it exposes campaigns that generate cheap leads that never book. That pushback is itself informative.

Citation Capsule: Service Direct's case study data reports that 59% of contractor calls result in booked appointments, with HVAC averaging a $2,830 job value. Used alongside CPL data, these benchmarks allow contractors to calculate cost per booked job without a full CRM integration.


How Do You Set Up Tracking That Captures Booked Jobs, Not Just Form Fills?

Business owner reviewing a performance spreadsheet with cost-per-lead and booking rate columns

The gap between "form fill" and "booked job" is where most contractor ad accounts bleed money. A form fill fires a conversion. Google Ads credits the campaign. But if that lead never answers a callback, the campaign looks better than it is.

The most reliable fix we've seen is a three-step confirmation sequence: call tracking fires on answer (not ring), a secondary conversion fires when a call exceeds 90 seconds, and a third conversion fires when the booking is confirmed in the CRM via webhook or offline conversion import. Most contractors only have step one. Step three is what actually matters.

Here's how to close the gap without a developer:

  1. Use call tracking software (CallRail, WhatConverts, or similar) and set your conversion to trigger only on calls over 60-90 seconds. Short calls are almost never bookings.
  2. Set up Google Ads offline conversion imports. Your CRM sends a signal back to Google when a job gets booked. Google then attributes that booking to the keyword and campaign that drove it.
  3. Tag your thank-you page or booking confirmation screen as a separate, higher-value conversion event. This separates real bookings from browse-and-bounce form fills.
  4. Audit call recordings monthly. Even without automation, a one-hour monthly call audit of your highest-volume campaigns will show you which lead sources actually book vs. which just ring.

None of this requires a large budget or a developer on call. CallRail starts at $45/month. Offline conversion imports are built into Google Ads for free. The setup takes an afternoon.


Frequently Asked Questions

What is cost per booked job for contractors?

Cost per booked job is your total ad spend divided by the number of jobs that actually made it onto your schedule. It's calculated as CPL divided by your booking rate. A $149 HVAC lead with a 37.6% booking rate equals a $396 cost per booked job (SearchLight Digital, Jan 2026). It's a more honest metric than CPL alone.

Full explanation of HVAC Google Ads CPL benchmarks

Is a $149 CPL too high for HVAC?

Not necessarily. Non-branded HVAC Google Ads averaged $149 per lead across 816 accounts in January 2026 (SearchLight Digital). With a 37.6% booking rate, that's a $396 cost per booked job against a $2,830 average job value, which is a 7.1x ROAS. The CPL alone doesn't tell you much. The booking rate and job value are what determine whether the number is good or bad.

Why does my booking rate matter more than my CPL?

Because booking rate is the multiplier applied to every CPL number. A campaign with a $60 CPL and a 10% booking rate costs $600 per booked job. A campaign with a $120 CPL and a 50% booking rate costs $240 per booked job. The cheaper leads are twice as expensive per actual job. Booking rate changes the entire cost structure of your ad spend.

How quickly do contractors need to respond to win the booking?

Speed matters more than most contractors expect. According to Invoca and Blue Grid Media research, 78% of customers hire the first contractor who responds to their inquiry. That means a faster answer rate is often the single biggest lever for improving your booking rate without touching your ad campaigns at all. If you're letting calls go to voicemail, you're giving jobs to whoever picks up first.


Stop Optimizing the Metric Your Agency Can See

CPL is a starting point, not a finish line. It tells you what you paid to get someone's attention. Cost per booked job tells you what you paid to get work. Those are different things, and most contractors only track one of them.

The formula is simple. CPL divided by your booking rate. Run it on your last 90 days of data. If you don't have clean booking data yet, start collecting it this week. Set your call tracking threshold to 90 seconds. Ask your agency for a cost-per-booked-job line in the next report.

You might find your campaigns are doing better than you thought. A $396 cost per booked job on a $2,830 HVAC ticket is a 7.1x ROAS. That's worth continuing. You might also find a campaign generating cheap leads that never book, draining budget with nothing to show. You won't know until you run the math.

The number exists. You just have to calculate it.

Ready to know your real cost per booked job? Book a free strategy call and we'll pull your current CPL data, estimate your booking rate, and show you what your campaigns are actually returning.

Compare agency pricing models that align incentives with booked jobs


Written by Karan Bhoir, founder of Demand Prism. Demand Prism manages paid ads, websites, and lead systems for local service contractors on a flat monthly fee.

Want results like this for your business?

10 booked calls in 30 days or we waive our fee. One specialist, one flat fee, one guarantee.

Book a free strategy call