← Back to Blog
Lead GenerationHVACPlumbingAppliance RepairAttribution

HVAC and Plumbing Lead Generation: Count Booked Jobs, Not Leads

2026-10-29 · updated 2026-11-05
HVAC and Plumbing Lead Generation: Count Booked Jobs, Not Leads
Contents
Where do HVAC and plumbing leads come from?Why do bought leads book worse than owners assume?What is the difference between cost per lead and cost per booked job?Why can't most owners see their cost per booked job?How do you measure cost per booked job?Should you dispute invalid Local Services Ads leads?Which lead source is best for appliance repair, HVAC or plumbing?What should you fix before buying more leads?

Every week an HVAC or plumbing owner gets a call from someone selling leads. The pitch is always a cost per lead, and it always sounds reasonable. What the pitch never includes is the number that decides whether the leads make money: how many of them turn into booked, paid jobs.

This article covers where home service leads actually come from, why the leads you buy book worse than most owners assume, and how to measure cost per booked job, which is the only number that lets you compare one lead source with another honestly.

Where do HVAC and plumbing leads come from?

Most HVAC, plumbing and appliance repair leads come from five places: Google Local Services Ads, regular Google Ads, lead marketplaces, the Google Business Profile, and the company website through organic search. Repeat customers and referrals are a sixth source, and usually the cheapest one.

Each source charges you in a different way, which is exactly why cost per lead is a poor way to compare them:

Source What you pay for What to check
Local Services Ads Each charged lead, mostly phone calls How many charged leads were invalid, and whether credits come back
Google Ads (search) Each click, whether or not it calls Whether the account counts real calls and forms, or page views
Lead marketplaces Each lead or each request Whether the lead is exclusive or shared with other companies
Google Business Profile No per-lead fee, only setup and upkeep Whether its calls have their own tracked number
Website (organic search) No per-lead fee, only the work on the site Whether website leads keep their source in the CRM

The paid sources show you a cost per lead on day one. The unpaid ones show you nothing unless you build the tracking, so they often look worthless when they are not.

Why do bought leads book worse than owners assume?

Bought leads book worse than expected for two separate reasons: some of the leads you are charged for were never real customers, and some real customers are lost on the call. Most owners blame the first reason for everything and never measure the second.

On one multi-location residential appliance repair account, an audit of 2,740 charged Local Services Ads leads found 358 that were invalid, 13.1%: wrong service area, wrong service, spam or duplicates. That audit counted only leads that were invalid by the platform's own definition. Those are leads the business paid for that could never have become a job.

The second leak is bigger and harder to see. When call recordings were read end to end on the same kind of account, the calls that did not book failed in the same few ways: the dispatcher left the close to the customer ("let me call you back," "okay, thank you"), a price question was refused instead of answered with a range, or a dropped line was never called back. Those were valid leads with a real problem, and the business paid for them in full. The patterns and how to coach them out are in why paid leads do not book.

What is the difference between cost per lead and cost per booked job?

Cost per lead is what you spent divided by the number of leads. Cost per booked job is what you spent divided by the number of jobs that actually got booked from those leads, which is always a larger number and the one that tells you whether a source is profitable.

The relationship is simple. If half of a source's leads book, your cost per booked job is twice your cost per lead. If a quarter book, it is four times. Two sources with the same cost per lead can have very different costs per booked job, and a source with a higher cost per lead can be the cheaper one once you count what books.

Number How to calculate it What it tells you
Cost per lead Spend ÷ leads What the platform charged you
Valid lead rate Valid leads ÷ charged leads How much of the spend was ever usable
Booking rate Booked jobs ÷ valid leads How well the phone handles real customers
Cost per booked job Spend ÷ booked jobs What a job from this source really costs
Revenue per booked job Invoice total ÷ booked jobs Whether that cost is worth paying

The last two rows are the ones that matter. Both need data from your CRM, not from the ad platform.

Why can't most owners see their cost per booked job?

Most owners cannot see cost per booked job because the CRM does not know where most jobs came from. Dispatchers type jobs in by hand while the phone rings, the lead source field is one dropdown among many, and it gets skipped.

On a residential appliance repair company, 45% of jobs in the CRM had no source at all. The same pattern showed up on the website side: the site produced about 75 genuine leads in a month, counted at the form with spam removed, while the CRM credited the website with three jobs in that same month.

Even the booking rate itself can be wrong. In one market, 63 paid phone leads were read end to end. The booking rate on the CRM record was 49%. Once callbacks made from a second phone number were matched to the original leads, the real rate was 56%. The team had been treating a seven-point gap as a sales problem when it was a tracking problem.

And channels get mixed up. On the same company, bookings billed through Local Services Ads at full lead price looked identical to organic jobs in the CRM, and bookings from a form inside the Google Business Profiles were credited to the website. Until that was untangled, the owner could not tell which source deserved the budget.

How do you measure cost per booked job?

You measure cost per booked job by making every lead carry its source into the CRM automatically, then matching jobs and invoice amounts back to that source. The steps below work without replacing your CRM or changing how dispatchers book jobs.

  1. Give each channel its own phone number. A website number, a number for each Business Profile and the ad platforms' own tracked numbers. A call to that number belongs to that channel, with no software needed.
  2. Tag the website link in your Business Profile, so profile visits are not mixed up with organic search. The setup is on Google Business Profile management.
  3. Store the first source of every website visitor and pass it into the form as a hidden field, so the lead arrives already carrying where it came from.
  4. Match leads to CRM jobs by phone number, not by the source field. A normalized phone number is the one key a dispatcher does not have to type correctly.
  5. Reconcile every month. Compare what each channel recorded with what the CRM kept. The gap reopens quietly the moment someone's habits change.

On the appliance repair company this chain re-attributed 11,724 jobs to their real source. The full method is on call tracking and lead attribution. Tracking goes live within about a week, but it is not retroactive, so the sooner it starts, the sooner you have a number to argue with.

Should you dispute invalid Local Services Ads leads?

Yes, it is worth disputing leads that were clearly invalid, but treat credits as a discount on future leads, not as money back. A credit is advertising credit inside the Local Services Ads account, and it cannot be withdrawn to your bank.

Results also swing a lot from one period to another. On the 18-location account above, the first audit across seven locations brought $2,730.54 in credits within about ten days. In a later cycle on the same account, 3,614 filings produced 14 credits, and I told the client to stop running the tool. The platform decides, and its policy moves. The full audit, including both cycles, is on Local Services Ads lead recovery.

One more change worth knowing: Google has replaced the old Google Guaranteed badge with a Google Verified badge and ended the money back guarantee for Local Services Ads. According to Google's help page, reimbursement requests only cover services booked before December 7, 2025.

Which lead source is best for appliance repair, HVAC or plumbing?

There is no single best lead source for every home service company. The best one is the source with the lowest cost per booked job and a revenue per job that covers it, and you can only find that out by measuring all of them the same way.

What tends to differ between sources is speed and control. Paid sources such as Local Services Ads and Google Ads produce calls within days and stop the day you stop paying. The Business Profile and the website take longer, typically one to three months before revenue moves, but they have no per-lead fee and keep working when the ad budget pauses. A business that relies only on paid leads is renting its phone calls.

What should you fix before buying more leads?

Before buying more leads, fix what happens to the leads you already pay for: tracking that tells you where each job came from, a callback for every missed or dropped call, and a dispatcher script that offers a time instead of waiting for the customer to call back.

None of the three needs a new platform, and each one raises the value of every lead source at once. Buying more leads into a phone line that loses them only makes the loss bigger.

The tracking side is described on call tracking and lead attribution, and the paid lead audit on Local Services Ads lead recovery. Fixed prices for both are on pricing. If you want to know what your leads really cost per booked job, start with the free written diagnostic.

Related:

Related service pages
→LSA invalid lead recovery: +$2,730 recovered in 10 days. Automated dispute pipeline.→AI citation visibility: ChatGPT went from naming a client once to 813 times in six weeks.