Independence Network·30 mai 2026·8 min read

We Audited 14 HVAC Agencies. 11 Couldn't Name Their Cost-Per-Job

We audited 14 HVAC marketing setups in Q1 2026. 11 couldn't tell us the cost to win one closed job. They reported impressions instead. Here's why that should scare you.

En bref

We audited 14 HVAC marketing setups in Q1 2026. Eleven of them could not tell us the cost to acquire one closed job — they reported impressions, clicks, and 'reach' instead. That gap is why HVAC companies churn agencies fast: 49% drop their PPC agency and 46% drop their social agency, usually because nobody can connect the spend to revenue. The one number that matters is cost-per-closed-job. If your agency can't say it out loud, they're hiding it because it's bad.

"$9,990 for one million impressions."

That was the proudest line on a dashboard an HVAC owner forwarded us in February. His agency sent it monthly. A million impressions. He'd been paying for it for over a year. When I asked him how many furnace installs that million impressions had produced, he forwarded the question to the agency. They never answered with a number. They answered with another dashboard.

We audited 14 HVAC marketing setups in Q1 2026. Eleven of them had the same hole: nobody — not the owner, not the agency — could tell us the cost to win one closed job. They could tell us reach. They could tell us click-through rate. They could not tell us the one number that decides whether the marketing is a profit center or a slow leak.

That's not a small gap. That's the whole game, missing.

The One Number HVAC Marketing Is Supposed to Produce

Cost-per-closed-job. Total spend, divided by the number of paying jobs it produced. Spend $4,000, close 16 jobs, your cost-per-job is $250. Now you can actually decide things — whether to scale, whether to cut, whether the agency is earning its retainer.

Everything else an agency loves to report sits upstream of this number and tells you almost nothing on its own:

  • Impressions measure how many screens your ad touched. You can't deposit a screen-touch.
  • Clicks measure curiosity. Curiosity doesn't replace a compressor.
  • Cost-per-lead is closer, but a $12 lead that never books is more expensive than a $60 lead that closes a $9,000 install.

Cost-per-closed-job is the only one that survives contact with your bank account. And 11 of 14 setups we looked at couldn't produce it.

When an agency reports the metrics that always look good and never the one that can look bad, that's not an oversight. That's a choice.

Why So Many Agencies Can't Say the Number

It's not always malice. Reporting cost-per-job means connecting ad spend to your actual closed jobs — which lives in your CRM, your booking software, or a notebook by the dispatcher's phone. That connection takes setup work most agencies skip. So they report what's easy to pull from the ad platform: impressions, reach, "engagement."

But here's the uncomfortable part. The agencies that can report cost-per-job almost always do, because it makes them look good when it's working. The ones who only ever show you reach are usually hiding a bottom-of-funnel number they don't want you to see. If the cost-per-job were great, they'd lead with it.

This is why HVAC churns agencies on a loop. Roughly 49% of businesses drop their PPC agency and 46% drop their social agency — and the reason underneath most of those breakups is the same: the phone wasn't ringing with paying work, and nobody could prove where the money went. The owner doesn't have the words for it, so it comes out as "they just weren't getting results." What he means is: no one ever showed me cost-per-job.

What the 11 Setups Had in Common

Across the 11 that couldn't name the number, the same broken pieces showed up:

| Broken piece | What we found | What it costs you | |---|---|---| | No CRM-to-ad connection | Spend lived in the ad platform, jobs lived in the CRM, nothing tied them | You can never prove ROI, so you can never scale with confidence | | Vanity-metric reporting | Monthly deck led with impressions and reach | The dashboard always looks fine while revenue stays flat | | No service-type breakdown | Tune-ups and installs counted as one blended "lead" | A flood of cheap tune-up leads hides zero install pipeline | | Slow speed-to-lead | Leads called back hours later, sometimes next day | The job is already booked with whoever answered first | | No show-up tracking | Booked counted as won | Half the "booked" jobs were no-shows nobody chased |

None of these are exotic. Every one is fixable in a week. But you can't fix what you refuse to measure, and a dashboard built on impressions is built specifically so the broken pieces stay invisible.

The three setups that could name their cost-per-job, by the way, were the three growing. That wasn't a coincidence. They measured the thing that mattered, so they could improve it.

What Tracking It Properly Looks Like

This is the same chain we build for every client, HVAC or not: spend → leads → booked → closed → revenue, connected end to end, broken out by service type. It's how a med spa in Nice turned €316 in ad spend into 77 leads and 36 booked appointments in 15 days — and could prove every step, because every step was tracked. Different industry, same discipline.

For HVAC specifically, that means:

  • Conversion tracking wired from the ad to the closed job, not just the form fill.
  • Cost-per-job split by maintenance, repair, and install, because a $250 cost-per-job is a disaster for a tune-up and a steal for a system swap.
  • Speed-to-lead under five minutes, because in home services the first responder wins the job most of the time.
  • Show-up confirmation, so "booked" actually means "happening."

If your HVAC agency has never said the words "cost-per-closed-job" to your face, that's the audit you need. Book a free audit and we'll tell you your number — even if you don't like the answer, and even if you never work with us.

What This Isn't

This isn't a claim that impressions are worthless. Awareness has a place, and in some markets it matters. But awareness is a footnote, not a headline — and an agency that leads every report with reach is managing your perception, not your pipeline.

It's also not a claim that every agency is dishonest. Most just never built the tracking, so they report what they can see. That's a competence gap, not a conspiracy. But the result on your P&L is identical: money out, no proof of money back.

You hired marketing to make the phone ring with paying jobs. The number that proves it did is cost-per-closed-job. If nobody can say it, nobody's actually managing your money.

30-Second Audit: Can Anyone Name Your Cost-Per-Job?

Three honest yes/no questions:

  1. If I called your agency right now, could they tell me your cost to acquire one closed install — in dollars, today?
  2. Does your monthly report show closed jobs and revenue, or does it lead with impressions and reach?
  3. Is your cost-per-job broken out by service type, so cheap tune-up leads aren't hiding an empty install pipeline?

If any answer was no, book a free audit — we'll pull your numbers and tell you exactly what your marketing is costing per job, even if you never work with us.

A million impressions can't fix a furnace. A tracked cost-per-job can build a company. Eleven of fourteen didn't have it. Make sure you do.

Questions fréquentes

What is cost-per-closed-job in HVAC marketing?

Cost-per-closed-job is your total marketing spend divided by the number of paying jobs that spend produced. If you spent $4,000 on ads and closed 16 jobs from it, your cost-per-closed-job is $250. It's the only marketing number that ties directly to revenue. Impressions, clicks, and cost-per-lead are upstream of it; they don't tell you whether the money came back.

Why can't most HVAC agencies report cost-per-job?

Because reporting it requires connecting ad spend to your actual closed jobs in your CRM or booking system, and most agencies never set that tracking up. It's easier to send a dashboard full of impressions and reach, which always looks impressive and can never be judged. If an agency only reports top-of-funnel metrics, it usually means the bottom-of-funnel number is bad.

How much should HVAC companies pay to acquire a job?

It depends on job value. For a $250 tune-up, a $250 cost-per-job is a loss; for a $9,000 system replacement, a $250 cost-per-job is a windfall. The point is not a universal number — it's that you must know your own, per service type. A healthy HVAC program tracks cost-per-job separately for maintenance, repair, and install, because the economics are completely different.

Why do HVAC companies switch marketing agencies so often?

Roughly 49% of businesses churn their PPC agency and 46% churn their social agency, and the most common reason is that they can't see a return. When an agency reports impressions and reach but the phone isn't ringing with paying jobs, trust erodes fast. The churn isn't really about the agency being 'bad' — it's about nobody proving the spend turned into revenue.

What should an HVAC marketing report actually show?

A useful report shows spend, leads, booked jobs, closed jobs, and revenue — in that chain, so you can see where money turns into work. It should break cost-per-job out by service type and show speed-to-lead and show-up rates. Impressions and reach can be a footnote, not the headline. If the headline number is something you can't deposit, the report is decoration.

LF
Léo Ferreira · Fondateur, Independence Network

Ingénieur aérospatial devenu entrepreneur marketing. On gère les campagnes publicitaires (Meta, Google, LinkedIn) de commerces locaux dans plus de 15 secteurs. Meilleur résultat sur un client : 71× de ROAS, 3,21 € de CPL, premier rendez-vous pris 1h27 après le lancement des pubs (Holistic Bien Être, Nice).

LinkedIn →

Independence Network

Vous voulez qu'on s'en occupe ?

On audite, corrige et gère vos campagnes Meta Ads de A à Z. Réservez un appel gratuit de 20 minutes et on regarde vos chiffres ensemble.

Réserver un audit gratuit