How HVAC owners should cut marketing when crews are at capacity
When demand exceeds capacity, the conventional marketing audit fails. Channels stop competing on cost per lead and start competing on margin per booked crew-hour. Run this four-question diagnostic before your agency proposes a summer ramp.
Your HVAC crews are booked 3 weeks out. Your dispatcher is telling new callers it will be mid-May before someone can come look at their system, and a meaningful share of those callers hang up before booking. Your installers are at capacity. Your service techs are running 10-hour days. And the agency you have been paying $7,500 a month is on the phone proposing a summer ramp — more Google spend, more direct mail, a Local Services Ads bump, a fresh round of geo-targeted display.
You already know the answer is no. What you do not know is which line items to actually cut, which ones to keep, and whether any of this is still earning its place when your phone rings more than your crews can answer.
That is a different question than the one most marketing advice answers.
Most agencies — and most marketing content written for HVAC contractors — assume the constraint on the business is demand. That every channel exists to fill the schedule, and the one that books the most jobs at the lowest cost wins. When the schedule is already full, that framework collapses. You are no longer choosing channels by who fills the calendar cheapest. You are choosing channels by what they produce when the calendar is already full.
This is the shift: when capacity is your constraint, marketing channels stop being evaluated on cost per booked job and start being evaluated on margin per booked crew-hour. The channels you keep are the ones that produce the highest-margin work with the lowest operational drag. The channels you cut are the ones that fill the schedule with work you would rather not have but do because you have it on the books.
That re-framing changes which channels look strong.
What you are actually choosing between
Pull the last 90 days of completed jobs and group them by lead source. You will see roughly four kinds of work moving through your calendar.
The first is emergency service. No-cool in a heat wave, no-heat in a cold snap, a failed water heater, a leaking line. The customer is in distress. They are not shopping. Margin is high because you are pricing for urgency and your tech is in and out. These calls overwhelmingly come from Local Services Ads, Google search ads on emergency-intent keywords, and the top of organic search results for emergency queries.
The second is replacement installs. The system died, or the homeowner has decided after three repair calls that it is time. Tickets are five figures. Margin is real. These leads come from a mix of organic search, Google Business Profile, technician referrals on prior service calls, and reactivation of past customers — sometimes prompted by a postcard, sometimes by a service tech who flagged the system as on its last winter.
The third is maintenance plans and tune-ups. Low immediate revenue, but they keep your shoulder seasons busy and feed future installs. These come almost entirely from your existing customer list, direct mail to that list, and email or text reactivation. They are not new-customer acquisition.
The fourth is everything else. Small repair jobs from cold leads, low-ticket service calls from listings sites, work routed through third-party lead aggregators, and the long tail of jobs that come from broad-targeted display, social ads, and the kind of awareness-style media buying that shows up impressively in agency reports because the impression numbers look big.
When your crews are at capacity, the fourth category is the problem. Every hour spent on a $180 service call from a third-party aggregator is an hour not spent on a $14,000 install or an emergency call you could have priced for the situation. The cost of that channel is no longer the media spend. The cost is the higher-margin job that did not get done because the slot was already filled.
The four questions to run on every channel
Once you have the lead-source breakdown for the last 90 days, run each channel through four questions.
First: what is the average revenue per booked job from this channel? Not per lead. Per booked job. Some channels look efficient on cost per lead and produce jobs averaging $250. Others look expensive on cost per lead and produce jobs averaging $9,000. When capacity is full, the second channel is buying you something the first one cannot.
Second: what is the gross margin on those jobs? You can pull this off your job-costing system if you have one and your gut if you do not. Channels that route customers to you mid-emergency tend to carry better margin because the customer is not comparison shopping. Channels that route customers to you mid-research tend to carry worse margin because the customer has three other quotes open in browser tabs.
Third: what is the operational overhead per job? A $400 service call that requires three trips, a parts order, and 90 minutes on the phone with the homeowner is not a $400 service call. It is a money-losing job your dispatcher is now scheduling around the work that actually pays. Some channels — usually third-party lead aggregators and broad-targeted display — produce a disproportionate share of these.
Fourth: would you take this work if you had to turn down a different lead to do it? When your crews are full, this is the actual question. Every booked job is now a trade. If a channel only produces work you would not take in trade for a higher-margin call, that channel is not earning its place.
Run those four questions on each channel and the cut list usually writes itself. Direct mail to your existing customer list tends to survive — it is feeding maintenance plans and replacement work at high margin from people who already trust you. Local Services Ads and Google search ads on emergency-intent keywords tend to survive — they are routing high-margin emergencies into your queue. Organic search and Google Business Profile tend to survive — they are doing work you cannot easily replace.
What tends to come out: third-party lead aggregator subscriptions that route low-margin service calls, broad-targeted display and social campaigns that generate volume without intent, geo-targeted awareness buys that nobody can tie to revenue, and any channel where your agency cannot tell you the average ticket and gross margin of the jobs it produced.
The thing your agency probably will not say
If your agency runs this exercise honestly, some portion of their monthly spend will get cut. They are unlikely to volunteer the analysis. They are more likely to propose layering on something new — a paid social campaign for "brand," an over-the-top streaming buy for "awareness," a fresh creative round for the same channels you are already running. Those proposals are not wrong because the channels do not work. They are wrong because they answer the wrong question. They optimize for filling demand. Your problem is filling demand profitably while the schedule is already full.
You can run the cut yourself. You do not need permission from the agency to ask for the lead-source revenue and margin breakdown. If they cannot produce it — if they can only produce cost per lead and cost per call — that is its own diagnostic. An agency that cannot tell you what each channel earned is an agency that cannot help you decide what to keep.
There is one more category worth naming. The channels that do not show up cleanly in any agency report but are quietly producing your highest-margin work: word of mouth, repeat customers, technician-driven referrals on the install, the postcard that went out 18 months ago and came back as a job last week. These channels do not respond to "ramping up." They respond to the quality of the work your crews are already doing. When capacity is full, those channels keep producing whether you spend more on advertising or not. The math says spend less on the noisy channels and more on the conditions that produce the quiet ones — better technician training, better follow-up after install, a post-job touchpoint that asks for the review while the customer still has the new equipment in front of them.
What to do this week
Pull the last 90 days of completed jobs. Sort by lead source. For each source, calculate average revenue per booked job and a rough gross margin. Mark which sources produced jobs you would have taken in trade for any other lead, and which produced work that crowded out higher-margin calls. Send the agency that breakdown and ask them to defend each line item against it. Cut anything they cannot defend, and redirect around

25% of what you cut into rate increases for the channels that survived — Local Services Ads bid raises, expanded direct mail to your existing customer list, and a real budget for technician follow-up after every install.
You will end the month spending less on marketing and producing more revenue. That is what capacity-constrained looks like done correctly. The agency relationship gets cleaner. The schedule gets denser with high-margin work. The crews stop running on emergency repair calls that should have been priced higher in the first place. And when the schedule loosens up in the shoulder season, you have a real picture of which channels actually produce and which ones were just spending your money on volume.
— Stacey Tallitsch, Stronghold CMO
