April 1, 2026 · 11 min read
The HVAC Recurring Revenue Guide: Building a Maintenance Agreement Program That Scales
Maintenance agreements are the most predictable revenue an HVAC company can have. Here's how to structure your program, price your tiers, and track the numbers that matter.
An HVAC recurring revenue program is a set of tiered maintenance agreements sold on an annual subscription, where the customer pays up front for scheduled preventive visits and priority service, and the contractor gets predictable revenue and a documented reason to stay in the relationship.
Ask any HVAC company owner what their most profitable revenue stream is, and they'll almost always say maintenance agreements, even if those agreements only represent 20% of their total revenue.
The reason is simple: recurring revenue is predictable, it comes with higher margins than reactive service work, and it builds customer relationships that resist price competition.
But most HVAC companies run their maintenance program as an afterthought. They have some agreements out there, they occasionally remember to follow up on renewals, and they have a vague sense that it could be bigger. This guide is about turning that vague sense into a system.
A note on the numbers in this guide. We build software for maintenance agreement programs, not market research. Where we give a figure, we say whether it's arithmetic, a working assumption we use when modeling a program, or a rule of thumb from the contractors we talk to. None of it is a measured industry benchmark, and we'd rather tell you that than dress up a guess. If you have real numbers from your own book, trust those over ours.
Why Maintenance Agreements Beat One-Off Service Calls
Before getting into the mechanics, it's worth being clear on why this matters.
Predictable cash flow. If you have 200 agreements at $600/year, you know you have roughly $120,000 in revenue coming in. You can staff for it, plan for it, and borrow against it.
Lower cost to serve. Planned maintenance is cheaper to deliver than emergency service. You schedule it during off-peak periods, your technician knows what they're doing before they arrive, and the work takes a predictable amount of time.
Higher customer lifetime value. Agreement customers stay longer, refer more often, and are more likely to use you for equipment replacements. We don't have a credible industry figure for how much more they're worth, and neither does anyone quoting one at you. What we can tell you is how to work it out on your own book:
- Pull every customer who has been with you five years or more.
- Split them into agreement holders and non-holders as of five years ago.
- Add up total invoiced revenue per customer across those five years, including replacements.
- Compare the two averages.
Most owners who run this find the agreement side comes out well ahead, largely because the replacement sale lands with whoever did the last tune-up. But the multiple depends entirely on your replacement close rate and your average ticket, which is why an industry-wide number wouldn't tell you much even if one existed.
Competitive insulation. A customer on an agreement has a reason to call you first. They've already paid. A competitor has to work much harder to displace a relationship that's been formalized.
How to Structure Your Tiers
Most successful HVAC maintenance programs have three tiers. The names vary (Basic/Standard/Premium, Silver/Gold/Platinum, Essential/Comfort/Elite) but the structure is the same.
| Feature | Basic | Standard | Premium |
|---|---|---|---|
| Preventive visits per year | 1–2 | 2 (heating + cooling) | 2–3 |
| Scheduling | Priority | Priority | Priority same-day emergency |
| Parts discount | 10–15% | 15–20% | 20–25% |
| Included service calls | None | One | Multiple |
| Extras | None | None | Indoor air quality check |
| Typical annual price | $150–$350 | $350–$650 | $700–$1,200 |
| Who it fits | Price-sensitive, newer equipment | Most residential customers | Commercial, or homes that can't afford downtime |
The price ranges above are what we see contractors charging across a wide spread of markets. They are a starting point for your own math, not a recommendation. Labor rates in Houston and labor rates in Boston do not produce the same plan price.
Basic captures customers who want some coverage but aren't ready to commit to more. It's your largest volume tier but lowest margin, and it exists mostly as a landing spot so a price-sensitive customer says yes to something instead of no to everything.
Standard is where most of your customers should land. It's priced to be clearly better than one-off service calls when you do the math in front of a customer.
Premium customers have the lowest cancellation rate and the highest referral rate. They're often commercial accounts or homeowners with expensive equipment who can't afford downtime.
Three tiers is the ceiling, not a target. Four or more and the customer stops comparing and starts stalling. If you find yourself wanting a fourth, the honest answer is usually that one of your existing three is priced wrong.
Pricing Your Program
The most common mistake is underpricing. HVAC owners are often afraid to charge what the program is worth because they're comparing it to a single service call.
The right comparison isn't a service call. It's what a customer would pay over a year if they bought everything a la carte:
- Spring tune-up: $150
- Fall tune-up: $150
- Emergency after-hours call: $250
- Parts at full markup: varies
A Standard agreement at $500/year is a straightforward value proposition compared to $550+ in a la carte costs, and the customer gets priority scheduling and a relationship with a company that knows their equipment.
Our rule of thumb: price your Standard tier so that two tune-up visits cover roughly 60-70% of the annual price. That's not a measured benchmark, it's a working assumption we use because it leaves enough margin to absorb the included service call without pricing the plan out of reach. Test it against your own cost to deliver before you adopt it.
Here's how to run that cost side, with the inputs stated so you can swap in yours:
- Fully loaded technician cost: $45/hour (your number will differ)
- Time on site per maintenance visit: 75 minutes
- Drive and admin time per visit: 25 minutes
- Filters and consumables: $20 per visit
That's about 1.7 hours at $45, plus $20, so roughly $95 per visit and $190 for the year. Against a $500 plan you're at roughly 62% gross margin before overhead and before the included service call gets used. Plug in your own loaded labor rate and your own on-site times. If the result is under 50%, your plan is underpriced or your visit is taking too long, and it's worth knowing which before you sell another hundred of them.
How to Sell Agreements at the Point of Service
Most agreements are not sold by a salesperson. They're sold by a technician standing in a utility closet with a flashlight, at the one moment the customer is actively thinking about their equipment. That moment is worth more than any mailer you'll ever send, and most companies waste it.
The reason is rarely customer resistance. It's that nobody told the technician what to say, and nobody ever checks whether they said it.
Ask after you've fixed the problem, not before. A plan offered while the customer is still worried about the repair sounds like an upsell. The same offer after the system is running and you've explained what went wrong sounds like advice.
Tie the offer to something you physically saw. Generic pitches get generic answers. Specific ones get questions:
"While I was in there, the coil was pretty loaded up. That's most of what was driving your run times. On the maintenance plan we clean that twice a year, and today's diagnostic fee would have been waived. Want me to leave the details with the invoice?"
That script does three things: it connects the plan to a condition the customer now knows is real, it states one concrete benefit against today's bill, and it ends with a low-commitment ask instead of a close.
Don't stack the plan price on top of the repair. If today's invoice is $480, a technician who says "and the plan is another $500" has just doubled the bill in the customer's head. Offer to have the office call in a few days, or offer to apply the diagnostic fee toward the first year. Either one separates the two decisions.
Have a one-page leave-behind. Three tiers, what's included, the price, and a phone number. No brochure copy. The technician's job is to raise it and hand over the page, not to carry a full sales conversation in a hallway.
Coach the "let me think about it." This is where most techs give up. The answer is short and it isn't pushy:
"No problem at all. I'll note on your account that we talked about it so you don't have to explain it again. If you decide in the next couple of weeks, the office can put today's diagnostic fee toward the first year."
Then the note actually has to get written down, and someone actually has to call. A "thinking about it" that nobody logs is a lost sale with extra steps.
Track the ask, not just the close. Put one field on every service ticket: plan offered, yes or no. Once you have that, "the techs aren't selling plans" stops being an opinion and becomes a number you can coach against. In most shops the offer rate is the problem, not the close rate.
Pay for it, but keep it small. A flat $25 to $50 per signed agreement is enough to make the conversation worth having. Percentage-based commission on maintenance plans tends to push technicians toward overselling Premium to customers who'll cancel, which costs you more than the spiff saved.
Don't offer it to everyone. A customer whose 22-year-old furnace is three months from replacement doesn't need a plan, they need a quote. Selling that customer an agreement buys you a refund conversation in the spring. Technicians who are trusted to skip the pitch when it doesn't fit tend to make it more convincingly when it does.
The Numbers You Need to Track
Running a maintenance agreement program without tracking the right metrics is like driving without a dashboard. Here's what matters:
Active agreements: How many contracts are currently active? This is your baseline.
Expiring in 30 days: How many contracts expire in the next 30 days? This drives your renewal follow-up workload.
Renewal rate: What percentage of expiring contracts do you renew? When we model a program that's tracked on a spreadsheet with no automated reminders, we assume 65-70%. When renewal outreach is systematic and happens before expiry, we model 80-85%. Those are our planning assumptions, not an industry study, and the honest version of this advice is that your own trailing twelve months beats any number we can give you. If you've never calculated it, that's the first thing to fix. Our guide to reducing contract cancellations covers what actually moves this number.
Annual recurring revenue (ARR): Multiply your active contracts by their average annual price. This is your baseline recurring revenue number.
Revenue by tier: What percentage of your ARR comes from each tier? If 80% comes from Basic, you're undermonetizing your program.
If you can see these five numbers in real time, you can run your program. If you can't, you're guessing.
The Most Common Growth Mistakes
Not asking at every service call. Every time a technician is in a customer's home, there's an opportunity to mention the agreement program. Most technicians never say this unless they're explicitly coached and tracked, which is why the point-of-service section above is the longest one in this guide.
Letting expired agreements sit. When a contract expires, there's a 30-60 day window where the customer is still warm. They're used to the relationship, they just haven't taken action. After that window, they've mentally moved on. Work expired contracts immediately.
No tiered upsell path. A Basic customer who's been with you three years is a candidate for Standard. A Standard customer who just had an emergency call is a candidate for Premium. These conversations should be happening at renewal, but they only happen if someone's tracking tier and history.
Selling plans faster than you can deliver them. Two hundred agreements is roughly 400 maintenance visits a year that have to land in your schedule, mostly in two shoulder-season windows. Programs that grow past what the schedule can absorb start pushing tune-ups late, and late tune-ups are the single most reliable way to lose a renewal.
Building the System
The mechanics of a good maintenance agreement program aren't complicated:
- Standardized agreement templates for each tier with clear scope
- A customer record that tracks the agreement, visit history, and contact information
- Automated alerts when contracts expire in 30 and 7 days
- A renewal workflow: who calls, what they say, when they follow up
- Reporting that shows ARR, renewal rate, and expiring contracts weekly
Most HVAC companies try to build this in spreadsheets. It works until it doesn't, usually somewhere between 50 and 100 agreements, when the manual tracking starts to break down. The failure isn't dramatic. It's one expiry column nobody sorted this month. If you're at the point of comparing tools, we wrote up what to look for in maintenance agreement software, including the questions worth asking a vendor before you migrate anything.
Purpose-built software handles the alerts, the record-keeping, and the reporting automatically. It doesn't replace the relationship work: the calls, the technician conversations, the follow-ups. It just makes sure none of that falls through the cracks.
If you're building or scaling a maintenance agreement program, Renewra is built specifically for this. First month free, no credit card required.