Ad Guides · HVAC × Facebook
Facebook ads for HVAC companies
The offers, the angles, the special-category trap the trade walks into, and the two things Ads Manager will not do about a heat wave — for an HVAC company, on Facebook, checked against first-party documentation.
Almost every guide to Facebook ads for HVAC contractors gives the same two pieces of advice, and both of them are wrong in a way you can check this afternoon. It tells you to make the budget follow the weather — raise it in a heat advisory, pull back in a mild week — and nothing in Ads Manager reads a forecast. And it hands you the financing ad as the category's obvious workhorse without mentioning that running it puts the campaign in a special ad category which takes away location exclusion, ZIP targeting and any radius under fifteen miles. The trade's most-run ad quietly buys reach you cannot serve, and the contractor running it does not think of themselves as a financial advertiser.
This page is the version with the documentation open. What follows is what a local heating and cooling company should actually buy on Facebook: which of the six objectives, which offers are worth advertising and which argument wins each one, which targeting levers survive and which one offer takes them away, whether a click should become a form, a page or a phone call, and the budget arithmetic that decides whether a seasonal push ever gets enough evidence to be optimised at all. Every platform claim is footnoted at the bottom and dated.
There is one wall in this trade that is not Meta's, and it catches the exact ad this guide spends the most time on. Regulation Z makes the amount of a monthly payment a triggering term in a credit advertisement: state it, and the ad owes the reader the repayment terms and the annual percentage rate, using that phrase. The category's house style — "as low as $99/month" with nothing attached — is the shape the rule was written about. That is a conversation for whoever arranges your financing rather than for your ad account, and the finance partner almost certainly has approved language already written, precisely because of this.
The ads shown below are real output rather than mockups drawn for the argument. Six of them are pulled from the ten on the HVAC Facebook examples page, published exactly as they were generated, for contractors that do not exist. The prices are invented and should be read as placeholders. So should five of the proof figures — that run fabricated a duct-loss median, an on-time percentage and a claim to be quoting county inspection records, and the notes on that page say which and what to put there instead.
Two things this page is not. It is not legal or regulatory advice: Meta's rules are the floor, your state contractor licensing board sits on top of them, and anything involving consumer credit is a question for your lender and your own counsel. And it is not a benchmark report. There are no cost-per-lead figures here, because a number from somebody else's market is worth less than the arithmetic you can do with your own — which is in the budget section, and is the most useful thing on this page.
Generate Facebook ads for your HVAC company
Paste your site and best-in-slot reads it the way the invented contractors above were read — services, service area, positioning — then writes the concepts, renders the images and drafts the copy. Free to start, no card.
What you are actually buying by choosing Facebook
Start with who owns the building, because for this trade that nearly settles the platform question on its own. HVAC does not sell to a demographic, it sells to whoever can authorise work on a house — and the only proxies Facebook hands you for that are age and geography. Pew's November 2025 survey puts Facebook at 80% of 30- to 49-year-olds and 74% of 50- to 64-year-olds, against Instagram's 62% and 40%. Those two bands are where homeowners are and where a five-figure replacement gets signed. Invert the bands and you are largely buying renters, who cannot commission the work whatever they think of the ad.
The second thing this app buys is the phone, and in emergency HVAC the phone is the entire funnel. Call ads are a mobile-only format, and Meta delivers them across Facebook Feed, Facebook Marketplace, Facebook Reels and Facebook Video feed as well as Instagram Feed and Instagram Stories — so four of the six surfaces that can ring your dispatch line are Facebook inventory and two of them have no Instagram equivalent at all. The reporting is unusually honest here too: Ads Manager separates calls placed from 20-second calls and 60-second calls, and a 60-second call is the only number on this platform that behaves anything like a booked job. A 20-second call is usually somebody discovering you cannot come today.
Third, Marketplace, which is the surface this trade under-uses and the clearest single reason to be on this app rather than the other. Facebook has nine image surfaces — Feed, in-stream video, video feeds, Marketplace, Stories, ads on Reels, search results, Business Explore and the right-hand column — against Instagram's four. Marketplace is where somebody is pricing a used window unit in the second week of a heat wave, which is a person one bad summer from a quote, and it is also the surface whose recommendations disagree most with the feed's: a square at 1080 × 1080, a 40-character headline, and a 30-character description line the feed will not show at all. Leave Advantage+ placements on, as almost every contractor does, and one ad fills all nine from a single export and a single headline.
Fourth, shape, and this trade has an unusual stake in it. Meta's ads guide recommends 4:5 at 1440 × 1800 for Facebook Feed and that is where most of a contractor's budget will deliver — but the ads that actually change a homeowner's mind in this category are explainers rather than photographs, and 1.91:1 routes to Facebook's right-hand column and search results with no Instagram position on the other end. The batch on the examples page makes the point better than an argument can: its one wide asset is a cutaway diagram of a duct run through a 140°F attic, and it is the only non-square export in the run that had to survive a wide crop and lost nothing, because a diagram has nothing in its top and bottom margins to lose. Buy the wide slot for the drawing, not for the van.
Finally the thing that makes this app's advantage cost something, and it is the inversion this page is built on. Facebook is where the replacement gets sold, the replacement is what gets financed, and the financed ad is the one that declares a special ad category and loses your radius. The app that best sells your most expensive offer is the app where that offer costs you the most reach. Instagram does not escape the category — the same creative has the same consequence there — but the offers that pay for Instagram in this trade are mostly not the financed ones, which is why the two guides in this cluster end up recommending different halves of the same business. This one is about the replacement, the emergency and the plan. Read the Instagram half for the work you would photograph.
Which objective to buy
Ads Manager offers six objectives — Awareness, Traffic, Engagement, Leads, App promotion and Sales — and a contracting business has a real use for three of them, which is one more than most local trades. The objective is not a label describing what you want; it is the instruction that decides who Meta shows the ad to, so choosing the flattering one is how an account ends up with a great many video views and no trucks booked.
Leads is the default and takes most of the budget, for the structural reason that almost nothing in this trade completes without somebody driving to the house. Five of the ten ads on the examples page were written for it. Traffic is the honest second, because half of what a contractor sells is invisible from the homeowner's side of the wall — a duct pressure test, a zoning damper and a variable-speed compressor all have to be explained before they can be booked, and asking for the appointment first is asking too early.
The genuinely unusual entry is Sales, which is a flat no on the dentist page and a real buy here. A maintenance plan at a fixed monthly price is a product that completes in a checkout with nobody leaving the depot, and it is the only thing in the category that does. If you sell one online, that is a Sales objective and not a lead. Awareness is defensible too, for a reason peculiar to a trade whose demand is entirely event-triggered: nobody wants a furnace, they want one at six in the morning in January, and being the shop they remember at that moment is the whole product. Just do not judge it on that week's leads.
- LeadsDefault
Where most of the budget goes — emergency dispatch, tune-ups, replacement quotes, duct work. Choose the destination deliberately, because for this trade the choice is three-way rather than two-way and it matters more than anything else in the ad set. See the destination section.
- TrafficSometimes
For everything a homeowner cannot name. Duct pressure testing, zoning retrofits and variable-speed equipment need the mechanism explained before anyone books, so buy the read, put the form at the bottom of that page, and retarget the readers.
- SalesSometimes
The one local trade in this cluster where this is a real answer rather than a polite no. A maintenance plan bought online at a fixed monthly price is a genuine checkout. Everything else here needs a visit, and dressing a five-figure replacement as a purchase does not make it one.
- AwarenessSometimes
Buyable because the levers survive on any campaign that is not advertising financing, and rational because demand here is event-triggered rather than continuous. Spend it on the shop rather than on an offer — the technicians, the pay structure, the published diagnostic fee. Judge it on whether the calls that arrive in January name a reason.
- EngagementRarely
It optimises for the cheapest available reaction, and inside a service radius the cheapest reaction is somebody arguing about a quote they got in 2019, in public, under an ad. Its one honest use is building a video-viewer pool to retarget, and Traffic usually builds a better one.
- App promotionNo
If you have a customer app, people install it after they are customers. Paying a stranger's install cost to deliver a booking screen they have no reason to open is the most expensive way to buy a service call on this platform.
What to advertise, and the argument that wins it
This is the part of an HVAC campaign that is genuinely trade-specific, and it is where most accounts go wrong before a single targeting decision is made. A contractor sells a dozen distinguishable things at prices spanning two orders of magnitude — an $89 diagnostic and a $14,000 replacement are both in the book — and running one $79 tune-up coupon at everybody spends the whole budget qualifying for the cheapest job on the list. The person who has been quoted for a new system and is stalling is not weighing the same question as the person whose upstairs has never cooled properly.
Each row below pins four decisions: who the offer is actually for, which angle family argues it best — every one of those is a page in the angle library, with the sub-angles spelled out — which objective buys it, and, where the examples page has one, a finished ad showing the whole thing assembled. Twelve rows is not a list to run at once. Pick the two or three that match what your trucks are short of this month, and let the season pick the rest.
One family is missing from this table on purpose, and it is worth saying why rather than leaving it to be noticed. Identity and Emotion is not recommended for any offer here, even though several of these offers have real feeling in them — the cold bedroom, the parent who worries about a vulnerable relative, the house that is never comfortable. The examples page has the evidence: the zoning ad was briefed as a machine, a $249 damper, and its Identity and Emotion angle still rendered "Stop tiptoeing down that hallway to check on her" into the image. That is second person telling the reader a fact about their own household, which is what Meta's personal attributes policy prohibits and what a homeowner finds unpleasant regardless of policy. The offer being a thing is not enough protection; the angle can put the person back. In this trade, let the room do the work.
Emergency repair and same-day dispatch
Leads- Who it is for.
- Someone whose air conditioning died on the hottest day of the year, or whose furnace failed overnight. There is no consideration cycle here — there is a decision happening now.
- Angle.
- Benefit & Outcome — Speed is not a benefit in emergency HVAC, it is the whole product — which is exactly why every competitor claims it and no claim differentiates. Do not promise fast. Publish a falsifiable window, an arrival time posted at booking, and what happens if you miss it. Then route the click to a phone call rather than a form.
Example adPosted window. Not 'this week.'See the brief →Duct pressure testing and sealing
Traffic- Who it is for.
- Homeowners who already paid for a new unit on the promise that the upstairs would finally cool, and are still sleeping with a fan on.
- Angle.
- Problem & Pain — The reader has a symptom and the wrong explanation for it, and the honest answer is that they were sold the wrong thing. Hidden Problem lands the blame on the duct system rather than on the reader, and it opens with a couple of hundred dollars of diagnosis rather than a five-figure replacement — the cheapest possible first transaction in a category whose usual first ask is enormous.
Example adYour new AC is fine. Your ducts aren't.See the brief →Pre-season tune-ups
Leads- Who it is for.
- People who have called in the middle of the cold snap before, paid emergency rates for it, and remember.
- Angle.
- Scarcity, FOMO & Timing — The rarest thing in advertising: urgency you did not invent. A tune-up in September and the identical visit in January are different products at different prices, because in January it is an emergency call-out competing with several hundred households in the same week. Sell the calendar, not a discount — this is the one campaign in the year where the deadline is a fact rather than a device.
Example ad2 tune-up slots left this monthSee the brief →Maintenance plan with a cancel button
Sales- Who it is for.
- People still paying for a service agreement they signed at the door and cannot get out of without a phone call in office hours.
- Angle.
- Objection & Risk Reversal — The service agreement sold at the kitchen table is this trade's most disliked product, and the objection is not the price — it is the exit. No Commitment turns a small, checkable, unglamorous promise into the entire ad: cancel it from the account, no auto-renewal, no retention script. It is also the only offer here that genuinely completes in a checkout.
Example adCancel anytime. Literally one button.See the brief →Replacement quote — heat pump against a like-for-like system
Traffic- Who it is for.
- Owners of a twenty-year-old furnace who know the next failure is the last one and are dreading the estimator.
- Angle.
- Comparison & Positioning — Do not argue that heat pumps are better; you do not know their house, their ductwork or their utility rates. Argue that they should be shown both options priced side by side, installed and running. That is a claim about the quote rather than about the equipment, so it is defensible whichever system they buy — and in a category where the estimator's own preference is a real and widely felt problem, it is a sharper wedge than any efficiency number.
Example adOne quote. Both systems. Real numbers.See the brief →Replacement on a fixed monthly payment
Leads- Who it is for.
- Households facing a replacement they did not budget for, in the week it failed.
- Angle.
- Offer & Economics — The trade's most-run offer, its best-converting one, and the one that costs you your radius — see the targeting section, because this row is the reason that section exists. The differentiator available to you is not the rate, it is printing it: the category's standard ad states a monthly payment and nothing else, which is both the weakest possible version of the argument and the shape Regulation Z was written about.
Example adThe rate matters. We print it.See the brief →Variable-speed and inverter equipment
Leads- Who it is for.
- Households where one thermostat argues with everybody, and the house is either stifling or freezing and never right.
- Angle.
- Product & Mechanism — The benefit is genuinely counter-intuitive — a system that runs constantly at low output is cheaper and more comfortable than one that blasts and stops, which is the opposite of how people think about machines. How It Works is the only family that can carry that, and the ad has to teach before it can sell. Expect the click to land on an explanation rather than a booking.
Example adPicks a percentage, not a winnerSee the brief →Zoning retrofit for the one cold room
Traffic- Who it is for.
- Households heating or cooling the whole house for one room that is always ten degrees wrong.
- Angle.
- Product & Mechanism — A damper and its own thermostat on one run is a few hundred dollars against a replacement, and almost nobody advertises it. Brief it as the mechanism and let the room select the audience: "one room, its own thermostat" reaches every household with a cold back bedroom and asserts nothing about any of them. The ad on the examples page is the counter-example — same offer, emotional angle, and it put the occupant in the copy.
Example adHer room holds temp. You sleep.See the brief →Permitted work and the inspection card
Leads- Who it is for.
- Homeowners who intend to sell within five years, for whom unpermitted mechanical work is a problem with a date on it.
- Angle.
- Proof & Trust — Boring, public and checkable, which is what makes it the strongest proof available in a trade with almost none. Unpermitted work is common, it surfaces during a sale, and a contractor who pulls a permit every time has a real differentiator. Advertise the practice rather than a tally — the fabricated version of this ad is on the examples page and is the worst claim in the batch.
Example ad212 straight jobs passed inspectionSee the brief →How your technicians are paid
Awareness- Who it is for.
- People who have been upsold in their own hallway and have not forgotten which company did it.
- Angle.
- Story & Founder POV — The trade's actual reputational problem is commissioned diagnosis — the technician whose pay rises when the recommendation is a whole system — and hardly anybody advertises against it, because doing so requires having changed how you pay people. Employee POV is the right voice: the claim has to come from the technician rather than from the brand. This is what Awareness is for here.
Example adSame pay stub, small fix or big oneSee the brief →Filtration, humidity and air quality
Traffic- Who it is for.
- Households where somebody is up at night, the dust never settles, or the winter air is painfully dry.
- Angle.
- Product & Mechanism — The trade's second-biggest add-on and its second policy wall. Sell the equipment and the measurement — filtration grade, humidity range, what the meter reads before and after — and keep every health outcome out of the copy. "If anyone in your home has asthma" is the same prohibited construction as the dental "Missing teeth?": a second-person assertion about the reader's health, which is on Meta's personal attributes list and is not made permissible by a question mark.
No example ad for this offer on the examples page yet.
Utility rebates and efficiency credits
Leads- Who it is for.
- Homeowners who were going to replace the system eventually and now have a reason to do it this year.
- Angle.
- Scarcity, FOMO & Timing — Another deadline you did not invent — programme windows close, funds run out, and both facts are published by somebody other than you. Two cautions. The amount is a claim about a third party's programme, so link to their page and let them state it. And a rebate advertised alongside a monthly payment is still a credit ad, which is the trap the row above is about.
No example ad for this offer on the examples page yet.
Targeting: everything survives, until one very ordinary ad
Start from the declaration, because it is compulsory and because getting it wrong is the most expensive mistake available in this account. Since 31 March 2020 every campaign created through Meta's Marketing API must specify a special ad category, including from businesses that offer none of housing, employment or credit — the answer for most of them is simply NONE. Meta accepts four values, and heating and cooling is not one of them. So for a tune-up, a duct test, an emergency dispatch or a maintenance plan, a contractor keeps every lever: age, a radius smaller than fifteen miles, lookalikes, saved audiences, exclusions, the lot. The radius floor in ordinary use is 0.63 miles, or 1 kilometre.
Now the sentence this whole page turns on. The category attaches to what an ad offers, not to what a company sells. Meta's own scope is ads that offer housing, employment or credit opportunities — so a heating company is not in a category and a heating advertisement can be. Advertise a system replacement on a fixed monthly payment and that campaign is a financial products and services campaign, required for US advertisers since January 2025. Meta's reference page gives the start date twice and disagrees with itself, 14 January in the banner against 21 January in the milestones, so treat it as live for anything running now. The value in the API is FINANCIAL_PRODUCTS_SERVICES; CREDIT was replaced on that date and a guide still telling you to declare it is quoting a field that no longer exists.
What the category costs is the part the trade press does not print, so here it is in full. Location exclusion is unsupported — you cannot subtract the county you are not licensed in. ZIP codes, neighbourhoods, sub-city, sub-neighbourhood, metro area, small geographic area and electoral district are all unsupported as location types. The radius floor becomes 15 miles or 25 kilometres in the US and Canada, and 15 kilometres in Europe. Age fixes to 18–65+ and gender goes to all. Lookalike audiences and saved audiences are removed, and detailed targeting loses behaviour and demographic targeting, interest exclusion and detailed-targeting exclusion, with the surviving interests limited to a previously approved list. For a housing advertiser that is an inconvenience, because a housing market is fifteen miles wide. For a contractor whose service area is a drive time rather than a circle, it is paying to reach households you will decline to visit.
Two things survive that make the situation workable rather than hopeless, and both are under-used. Custom Audiences survive in full — inclusion, exclusion and expansion — as do Advantage+ Audience and Detailed Targeting Expansion. So your own customer list is the single most valuable asset in a financed campaign, because it is the only precision instrument the category leaves you: everyone who has ever had a truck at their house is a plausible replacement buyer, and everyone who just bought a system is somebody to exclude. A list can be checked for eligibility ahead of the campaign with the is_eligible_for_sac_campaigns flag rather than discovered at launch. The second survivor is the declaration itself being free: declaring a credit ad costs no reach beyond what the category already imposes, and not declaring it is pure downside, because Meta reads the creative regardless and treats working around a category as evasion rather than oversight.
The practical resolution is a structural sibling of the ones this cluster found for real estate and apparel. Real estate: qualify on a property event, not a person. Apparel: qualify on the garment, not the body. HVAC: split the campaign, not the message. Financing runs in its own declared campaign and accepts a wide radius as the price of that offer; the tune-up, the duct test, the emergency line and the plan stay in an ordinary campaign where a two-mile radius still works. What you must never do is drop a finance line into an ad set you want to keep local — one sentence about monthly payments recategorises the campaign it sits in.
One more thing before the table, because it fails as a hard error rather than as poor delivery. A business admin has to accept Meta's non-discrimination policy in Business Settings before a housing, employment or financial campaign will deliver at all — the API returns error 2859024, "Certification Required". Its neighbour, 2909035, is what comes back for a custom age range, a saved audience, a lookalike or a radius under the floor. If a financing campaign will not launch, those two codes are the first thing to read rather than the creative.
- Special ad categoryDepends on the ad
- Not the business — the ad. Heating and cooling is not one of the four categories, and most campaigns declare NONE. Any creative promoting a monthly payment, a finance offer or a credit approval is a financial products and services ad and must declare it. The field is required on every campaign either way.
- RadiusUse it — until financing
- Think drive time, not miles. The ordinary floor is 0.63 miles or 1 kilometre, which is far tighter than anyone uses; the financed floor is 15 miles or 25 kilometres in the US and Canada, which is far wider than most trucks go. That gap is the entire cost of the financing ad, and it is why it belongs in its own campaign.
- Location exclusionUse it — unsupported when financed
- The lever this trade needs most and the one the category removes outright. A service area is rarely a circle: it has a river in it, a toll bridge, a county line you are not licensed across, a downtown you cannot park a van in. Subtract those on every ordinary campaign, and accept that a financed campaign cannot.
- AgeUse it, then lose it
- The 30–64 bands are where building owners are, and banding to the offer is worth real money — a first-time replacement buyer and a landlord with six units are different ads. Under the financial category age fixes to 18–65+ with no say in it. Note also that age is on the personal attributes list: targeting a band is fine, telling the reader their age in the copy is not.
- Custom AudiencesUse it — and it survives
- Inclusion, exclusion and expansion all survive the financial category, which makes the customer list the only precision left in a financed campaign. Past customers are the replacement pipeline and the maintenance-plan pipeline at once. Check a list with is_eligible_for_sac_campaigns before the campaign rather than after it fails.
- Lookalikes and saved audiencesCareful
- Available and useful on ordinary campaigns; removed entirely under the financial category. Do not build a financing campaign's structure around either, and do not assume a saved audience carries across from your local campaigns — it will not, and 2909035 is how you find out.
- Detailed targeting (interests and behaviours)Rarely
- At a tight radius the geography is already the targeting, and layering interests usually leaves the audience too thin to leave the learning phase. Under the financial category behaviour and demographic targeting go away along with interest exclusion, and surviving interests are limited to a previously approved list. If you are tempted by a homeowner-status segment, check what is actually in the picker today rather than trusting a guide — Meta has retired options in this area more than once.
- ExclusionsUse it
- The most-skipped setting in local contracting. Exclude current maintenance-plan members from the new-customer plan price, and exclude anyone whose system you installed last year from the replacement ads. Inside a service radius both of those reach the wrong person on day one, and the conversation happens on your own phone line.
- Ad scheduling (dayparting)Lifetime budget only
- Dayparting can only be set on an ad set with a lifetime budget, and it takes exact hour boundaries at least an hour apart. Useful for an emergency line that matches your actual on-call hours. Be aware the schedule runs in the audience's local time zone while Ads Manager reports in your account's — advertise into a neighbouring zone and delivery outside your hours is the reporting, not a fault.
Form, page, or phone?
This trade is the one in the cluster where the destination question has three real answers rather than two, because the offers span an $89 diagnostic and a $14,000 system and those do not want the same next screen.
Emergency is a phone call and it is not close. Somebody standing in a 96°F house at two in the afternoon does not want a form, and a form does not want them either. Run call ads: mobile-only, delivered on Facebook Feed, Marketplace, Reels and Video feed as well as the Instagram surfaces, and reported in a way nothing else on this platform is — calls placed, 20-second calls and 60-second calls, separately. Optimise and judge on the 60-second number, and staff the line for exactly the hours the ad runs. An emergency ad that rings out at seven in the evening is the most expensive thing in this guide, because it spent the whole budget arriving at the one moment the customer had no patience left.
Meta gives you two Instant Form types and the difference is the whole decision for the middle of your price list. "More volume" is built to be filled and submitted in one thumb movement using pre-filled profile data; "Higher intent" adds a review step. The pre-filled version is what makes the first one cheap and also what makes it worthless at the dispatch desk — a name and a number the person never actually looked at is a lead that does not remember filling anything in when you ring back, and in a trade where the callback happens hours later that is most of them. Use Higher intent for tune-ups, diagnostics and duct testing, add two or three qualifying questions for anything larger — system age, own or rent, gas or electric — and accept the volume drop. Lead ads can also open a conversation on Messenger or WhatsApp instead, and the "Instant forms and Messenger" conversion location runs one campaign and lets delivery pick per person, which is worth testing if your office already books by message.
Send the click to a landing page whenever the offer carries something an ad cannot hold. A maintenance plan has terms, a renewal position and a cancellation route. A variable-speed system needs its mechanism explained before anyone books it. A tune-up sold on scarcity needs a calendar with real dates on it, because "two slots left" followed by a contact form that replies tomorrow contradicts its own ad. And financing needs a page as a matter of obligation rather than taste: the ad's entire promise is that the four numbers survive contact with the next screen, and a landing page that reverts to "as low as" language undoes both the ad and the disclosure it was carrying. Never the homepage — a reader who tapped an ad about a duct pressure test and lands on a rotating hero of a smiling technician has been asked to start over.
The recommendation: Call ads for emergency, judged on 60-second calls; Instant Form on "Higher intent" for tune-ups and diagnostics; a landing page for anything carrying terms, a mechanism, a live calendar or a rate — and a financing ad gets a page, always. Never the homepage.
Creative direction
Lead with the rule that is not Meta's, because it is the one that catches the ad this trade runs most. Regulation Z governs consumer credit advertising, and 12 CFR 1026.24(d) makes four things triggering terms: the amount or percentage of any downpayment, the number of payments or period of repayment, the amount of any payment, and the amount of any finance charge. State one of them and the advertisement owes the reader the rest — the downpayment, the repayment terms across the full term of the loan including any balloon payment, and the annual percentage rate, using that phrase. Separately, subsection (c) says that if an ad states a rate of finance charge at all it must be stated as an annual percentage rate using that term, and subsection (a) says an ad stating specific credit terms may state only terms actually available. Now read the category's house style against that: "New system from $99/month" states the amount of a payment and nothing else. It is the exact shape the rule was written about, it is on approximately every HVAC website in the country, and the fix is not a copywriting decision — your finance partner will have approved language, because this rule is why they have a compliance department.
The financing ad on the examples page is worth studying for the opposite reason: it accidentally landed on the right shape. It prints $128 a month, a 120-month term, 9.9% APR fixed and $15,360 total repayable, and its lead line is "If a payment plan hides the rate, ask why". That is a monthly payment, a number of payments, and an annual percentage rate stated as one — which is close to what 1026.24(d)(2) asks for, and it is also a better ad than the compliant-but-grudging version, because printing the rate is the differentiator in a category that hides it. Confirm the specifics with your lender rather than with this page; the point here is that compliance and the strong ad are the same ad.
The second wall is the one every trade in this cluster shares and this one reaches from an unexpected direction. Meta's personal attributes policy prohibits copy that asserts or implies things about the reader, health among them — and HVAC advertising drifts into health constantly, because filtration, humidity and comfort are sold to households with somebody who is not sleeping well. "If anyone in your home has asthma" is the same construction as the dental "Missing teeth?", and a question mark is not an exemption. The examples page carries the batch's own failure of this: a zoning ad, briefed as a $249 damper, rendered "Stop tiptoeing down that hallway to check on her" into the image. State the equipment and what it measures; let the household recognise itself without being told about itself.
Third, numbers, and this trade has less room than most. A price in an ad is a representation you will be held to at the kitchen table, and an efficiency or savings figure is a performance claim the customer can check against their own utility bill. Publish one number per ad, publish one you will honour, and if the scope varies with ductwork, electrical and the size of the house then say what the figure excludes rather than writing "installed from" over it. Be especially careful with a figure you did not generate: a rebate amount belongs to somebody else's programme and should be linked rather than restated.
Fourth, and this is what makes the length rules below binding rather than advisory: you cannot see the frame your ad will be shown in. Facebook has nine image surfaces against Instagram's four and their recommendations disagree with each other. Facebook Feed wants 4:5 at 1440 × 1800, 50–150 characters of primary text and a 27-character headline, and shows no description line at all. Marketplace wants a square at 1080 × 1080, 125 characters, a 40-character headline and a 30-character description. With Advantage+ placements on, one ad fills all nine from one export and one headline. Write to the strictest surface and compose the portrait so it survives a square crop.
It is worth knowing how hard the 27 is, because this batch produced the cluster's worst result against it and the pattern is now six batches deep. This run wrote fifty headlines: two fit 27 and forty-five fit 40, and for the first time in this cluster not one of the ten lead headlines fits Facebook's own recommendation, though all ten fit Instagram's. None of the fifty primary texts fits 150 — they run 328 to 548 characters, the highest floor of any batch here. Across all six Facebook batches now measured, 21 of 300 headlines fit 27 and 283 fit 40, and of 300 primary texts not one fits 150, the shortest ever written being 200 characters. Look at what the two that fit have in common — "Proof on file, card in hand" at 27 and "The worry-check ends here" at 25 — and it is the same finding the apparel page reached: twenty-seven characters is room for a noun, not for a claim. Longer is not forbidden, it is truncated, which means the argument has to survive inside its first sentence.
- Render at 4:5, 1440 × 1800. That is what Meta's ads guide recommends for Facebook Feed and where most of the budget will deliver. The floor for that ratio is 600 × 750 and the aspect-ratio tolerance is 3%, so an export a few pixels out is still accepted.
- Write the headline to about 27 characters and check it against 40 as well, because both numbers are live on the same ad — Facebook Feed recommends 27, Marketplace and Instagram Feed recommend 40. Generate five and pick the one that survives the count rather than the one that reads best untruncated.
- Buy the 1.91:1 slot for a diagram, not for a photograph. It routes to Facebook's right-hand column and search results, which have no Instagram equivalent, and a drawing has nothing in its top and bottom margins to lose in a wide crop. A cutaway, a duct run, a comparison chart — this trade's best arguments are drawings.
- Export a square as well as the portrait if Marketplace matters, which for this trade it should — 1:1 at 1080 × 1080. Failing that, keep the top and bottom sixth of the 4:5 free of anything load-bearing so the centre crop is still the ad.
- Write a description line even though Facebook Feed will not show it. Marketplace does, at 30 characters, and it is free. Five of the ten on the examples page fit; the other five are wasted.
- If the ad states a monthly payment, a number of payments, a downpayment or a finance charge, it is a credit advertisement and owes the reader the repayment terms and the annual percentage rate. Use your finance partner's approved language, and declare the campaign.
- Never state a rate as anything but an annual percentage rate. "9.9% financing" is not the same disclosure as "9.9% APR", and only one of them is the phrase the regulation names.
- State the equipment and what it measures; never the reader's health, their household or how they are coping. "One room, its own thermostat" is the same selection as "the room where she sleeps", with nothing asserted about anybody.
- One number per ad, and one you will honour at the kitchen table. If the price moves with ductwork and electrical, publish what the figure excludes rather than hiding behind "from".
- Do not render a proof statistic you have not counted. Five of the ten ads in this batch fabricated one, and the worst of them named county inspection records as its source — an invented number is bad, an invented citation is unrecoverable.
- Photograph your own trucks, your own technicians and your own street. A stock photograph of a smiling person beside a condenser is the category's default and it is worth less than a badly-lit picture of the shop the reader drives past.
- Do not put the phone number in the image. It is not tappable there, and on a call ad the button is.
Funnel structure
Four stages, and the fourth is not a stage of the funnel at all — it is a separate declared campaign, which is what the special ad category forces and what most accounts get wrong by trying to keep everything in one place.
Keep the first three as simple as this. A contractor's budget is small relative to the audience arithmetic Meta's delivery system wants, and every additional ad set divides the same evidence into thinner piles. Variation belongs at the ad level, inside one ad set, and the offer is the thing that varies — not the audience.
The customer stage is weighted higher here than it would be for most local trades, and deliberately. Every past customer is two future offers at once: a maintenance plan now and a replacement in ten to fifteen years, with the replacement worth two orders of magnitude more than the call that created the record. It is also the only audience that survives intact into the financed campaign, which makes it the one asset worth maintaining properly.
Cold
≈55% of budgetAudience. Drive-time radius around the depot, banded to the offer's age range, obstacles and out-of-licence areas excluded, existing customers excluded.
Running. Two to four offer ads — whatever the trucks are short of. Emergency as calls, tune-ups and diagnostics as Leads on Higher intent.
Warm
≈20% of budgetAudience. Page engagers, video viewers and website visitors from the last 90–180 days.
Running. Mechanism and proof: how a duct test works, what a zoning damper is, how the technicians are paid. Traffic, then retarget the readers.
Customers
≈25% of budgetAudience. Your own list — used as an exclusion on the two stages above, and as an audience on its own terms.
Running. Maintenance plans, second-system quotes, replacement conversations for anything you installed fifteen years ago. Leads or Sales, seasonal rather than always-on.
Financing (declared)
Budget it as its own line of budgetAudience. Its own campaign, declared as financial products and services: 15 mile / 25 km floor, no exclusions, no lookalikes, age 18–65+. Custom Audiences still work and are the only precision left.
Running. The replacement-on-a-payment ad and nothing else. Judge it separately, because its reach is not comparable to anything above it.
Budget, seasonality, and the weather thing
Do the arithmetic before you copy a number. Meta's delivery system needs roughly 50 optimisation events per ad set per week to leave the learning phase; below that the ad set sits in "learning limited", which is not a penalty but is an admission that the system cannot optimise with what you are giving it. Take your own cost per lead, whatever it actually is, and multiply by 50. That is the weekly spend at which one ad set is delivering with full information. Divide what you can genuinely spend by that figure and you have an honest measure of how much of Meta's optimisation you are buying — and for most single-depot contractors the answer is a fraction of it. That is not a reason to stop; it is the reason the funnel above has three ad sets and not nine.
Now the weather, because it is the whole of the received playbook for this trade and it is wrong. Nothing in Ads Manager reads a forecast. Ad scheduling can only be set on an ad set with a lifetime budget, not a daily one, and it takes exact hour boundaries at least an hour apart. Automated rules can adjust a budget, but their conditions are performance metrics — cost per result, spend, frequency — and they are evaluated at least once every thirty minutes. There is no weather condition, there is no temperature trigger, and there is no integration. Following a heat advisory means a hand edit, a rule you scheduled in advance on dates you guessed, or your own script against the Marketing API. Any guide implying otherwise is describing software that does not exist.
And here is the part nobody writes, which is the actual reason the advice is harmful rather than merely wrong. Pausing an ad set, or changing its optimisation event, its audience or its creative, is a significant edit and restarts the learning phase; a large enough budget change can too. So the received advice — watch the forecast, push the budget hard when it turns — tells you to reset the delivery system's evidence at the precise moment demand is real and mistakes are expensive. The version that works is unglamorous: keep an always-on ad set alive through the shoulder season so it has already learned, and change the ads inside it when the weather turns rather than launching a new ad set for the snap. The creative can chase the forecast. The ad set should not.
Seasonality is real here in a way it is not in most trades, and it collides with the learning phase directly: a two-week seasonal push is shorter than the window an ad set needs to become good at its job. Plan around four moments and let one ad set carry all of them. Late August to October is heating tune-ups, and it is the highest-margin advertising in the year because the same visit in January is an emergency call-out. March to May is the cooling equivalent. The first hard freeze and the first sustained heat wave are the two emergency spikes, and they are when the phone matters more than the ad. Replacement and financing run flat all year with a lift after each spike, because a system that failed once is a system somebody has now started thinking about.
- Test the offer, not the headline. Swapping five words is a significant edit that restarts learning for a change too small to detect.
- One change at a time, and give it seven days — the learning phase is measured over a week, so anything shorter is reading noise.
- Do not launch a new ad set for a cold snap. Change the ads inside the ad set that has already learned; a fresh ad set spends the spike learning instead of converting.
- Read cost per booked job, not cost per lead. Dispatch is the second half of this funnel and it is where a cheap lead quietly becomes a no-show.
- For call campaigns count 60-second calls. Calls placed includes the hang-ups, the wrong numbers and everyone who discovered you cannot come today.
- Judge the financed campaign against itself and never against the local ones. It is buying a fifteen-mile audience it did not choose, and comparing its cost per lead to a two-mile ad set will make you turn off the wrong thing.
- Before you blame the creative, check whether the ad set ever left learning. Half the "Facebook does not work for contractors" verdicts are an ad set that never got the evidence to try.
Six of these ads, in full
Every ad below was generated by best-in-slot for a HVAC company that does not exist, with its audience, angle and objective pinned before the run — and published exactly as it came back. They are six of the Facebook examples for a HVAC company; the rest, with the full brief and the alternate headlines behind each one, are on that page.

Offer & Economics · 1:1 · Leads
The rate matters. We print it.
Written for: Households facing a replacement they did not budget for.
The full brief and why it works →

Benefit & Outcome · 1:1 · Leads
Posted window. Not 'this week.'
Written for: People whose air conditioning died on the hottest day.
The full brief and why it works →

Problem & Pain · 1.91:1 · Traffic
Your new AC is fine. Your ducts aren't.
Written for: Homeowners who have already replaced the unit.
The full brief and why it works →

Scarcity, FOMO & Timing · 9:16 · Leads
2 tune-up slots left this month
Written for: People who call in the middle of the cold snap.
The full brief and why it works →

Objection & Risk Reversal · 4:5 · Sales
Cancel anytime. Literally one button.
Written for: People still paying for a plan they cannot leave.
The full brief and why it works →

Story & Founder POV · 1.91:1 · Awareness
Same pay stub, small fix or big one
Written for: People who have been upsold in their own hallway.
The full brief and why it works →
Mistakes specific to this trade
Every one of these is common, several of them are expensive, and the first four are the reason an HVAC account behaves differently from a plumber's account that looks identical from the outside.
Running the monthly-payment ad in a local campaign
The single most common structural error in the trade, and it is invisible until it is not. A creative promoting a fixed monthly payment is a credit advertisement whatever the campaign was declared as, and Meta says plainly that it uses human reviewers and machine learning to identify these ads and that an incorrect declaration risks the campaign being paused. Declaring it costs you nothing beyond the category's own restrictions. Not declaring it risks the campaign and does not buy back a single mile of radius.
Declaring the category on every campaign to be safe
The mirror-image error, and it is worse in slow motion. Tick it on the tune-up campaign and you have handed back location exclusion, ZIP targeting, lookalikes, saved audiences and any radius under fifteen miles — the levers that make local contracting viable — in exchange for nothing at all. The category attaches to the ad. Split the campaign and let each one declare the truth about itself.
Believing the budget can follow the forecast
It cannot. Dayparting needs a lifetime budget and fixed hour boundaries, automated rules take performance metrics rather than temperatures, and there is no weather integration anywhere in the product. Every guide in this category says otherwise and every one of them is describing something that does not exist. If you genuinely want it, it is a script against the Marketing API and it is your script.
Pushing the budget hard the morning the weather turns
The advice above, followed, and this is what it costs. A significant edit restarts the learning phase, and a large budget change can qualify. So the account resets its evidence on the one morning of the quarter when the phone would have rung anyway — and then the fortnight of poor delivery afterwards gets blamed on the platform. Keep an ad set running through the shoulder season and swap the creative when the weather turns.
Reading a dayparting schedule in the wrong time zone
A schedule is applied in the audience's local time zone; Ads Manager reports in the ad account's. Advertise into a neighbouring zone and you will see delivery outside the hours you set and conclude the schedule is broken. Meta's own documentation warns that a system expecting delivery in account time might falsely detect an under-delivery issue and make an incorrect decision. It is a false alarm, and it has caused people to tear up a working schedule.
Declaring CREDIT
It is not a field any more. FINANCIAL_PRODUCTS_SERVICES was introduced in October 2024 and replaced it in January 2025. If your agency's runbook, your ads tooling or the guide you are following still names CREDIT, that document has not been touched in over a year and you should assume the rest of it is the same vintage.
Advertising a monthly payment with nothing attached
"New system from $89/month" is the category's house style and it is the shape 12 CFR 1026.24(d) was written about: the amount of a payment is a triggering term, and stating it obliges the ad to give the repayment terms and the annual percentage rate using that phrase. Your finance partner has approved copy for exactly this reason. Use theirs, and print the rate — in a category that hides it, printing it is the ad.
Buying a twenty-five-mile radius on an ordinary campaign
A wide radius makes the numbers in Ads Manager look better and the truck schedule look the same. Nobody wants a two-hour drive-time job at emergency rates, and the leads from the far edge of a circle are the ones dispatch quietly declines. If the category is not forcing it on you, do not do it to yourself — and remember the floor in ordinary use is 0.63 miles, far tighter than anybody sets.
Advertising the new-customer plan price to your own plan members
Inside a service radius this is guaranteed rather than likely. A member paying the standing rate sees a lower one they were never offered, and the next conversation about it is on your own phone line with somebody who is otherwise happy. Exclude the customer list from every acquisition ad set, and exclude recent installs from the replacement ads.
Rendering a statistic nobody counted
Five of the ten ads in the batch on the examples page carry an invented proof figure, and the worst renders a count of consecutive inspections passed with "per county inspection records — not our word" beneath it. That is not a wrong number, it is a fabricated citation, and a reader who checks finds nothing. If you have the count, publish it. If you do not, publish the practice — "every job permitted, every inspection card handed over" is checkable by the customer at the end of their own job, which is stronger anyway.
Telling the reader about their own household
The comfort offers in this trade are about people — the cold bedroom, the relative who feels it most, the house nobody sleeps well in — and the copy slides into the second person without anybody deciding to. "Stop tiptoeing down that hallway to check on her" is a real line from a real ad in this batch, briefed as a $249 damper. Meta's personal attributes policy prohibits asserting things about the reader, health among them, and a question mark does not exempt it. Describe the equipment and the room.
Promising fast, reliable, 24/7
Every competitor in the category makes this promise, which is precisely why it differentiates nobody and why the reader has stopped reading it. Replace it with something that could be proved wrong: a published arrival window, a fee removed if you miss it, the hours you actually answer. A falsifiable promise is the only kind that works in a category where the unfalsifiable one is free.
Running emergency ads outside your on-call hours
The best-optimised campaign in this guide dies at a voicemail greeting, and in emergency HVAC it dies faster than anywhere else — the reader is standing in a house that is 96°F or 48°F and will call the next result before your message finishes playing. Daypart the emergency ad set to the hours somebody answers, which needs a lifetime budget, or staff the hours the ad runs. Do not increase the budget until one of those two is true.
Questions
- Are HVAC ads a special ad category on Meta?
- The company is not; some of its ads are. Meta accepts four special ad categories — housing, employment, financial products and services, and social issues, elections and politics — and heating and cooling is not among them, so an ordinary tune-up or repair campaign declares NONE and keeps every targeting lever. But the category attaches to what an ad offers rather than to what the business sells, so a creative promoting a system replacement on a monthly payment is a financial products and services ad and that campaign must declare it. Every campaign has had to specify a value since 31 March 2020, including businesses in none of the categories.
- Can I advertise financing and keep my service radius?
- Not in the same campaign. A declared financial products and services campaign loses location exclusion, cannot target by ZIP, neighbourhood, sub-city or metro area, and has a minimum radius of 15 miles or 25 kilometres in the US and Canada — with age fixed at 18–65+ and lookalikes and saved audiences removed. The workable answer is to split the campaign rather than the message: run the financing ad in its own declared campaign and accept the wide radius as the price of that offer, and keep the tune-up, the duct test, the emergency line and the maintenance plan in an ordinary campaign where a tight radius still works. Custom Audiences survive the category, so your customer list is the one precision instrument you keep.
- Can I make Facebook spend more when it gets hot?
- Not automatically, and this is the most common wrong advice in the category. Nothing in Ads Manager reads a forecast. Ad scheduling can only be set on an ad set with a lifetime budget and takes exact hour boundaries at least an hour apart. Automated rules can adjust a budget, but their conditions are performance metrics and they are checked at least once every thirty minutes. So following a heat wave is a hand edit, a rule you scheduled in advance on dates you guessed, or your own script against the API — and the hand edit has a cost, because a significant edit restarts the learning phase on the morning you least want it to.
- Do I need to put the interest rate in the ad?
- If the ad states the amount of a monthly payment, yes — and that is US consumer credit law rather than a Meta policy. Under 12 CFR 1026.24(d), the amount of a payment, the number of payments, the amount of a downpayment and the amount of a finance charge are triggering terms, and an advertisement stating any of them must also state the downpayment, the repayment terms over the full term of the loan, and the annual percentage rate using that phrase. Subsection (c) adds that a rate must be stated as an annual percentage rate. Whoever arranges your financing will have approved advertising language, because this rule is why they have a compliance function — use theirs, and treat the requirement as a feature: printing the rate is a genuine differentiator in a category that hides it.
- Facebook or Instagram for an HVAC company?
- Facebook, for most of the budget. HVAC sells to whoever owns the building, and Pew's November 2025 survey puts Facebook at 80% of 30- to 49-year-olds and 74% of 50- to 64-year-olds against Instagram's 62% and 40%. Facebook also carries call ads on two surfaces Instagram does not have — Marketplace and Video feed — which matters when emergency work converts on the phone, and it has nine image placements against Instagram's four. Instagram earns a place for the work you would photograph: new installs, mini-splits, the crew's craft. The Instagram guide in this cluster makes that case.
- Lead form or landing page for a contractor?
- Three answers rather than two. Emergency is a phone call — run call ads and judge them on 60-second calls rather than calls placed. Tune-ups, diagnostics and duct testing suit an Instant Form on the "Higher intent" type, whose review step lowers the lead count and raises the share that answer the phone, which is the right trade when the callback happens hours later. Anything carrying terms, a mechanism, a live calendar or a rate needs a landing page — and a financing ad needs one as a matter of obligation, because the disclosure has to survive the click. Never the homepage.
- What can I do with my customer list?
- More than you can do with anything else, and it is the asset most contractors leave in the office software. Custom Audience inclusion, exclusion and expansion all survive the financial products and services category, unlike lookalikes and saved audiences, so the list is the only precision instrument left in a financed campaign. Use it three ways: as an exclusion on every acquisition ad set so you stop discounting to people who already call you, as an audience for maintenance plans and second systems, and as a replacement audience for anything you installed fifteen years ago. You can check a list's eligibility for a special-ad-category campaign ahead of time with the is_eligible_for_sac_campaigns flag rather than finding out at launch.
Sources
Every platform claim on this page was read against these on . Meta’s policies move; if one of these disagrees with this page, it is right and we are stale.
- Meta Marketing API — Special Ad Categories (page dated Updated: May 21, 2026; FINANCIAL_PRODUCTS_SERVICES replaced CREDIT on 14 January 2025; audience and location-type restrictions, is_eligible_for_sac_campaigns, error codes 2859024 and 2909035)
- Meta for Developers — ad scheduling (dayparting requires a lifetime budget; exact hour boundaries at least an hour apart; audience-local time zone against account-time reporting)
- Meta Business Help Centre — about automated rules (conditions are performance metrics; rules checked at least every 30 minutes)
- Meta Marketing API — basic targeting (custom_locations radius 0.63–50 miles, or 1–80 km)
- Meta Business Help Centre — about the learning phase
- Meta Business Help Centre — significant edits and the learning phase
- Meta Business Help Centre — about Instant Form types
- Meta for Business — lead generation (lead ads can open a conversation on Messenger, Instagram or WhatsApp; the "Instant forms and Messenger" conversion location)
- Meta Business Help Centre — supported objectives and placements for call ads
- Meta Business Help Centre — call ad metrics in Ads Manager (calls placed, 20-second and 60-second calls)
- Meta ads guide — image ad specifications, Facebook Feed (4:5 at 1440 × 1800; primary text 50–150, headline 27, no description line; minimum 600 × 750; 3% aspect-ratio tolerance)
- Meta ads guide — image ad specifications, Facebook Marketplace (1:1 at 1080 × 1080; primary text 125, headline 40, description 30)
- Meta Advertising Standards — privacy violations and personal attributes
- 12 CFR 1026.24 (Regulation Z) — advertising: (a) actually available terms, (c) rate stated as an annual percentage rate, (d)(1) triggering terms and (d)(2) the additional terms they require. Read against the eCFR API, 7 September 2026
- Pew Research Center — Americans' social media use, November 2025
That is the playbook. Now make the ads.
Paste your site. It reads your services, your service area, your plan and your financing page, then writes the concepts, renders the images and drafts the copy — for the one trade in this set whose hardest rule is not Meta's.
No credit card · 50 free credits (about 5 ads or Instagram posts)
Every angle recommended above is documented in the best-in-slot ad angle library, and the ads are from hvac facebook ad examples. More industries are at all ad guides.