You are already paying the agency. The invoices are going out monthly. The reports are arriving. The question is whether the relationship is producing revenue or producing reports that look like revenue.

Most HVAC owners who have been with an agency for six months or more fall into one of two situations: they know it is working because they can trace specific booked jobs to specific campaigns, or they have a folder of monthly PDFs and a vague sense that revenue is similar to what it was before they started.

If you are in the second situation, this article is the audit. It covers what legitimate monthly reporting looks like for an HVAC company, how to run a 10-question diagnostic on your current relationship, and what the most common accountability gaps cost in actual revenue.

This is specifically about auditing an agency you are already using. If you are evaluating a new agency before signing, the HVAC marketing agency evaluation article covers that process in detail, including the questions to ask before committing and what pre-hire due diligence looks like.

The Metric That Changes Everything

Cost per lead is the number most HVAC marketing agencies report. It is also the most misleading number in the relationship.

The reason it misleads: it measures the cost of generating a contact, not the cost of generating a booked job. A channel producing 80 leads at $45 each looks far more efficient than one producing 25 leads at $120 each. But if the first channel books at 28% and the second books at 70%, the booked-job economics invert completely.

Channel A: 80 leads x 28% booking rate = 22 booked jobs. Cost per booked job: $163. Channel B: 25 leads x 70% booking rate = 17.5 booked jobs. Cost per booked job: $171.

The “cheap” channel is now producing booked jobs at nearly the same cost as the “expensive” one, with five more jobs per month. That calculation changes which channel you should scale and which you should cut. Cost per lead tells you none of it.

The HVAC Cost Per Booked Job by Channel article covers how the economics compare across Google Ads, LSA, GBP, and organic for HVAC companies at different revenue scales.

Why Agencies Report the Wrong Numbers

This is not primarily a dishonesty problem. It is a structure problem.

Most marketing agencies are compensated as a percentage of ad spend, a flat monthly retainer, or both. Their revenue does not change whether the leads they generate book at 30% or 70%. That structure creates an incentive to report metrics that make spend look productive: impressions, clicks, call volume, cost per lead.

Calculating cost per booked job requires connecting ad data to booking data to completed revenue. That connection lives partly in the ad platform (which the agency controls), partly in call tracking (which may or may not be set up), and partly in your field service software (which the agency usually cannot see). Bridging that gap takes work the agency is not paid to do and produces a number that may not make the agency look good. So it does not get bridged.

Roughly 70% of HVAC companies report dissatisfaction with their marketing agencies, according to industry data. That dissatisfaction is rarely about the agency doing obviously bad things. It is almost always about a persistent inability to answer one question: is this producing revenue?

What Legitimate Monthly Reporting Looks Like

A monthly report from a legitimate HVAC marketing agency should contain these elements. This is not aspirational. These are the numbers required to tell whether your marketing spend is producing revenue.

Pass: What good reporting includes each month

Cost per booked job by channel with the calculation methodology shown. Booking rate on leads generated from their campaigns. Total jobs booked attributed to their channels. Total revenue attributed to their channels with the attribution method explained. Call volume by source. Answer rate on generated calls. 90-day trend for cost per booked job.

Fail: What poor reporting substitutes instead

Impressions and click volume as the headline metrics. Total leads without booking rate. Cost per lead without cost per booked job. Revenue trend described directionally without channel attribution. Rankings and organic traffic without connection to calls or bookings.

The distinction between passing and failing reporting is not about what information is included. It is about whether the reporting connects spend to booked jobs. A passing report makes that connection specific. A failing report presents activity metrics that could be going up while your booked-job economics deteriorate.

The 10-Question Audit

Grade your current agency relationship on these 10 questions. Each is a yes or no. The consequences of each no are in brackets.

1. Can your agency tell you your cost per booked job by channel right now? Pass = yes, with a calculation you can verify. Fail = no, or “we use cost per lead.” [If fail: you cannot evaluate whether your marketing is working. Everything else in the relationship is opinion.]

2. Do you own your Google Ads account with admin access under your own credentials? Pass = yes, you can log in directly at ads.google.com. Fail = the account is in the agency’s name or you have “viewer” access only. [If fail: you cannot independently verify spend levels, campaign structure, or reported results. You also lose everything if you change agencies.]

3. Does your monthly report show booking rate on leads generated? Pass = yes, booking rate is tracked separately by channel. Fail = report shows lead volume only without booking rate. [If fail: you cannot tell whether low booked job volume is a traffic quality problem or a CSR handling problem. The agency can always blame the second without addressing the first.]

4. Do you know what happened to the last 90 days of leads the agency generated? Pass = you can trace leads to booked jobs or identify where they dropped. Fail = you know leads were generated but not what percentage became revenue. [If fail: your marketing funnel has a gap you cannot see.]

5. Is your LSA account in your name? Pass = yes. Fail = the agency manages it under their credentials. [Same consequence as Google Ads ownership above.]

6. Does your agency show you a 90-day trend for cost per booked job? Pass = yes, trend is visible and explained. Fail = monthly snapshots only without trend context. [If fail: you cannot tell whether marketing is becoming more or less efficient over time. A rising cost per booked job trend is an early warning signal most owners miss because they are looking at monthly snapshots.]

7. Has your agency told you your booking rate and why it matters? Pass = yes, and they have helped you understand whether marketing quality or CSR performance is the primary driver of any booking rate gap. Fail = booking rate has never come up in your conversations. [If fail: they are selling you traffic without caring whether it converts.]

8. Does your contract have a performance clause or defined exit conditions? Pass = yes, there are metrics defined at which either party can exit or renegotiate. Fail = fixed term with no performance accountability mechanism. [If fail: you have no leverage to demand accountability improvement and no clean exit if it does not improve.]

9. Is your marketing attribution set up to flow from ad click to call to booked job in one traceable path? Pass = call tracking is installed, connected to your scheduling system, and the agency can show you the path from click to booked job. Fail = attribution is incomplete or relies on the agency’s internal data you cannot independently verify. [If fail: all reported numbers should be treated as directional, not definitive.]

10. Has your agency told you something was not working and recommended cutting it? Pass = yes, they have recommended reducing spend on an underperforming channel. Fail = every recommendation from the agency has involved more spend. [If fail: the agency may be managing for their margin, not your profitability. An agency whose only tool is more budget is not analyzing your business.]

Scoring Your Agency

8 to 10 passes: Your agency is operating with accountability. If your cost per booked job is inside a healthy range, keep the relationship and use these standards as ongoing expectations.

5 to 7 passes: There are gaps in accountability that are costing you either money or visibility into your marketing performance. Identify the specific fails and bring them as a direct conversation with your agency before deciding whether to continue.

Below 5 passes: You are spending money on marketing without the measurement infrastructure to know whether it is working. This is a structural problem. Either the agency needs to build the reporting and attribution infrastructure within 30 days, or the relationship needs to change.

The Agency Report Card tool runs a version of this audit in about five minutes and produces a letter grade with the specific consequences of each gap.

What to Do This Week

Ask your agency for cost per booked job by channel for the last 90 days. Not cost per lead. If they cannot produce it within one business day, the measurement infrastructure is not in place. That is your first data point.

Log into Google Ads at ads.google.com with your own credentials. If you do not have credentials that give you admin access, you do not own the account.

Pull your booking rate on paid leads for the last 90 days. Take the call volume your agency attributes to their campaigns. Compare it to jobs actually booked in your scheduling system from those sources. If you cannot calculate it because attribution is not connected, that is also a data point.

Run the Agency Report Card. Ten questions, five minutes, letter grade with consequence explanations for every gap.

If you want the independent view of your local market position, what competitors are ranking above you, and what that visibility gap is likely costing in calls, the Built on Tenth Market Report gives you that analysis written specifically for your market.


Frequently Asked Questions

What should my HVAC marketing agency report every month?

At minimum: cost per booked job by channel, booking rate on leads generated, total revenue attributed to marketing by channel, call volume by source, and 90-day trend for each metric. Impressions, clicks, and cost per lead are inputs that show channel activity but not whether that activity produced revenue.

How do I know if my HVAC marketing agency is actually producing results?

Calculate cost per booked job from the data your agency provides. If you can, compare it against 10% to 15% of your average ticket as a rough threshold. If you cannot calculate it because the attribution data does not exist, your agency is not giving you what you need to answer the question and that is itself an answer.

What is the clearest sign my HVAC marketing agency is underperforming?

They cannot tell you your cost per booked job. That requires connecting ad data to booking data, a straightforward integration any agency committed to accountability sets up in the first 30 days. Agencies that report cost per lead without cost per booked job are either missing the infrastructure or reporting the metric that makes their work look better than it is.

Should I fire my HVAC marketing agency?

Not without running the numbers first. The question is not whether the agency is “good” in the abstract. It is whether your current cost per booked job by channel is producing revenue at an acceptable level. An agency producing booked jobs at $140 on a $1,800 average service ticket is working. One producing them at $680 is not, regardless of what the impressions report shows.

Why does my agency only report cost per lead instead of cost per booked job?

Three reasons in order of frequency. First, call tracking is not connected to the scheduling system so the agency genuinely cannot calculate it without your help. Second, the agency reports standard activity metrics because most clients accept them without pushing for revenue-level accountability. Third, cost per booked job would reveal underperformance that cost per lead obscures. The fix for the first two is a technical integration that takes a few days. The fix for the third is a different conversation about what your relationship is actually structured to measure.