How Canadian HVAC Contractors Build Recurring Revenue with Service Agreements
Why service agreements matter more in Canada
It's late April in Barrie. The tech is parked outside a Tim Hortons at 10:40 AM with a coffee and a dispatch board that has gone quiet. Four calls cancelled before lunch: "the furnace is working fine now, we'll call when the AC acts up." The truck is paid for whether it moves or not. Labour is paid whether the tech turns a wrench or not.
Canadian HVAC demand is shaped by the climate. January and February are full. July and August are full. March–April and October–November are the dead weeks between heating and cooling — the shoulder season that eats margin every year.
Service agreements are the fix. A customer on an annual plan isn't calling because their furnace acts up. They're on your calendar for a spring AC tune-up whether it's 8°C or 28°C outside. The revenue curve smooths. The truck moves. The tech bills hours.
A service agreement — sometimes called a recurring service contract — is the quiet engine behind every HVAC shop that runs calmly in April. This post walks through how Canadian contractors structure, price, sell, and deliver them.
The three common agreement structures (what actually works)
There are many ways to write a service agreement. In practice, Canadian HVAC shops use three.
Flat annual fee with scheduled visits. The simplest model. One price, two visits. A common example: $299/year for a spring AC tune-up and a fall furnace tune-up. The customer pays once, you book both visits, they know exactly what they get. Dave-sized shops (solo and two-truck) do well here because the deliverable is crisp and the math is obvious. No tier comparisons. No upsell scripts. One SKU.
Tiered memberships (silver / gold / platinum). The industry-standard model for larger shops. The basic tier covers the tune-ups. Higher tiers layer on same-day response, parts discounts (10–15% is typical), priority booking during cold snaps, and sometimes a waived diagnostic fee. The upside is revenue per member. The downside is the complexity tax: three tiers means three sets of deliverables to track, three renewal scripts, and three different promises to keep. If one customer on platinum gets bumped for a silver customer during a February cold snap, the tier stops meaning anything.
Per-visit credit bank. The customer pre-pays for a number of visits at a discount — say, four visits for the price of three. This works well for commercial accounts where the buildings need unpredictable service and the decision-maker wants a budget line. On the residential side it tends to create accounting headaches: unused credits sit on the books, renewal dates get fuzzy, and customers argue about whether a 20-minute filter swap "counts."
A rule of thumb: the flat structure is right for most shops under $1M in revenue. Tiered starts to earn its keep around 150–200 members, when segmentation becomes useful. The credit bank is a commercial tool, not a residential one.
What to include in the maintenance visit
Scope shapes customer perception. A tune-up that takes 20 minutes and ends with a sticker on the furnace feels like a drive-by. A tune-up that takes an hour and ends with the tech walking the homeowner through three things they checked feels like the agreement was worth paying for.
A reasonable scope for a residential furnace tune-up:
- Inspect heat exchanger for cracks and corrosion
- Clean or replace the air filter
- Check gas pressure at the manifold
- Test the thermocouple or flame sensor
- Inspect the blower wheel and motor
- Verify thermostat operation and calibration
- Check CO readings with a combustion analyzer
- Flush the condensate line
- Note wear items and flag anything approaching end-of-life
For the spring AC visit: refrigerant pressures, coil cleaning, condensate line flush, capacitor check, contactor inspection, tight electrical connections, and a temperature-split reading at the register.
The point isn't the exact checklist — every shop tunes their own. The point is that the scope is written down, the tech follows it, and the customer sees the work being done. A tune-up felt is a tune-up renewed.
Pricing the agreement: the 3× visit rule (and variations)
The basic pricing heuristic most HVAC shops land on: an annual agreement should be priced around 3× the cost of a single diagnostic or tune-up visit. Two visits of real work plus margin, with a little room for the small parts and priority response you're promising.
If your standalone furnace tune-up is $150, a furnace-plus-AC annual agreement lands around $299–$349. Walk the margin math:
- Labour for two visits, about 3 hours fully loaded: ~$180
- Filter and small-parts allowance: ~$40
- Discount absorbed on priority response and parts: ~$30
- Overhead and billing: ~$30
- Total cost: ~$280
At $299 you're at single-digit margin per member. That sounds thin until you look at what the book does for you. A hundred members at $299 is $29,900 in cash that lands in the shoulder season, when nothing else is landing. The renewal rate on a well-delivered agreement is 70–85%, so the book compounds. The margin isn't the story. The stability is.
One Canadian-specific note: the annual fee is subject to HST or GST/PST depending on the province. Alberta is GST-only at 5%. Ontario is HST at 13%. Quebec is GST plus QST. If you're selling a $299 plan, decide up front whether that number is tax-in or tax-out, print it the same way on every invoice, and charge the right rate for the customer's address. Our guide to provincial tax handling on service agreements covers the details by province.
A variation worth knowing: some shops offer a small monthly option — $29/month instead of $299/year. The annualized number is higher ($348) and the customer feels the spend less. The tradeoff is billing overhead and the risk of cards failing mid-year. Most small shops start annual and add monthly once the book is big enough to absorb the billing work.
Getting customers to say yes (the first-visit pitch)
The right time to sell the agreement is immediately after you've done good work. Not on the phone. Not in a mailer. Standing in the mechanical room after the repair, when the customer has just watched you fix their problem and they trust you.
A pitch the tech can actually use:
"I noticed a couple of wear items that aren't worth a service call today but will be in a couple of years. We have an annual plan at $299 that covers your furnace tune-up in the fall and your AC tune-up in the spring — it'd keep you ahead of those. Want me to explain how it works?"
Notice what's not there. No "limited time offer." No "for today only." No upsell ladder. The tech is naming a real thing they saw during the visit, explaining what the plan covers, and asking permission to say more. The customer has already seen quality work, so the trust is there.
Sell rate in the 15–25% range after a good service call is typical for residential HVAC. If your rate is under 10%, the problem is usually one of two things: the tech isn't bringing it up at all, or the plan economics are wrong for the market. Don't chase higher numbers by making the pitch pressured. Changing the math of the agreement — adding a small discount, bundling a filter, dropping the diagnostic fee on the first call-out — is almost always the better lever.
Delivering the year without losing money
The first hundred members is a sales problem. The second hundred is a systems problem. This is where shops give the margin back without realizing it.
Common ways it goes wrong:
- The shoulder-season pile-up. You call members for tune-ups in March and May, they're busy, they postpone twice, and suddenly June is booked with tune-ups instead of install work. Book the tune-ups earlier than you want to — mid-February and mid-September — and build in a rebooking buffer.
- Scope creep on visits. The tune-up is scoped for 60 minutes. The tech spends 90 because the customer wants to chat and the filter was harder to reach than expected. Thirty extra minutes across a hundred members is fifty lost labour hours a year. Write the scope down, timebox it, and coach the team on staying inside it.
- "Included" parts that aren't. The agreement says "filter included." Three years in, techs are swapping filters "at cost" on every visit, and cost has been absorbing a $15 margin each time. Define what is in scope vs. billable before the agreement starts, and print it on the invoice every time.
- No renewal tracking. If you can't pull a list of which members renew in the next 90 days, you are losing some of them silently.
On the invoicing side: treat the tune-up like any other service call. Closing the job on the spot and invoicing same-day after the visit — even if the agreement is pre-paid and the invoice is zero — gives the customer a record of the work, keeps the job file clean, and makes renewal time much easier.
Tracking renewals and recurring billing
Every service agreement has a small set of dates and amounts the business has to know at all times:
- When does each member's agreement expire?
- When is the renewal charge scheduled?
- What card or pre-authorized debit is on file?
- What is this year's renewal offer — same price, small increase, added benefit?
A spreadsheet gets you to 30 or 40 members. After that, something breaks. A card expires and the renewal silently fails. A customer moves and nobody notices until the tech drives to the wrong address. A price increase goes out without anyone checking whether the member's agreement terms allowed for it.
This is where software earns its keep. See how Fixtor handles recurring jobs and billing — agreement templates, auto-scheduled maintenance visits in the calendar, and renewal reminders that land in your approval queue before any card gets charged. You review the list, approve the renewals, and the billing goes out with your OK.
Fixtor is free for solo contractors — a reasonable tier to build your first 10–20 members on before deciding whether a larger platform is worth the spend.
About the author
The Fixtor Team
The Fixtor editorial team — writers, product people, and working trade contractors based in Barrie, Ontario. We write the posts we wish we had when we were figuring out how to run a small trade business in Canada.
More on the blog
← Back to all posts