For HVAC Companies

Which ads sold systems, not service calls?

Match installed equipment and invoiced work to the calls and ads that produced them, so the channel that fills your install schedule is obvious.

No card required · Nothing to install · Cancel anytime

The blind spot

What's actually happening

A $180 diagnostic and a $14,000 system replacement come from the same ad and the same phone number. Your cost-per-lead report treats them as one lead each, which is why the channel that actually pays for the trucks can look like the worst performer.

Ranked by installed value

Replacements and installs rank above service calls, because that is what they are worth.

Season-aware comparison

Compare this August with last August, so a heatwave is not mistaken for a winning campaign.

Quotes that close later

An October quote approved in March still matches the ad that produced the original call.

The number you can take into a budget meeting

Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.

August 2026
Total revenue $513,500
Attributed to a channel $349,200 68% of revenue
Average deal $3,620
Match rate 75%
ChannelSalesRevenueShare
Google Ads38$241,400
Meta Ads24$61,600
Email marketing19$46,200
Direct / Unknown63$164,300

Service calls and replacements are different businesses

Most HVAC marketing is measured on call volume, and call volume is dominated by service work. Replacements are rarer, far larger, and often produced by different creative, different keywords and sometimes a different channel entirely.

Ranking channels by invoiced value separates them. It is common to find a campaign producing a third of the calls and most of the install revenue — and equally common to find a cheap lead source producing volume that never converts above a diagnostic fee.

The quote that sits for five months

An aging system gets quoted in October and replaced in March when it finally fails. Click attribution lost that connection months earlier; the ad platform closed its books on October and moved on.

Matching on the customer's phone number or email means the March invoice is credited to the October call. For a trade where a large share of replacement revenue is deferred, this routinely changes which channel looks profitable.

What changes when you can prove it

You stop defending the budget and start growing it

"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.

You can cut the wrong channel without a fight

Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgement, you are reading the same ledger they are.

Your reporting survives the finance review

Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.

You answer in an afternoon, not a quarter

Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.

What hvac companies usually push back on

Our ServiceTitan export is huge.

Only completed, invoiced jobs need to be in it, with a phone or email, an amount and a date. That is a standard report and usually a few hundred rows a month.

Most of our work is repeat and referral.

Then it should show as Direct / Unknown rather than being credited to whichever ad ran that month. Knowing that maintenance customers are a third of revenue is useful; hiding them inside Google Ads is not.

We already pay for call tracking.

Keep it — its export is one of the two files. It tells you the call came from Google Ads; CloseRev tells you the call became a $14,200 install.

Pricing

Flat monthly pricing with no per-call, per-minute or per-form fees. The number here is the number on the invoice. Most hvac companies land on Growth.

Starter

A single business getting started

$49/mo

billed monthly

  • 1 workspace · 1 seat
  • 500 sales records / month
  • 6-month saved history
  • Phone + email matching with confidence tiers
  • Assisted column mapping
  • Your logo on every report
  • CSV export

Enterprise

One business closing at volume

$499/mo

billed monthly

  • 1 workspace · 10 seats
  • 25,000 sales records / month (+$49 per 10,000)
  • 24-month history
  • Campaign drill-down and period comparison
  • Your logo on every report
  • Roles, permissions and guided onboarding

Agency

Reporting on many clients at once

$799/mo

billed monthly

  • 10 client workspaces (+$25/mo each)
  • 10 seats
  • 10,000 sales records / month per workspace
  • 24-month history
  • White-label reports — our mark removed entirely
  • Roles, permissions and guided onboarding

Questions hvac companies ask

Completed, invoiced jobs: customer phone or email, the amount, and the date. ServiceTitan, Housecall Pro, Jobber and FieldEdge all produce this as a standard report.

Stop guessing which ads pay off.

Upload two exports and see your real revenue by channel in minutes. Three days free, no card.

Start free