← All posts
HVAC service agreementsMaintenance plan pricingMay 11, 2026Clint Research Team

How to Price an HVAC Service Agreement: The Math Behind the Number

HVAC service agreement pricing is often set based on what competitors charge, not on the actual cost to service the plan. The result: companies that grow their plan base while shrinking their margin. Here is the correct pricing framework.

10 min read

Key takeaways

  • Emergency call allocation is the cost most owners skip. Roughly 35% of plan customers call for service between scheduled maintenance visits. At $180 average call cost, that is $63 per plan customer per year in unplanned labor cost
  • A plan priced at $198 annual with a $208 total cost per customer is losing $10 per plan customer per year before admin overhead
  • At 500 plan customers, a $30 pricing error is $15,000 per year in margin that never shows up on any single report
  • Plan tier design matters: a premium tier with priority dispatch and discounted repairs will have higher emergency call utilization than a basic maintenance-only tier
Contents
  1. 01The 4 Costs That Need to Be in Your Plan Price
  2. 02The Emergency Call Allocation Most Owners Skip
  3. 03Worked Example: The Real Plan Math
  4. 04How Plan Size (Number of Systems) Changes the Math
  5. 05Pricing Tiers: Basic vs. Premium
  6. 06How to Increase Existing Plan Prices Without Losing Renewals
  7. 07Sources
  8. 08Frequently Asked Questions

HVAC service agreements are the closest thing to recurring revenue in the trades, and most operators price them wrong from the start. The common approach is to look at what three competitors charge, pick a price in the range, and run with it. That process entirely ignores the actual cost to service the plan, which varies significantly based on the customer base, the equipment age, and how plan customers behave between maintenance visits.

The result is a business that celebrates growing its plan count while quietly eroding its margin. At 500 plan customers with a $30 per-customer pricing error, that is $15,000 per year in missing margin. At 1,000 customers, it is $30,000. The plan count looks healthy. The P&L does not. For the operational setup that builds the plan base in the first place, see how to start an HVAC service agreement program, and once the program is running, how to reduce HVAC service agreement churn covers the renewal sequence.

The 4 Costs That Need to Be in Your Plan Price

Every service agreement needs to account for four cost categories. Missing any of them produces a plan price that looks profitable until you look at what it actually costs to deliver.

Cost 1: Labor cost per planned maintenance visit.

A standard HVAC maintenance plan includes one or two visits per year: typically a heating system check in fall and a cooling system check in spring. Each visit requires a tech, burdened at their full loaded rate including wages, payroll taxes, workers comp, and benefits.

For a typical residential maintenance visit, a tech spends 45-75 minutes on site. At 60 minutes average and a $45/hour burdened labor rate, the labor cost per visit is $45. Two visits per year equals $90 in planned maintenance labor.

Cost 2: Parts and consumables per planned visit.

Maintenance visits consume parts and consumables: filters, capacitor checks, coil cleaning solution, and minor components that are part of the standard scope. The average direct materials cost for a properly scoped maintenance visit runs $10-$20. For two visits, budget $15-$25.

Cost 3: Emergency call allocation.

This is the cost most HVAC operators skip, and it is usually the most significant one.

Plan customers do not only call for their scheduled maintenance visits. They call for service between visits. The question is not whether they will call. It is how often and what it costs.

Industry data from ACCA member surveys and HVAC coaching organizations puts the range at 30-40% of plan customers generating at least one between-visit service call per year. At 35% of customers calling and an average between-visit call cost of $180 in tech time and truck cost (not billed to the plan customer, since most plans include priority dispatch and discounted service), the expected cost per plan customer per year from between-visit calls is:

0.35 × $180 = $63 per plan customer per year.

That $63 is the number most plans are missing. It is also the number that explains why operators growing plan count are sometimes shrinking margin simultaneously.

Cost 4: Overhead allocation per plan customer.

Running a plan program requires overhead that does not exist in a pure service-call model: renewal reminder campaigns, agreement tracking, scheduling coordination for the two annual windows, and any customer communications infrastructure. A rough allocation is $35-$50 per plan customer per year for administrative overhead. Smaller shops may be lower. Shops with a dedicated service agreement coordinator will be higher.

Text Clint: "What is my average cost per plan customer including labor on maintenance visits and service calls between visits for the last 12 months?"

The Emergency Call Allocation Most Owners Skip

The 35% between-visit call rate deserves its own section because it changes plan economics most visibly.

If you are running 300 plan customers today and 35% generate a between-visit call at an average cost of $180, that is 105 calls at $180 = $18,900 per year in unplanned labor cost your plan revenue must cover. That is $63 per plan customer per year that is real cost whether or not it shows up in your plan pricing logic.

The between-visit call rate is not uniform. It correlates strongly with equipment age. A plan customer with a 12-year-old system will generate between-visit calls at a higher rate than a customer with a 3-year-old system. A shop with an older customer equipment base needs to build a higher emergency allocation into its plan pricing, or tier plans by equipment age.

A 10-year-old system customer may generate between-visit calls at a 50% rate. At $180 average cost: $90 per year in emergency allocation for that customer tier. A 3-year-old system customer may call at a 15% rate: $27 per year. Blending these into a single plan price means the new-equipment customers are subsidizing the old-equipment customers, which is a manageable cross-subsidy unless old-equipment customers are growing faster than new-equipment customers.

Worked Example: The Real Plan Math

Building up from the four cost components:

Cost componentAnnual cost per plan customer
Labor: 2 visits × $45 burdened labor$90
Parts and consumables: 2 visits × $7.50 average$15
Emergency call allocation: 35% × $180 average call$63
Overhead allocation$40
Total cost per plan customer per year$208

At a plan price of $198 per year: losing $10 per customer per year. At 500 customers, that is $5,000 in annual loss just from the plan program before the broader P&L.

At a plan price of $228 per year: $20 gross profit per customer. At 500 customers, $10,000 gross profit annually. 9% gross margin on plan revenue.

At a plan price of $259 per year: $51 gross profit per customer. At 500 customers, $25,500 gross profit annually. 20% gross margin on plan revenue.

Most HVAC shops target 20-25% gross margin on service agreement revenue. To hit 20% gross margin on a $208 cost structure, the plan price needs to be at least $260.

If your current plan is priced at $189 or $199 because "that is what competitors charge," and your cost per plan customer is $208, you are in the loss-per-customer category for every plan you sell. The trade-level KPI view is in what KPIs should an HVAC business track.

Text Clint: "What is my average revenue per plan customer and my average cost per plan customer for the last 12 months, and what is the plan margin?"

How Plan Size (Number of Systems) Changes the Math

The calculation above assumes a single-system residential customer. Most plans are priced per system, which is the correct structure. A customer with 2 HVAC systems generates approximately 2x the labor cost on maintenance visits and a higher between-visit call rate because there are twice as many systems to fail.

Pricing per system rather than per household means:

  • A 2-system customer is priced at roughly 1.8-2x a 1-system customer (not quite 2x because overhead allocation only scales partially)
  • The per-system price should be slightly lower than the single-system price to reflect the efficiency of doing both systems in one visit
  • Emergency call allocation may not scale linearly: a customer with 2 systems does not necessarily call twice as often, but calls at a rate roughly 1.5x the single-system rate

A practical per-system structure:

SystemsAnnual plan price (20% gross margin target)
1 system$259
2 systems$449 (not $518, to reflect visit efficiency)
3 systems$629

Commercial customers with multiple rooftop units need a separate pricing model entirely because their equipment is larger, the maintenance scope is different, and the emergency call behavior follows a commercial pattern.

Pricing Tiers: Basic vs. Premium

Most HVAC service agreement programs offer two or three tiers. The tier structure matters for margin because premium tier customers behave differently than basic tier customers.

Basic tier typically includes: two annual maintenance visits, priority scheduling, and a discount on service call diagnostic fees. Emergency call allocation for basic tier customers runs lower because the plan does not include free emergency labor.

Premium tier typically includes: two annual maintenance visits, priority dispatch, no diagnostic fees on service calls, and discounted parts. Emergency call allocation for premium tier customers runs higher because the plan economics encourage customers to call rather than defer.

When building out tier pricing, recalculate the emergency call allocation separately for each tier. A premium tier customer who knows service calls are free of diagnostic fees will call more often than a basic tier customer who still pays a $95 trip charge. If the premium plan is priced by adding $50 to the basic plan price without recalculating the emergency allocation, the premium plan is almost certainly underpriced.

Target margins by tier: basic at 15-20% gross margin (the plan is primarily a retention and scheduling tool), premium at 20-28% gross margin (the plan adds real economic value to the customer and should price accordingly).

How to Increase Existing Plan Prices Without Losing Renewals

If you have run the calculation above and found your current plans are underpriced, the question is how to correct the price without a wave of cancellations.

Three approaches work in practice:

Grandfather existing plans for one cycle. Tell current plan customers their price is locked for the current agreement period and the new price applies on renewal. This gives them a full year to experience the service before the price changes. Renewal rates on well-serviced plans are high enough that the 1-year delay in correcting the margin is worth the goodwill.

Increase in steps. A 20% price increase in one renewal notice generates more cancellations than two 10% increases over two cycles. The total increase is the same. The customer response is different because the per-renewal price bump feels smaller.

Bundle the increase with an improvement. Adding something visible to the premium plan at the time of the price increase (an additional check, a parts discount, or a no-wait dispatch guarantee) frames the price change as a value upgrade rather than a cost increase. Customers who see added value accept price increases at higher rates than customers who see only a higher bill. The full communication playbook is in how to raise prices in a home service business without losing customers.

Text Clint: "How many of my current plan customers are up for renewal in the next 90 days, and what is the average years-as-plan-customer for the renewal pool?"

Sources

Frequently Asked Questions

4 questions home service owners actually ask about this.

  • 01How much should an HVAC service agreement cost?

    The correct answer depends on your actual cost structure, not competitor pricing. Using the framework above, a single-system residential plan typically needs to be priced at $240-$280 to generate a 20% gross margin after labor, parts, emergency call allocation, and overhead. Plans priced below $200 are almost always losing money on the plan itself and only make sense as a loss-leader retention strategy if the downstream service revenue is high enough to compensate.

  • 02What is included in a standard HVAC service agreement?

    A standard plan includes two annual maintenance visits (one heating, one cooling), priority scheduling, and typically a discount on service call labor or diagnostic fees. Premium plans add free diagnostic fees, parts discounts, or emergency response time guarantees. The standard scope of each visit should be documented in writing because tech time spent on scope creep in maintenance visits is a direct margin leak.

  • 03How does equipment age affect service agreement pricing?

    Older equipment generates between-visit calls at higher rates. A 12-year-old system may generate between-visit calls at 50% of plan customers per year versus 15% for a 3-year-old system. A pricing structure that does not account for equipment age either overcharges new-equipment customers or undercharges old-equipment customers. The simplest adjustment: add an equipment age tier to your plan pricing or decline to offer plans on systems older than 15 years without a separate inspection fee.

  • 04How do I track actual cost per plan customer?

    In most CRMs (ServiceTitan, Housecall Pro, Jobber), plan customers are tagged as plan members. The query is: sum all labor cost and parts cost on jobs tagged to plan customers in the last 12 months, divide by the number of active plan customers at the start of that period. The result is your actual total cost per plan customer per year. Compare to the revenue per plan customer. The gap is your gross margin on the plan program.

See Clint in action

Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.