Skip to content
CACanada

How to Build a Clear HVAC Maintenance Contract in Canada

Build a maintenance agreement that identifies the equipment, sets the visit scope, prices the work and separates scheduled servicing from repairs.

Yes Foreman · September 29, 2026 · Running the work

The technician reaches the roof and finds several units, but the HVAC maintenance contract does not say which one is covered. Fix that before you promise a visit: name the equipment, define the work and set the repair boundary.

Start with the customer, site and covered equipment

Inspect the site before writing the scope. A promise to “service the HVAC system” is not enough when the property has several furnaces, rooftop units, controls or accessories.

Build an equipment register. Record:

  • Customer and service location
  • Equipment type and location
  • Asset number, serial number or another clear identifier
  • Make and model where available
  • Controls and accessories covered by the agreement
  • Access notes and known operating restrictions
  • Condition notes that affect the first visit

Write the register so a technician who has never visited the property can find the right unit. “North roof unit beside stairwell” is useful. “Main unit” is not.

Treat residential and commercial sites differently where the work differs. A residential furnace may need an appointment and clear basement access. A commercial rooftop unit may involve site induction, roof access, an escort, tenant coordination or a planned shutdown. Record those conditions before costing the visit.

Match the work to the equipment, the manufacturer's instructions, the site and the work you are authorized to perform. Ask your provincial or territorial trade licensing and safety authority which trade licence and safety rules cover the planned work, including refrigerant work, then write down the answer.

Set the agreement period and visit pattern

State when the agreement starts and ends. Name the planned visit pattern without making a promise your schedule cannot support.

Write who books each visit, how the service window is agreed and what happens when the customer cannot provide access. State whether a missed visit is rescheduled and how extra attendance costs will be handled.

Allow time for the work around the equipment. Inductions, escorts, shutdown coordination, roof setup and tenant notices consume labour even when no tool touches the unit. Put those tasks in the estimate instead of burying them after the visit.

If a customer asks for priority service, define the phrase. State when it applies, how the customer requests it and whether the resulting call, after-hours labour, parts or repairs remain billable. Do not promise an undefined response time.

Write an HVAC maintenance contract scope the technician can complete

Tie every task to an identified asset and visit. A generic checklist creates arguments because it does not show what applies to each unit.

For a belt-driven rooftop unit, the work could include checking filters and belts, cleaning coils and condensate drainage, testing controls and safety devices, and recording operating readings. Use only tasks required by the equipment instructions and within your authorized scope.

For each asset, state:

  • What the technician inspects
  • What the technician cleans
  • What readings or functions are tested
  • What adjustments are included
  • Which panels or components must be accessible
  • Which consumables may be replaced
  • What service limits apply

Name the materials. State whether filters, belts, cleaning products and other consumables are included, limited to a defined type or billed separately. If the technician and customer cannot tell who pays for a filter, the scope is unfinished.

Do not guarantee lower energy use, longer equipment life, better air quality or freedom from breakdowns. Promise defined scheduled equipment work and a written record. Those are things your crew can deliver and prove.

Draw a hard line between maintenance and repair

Inspection can reveal a defect without making the repair part of the maintenance price. State that breakdown diagnosis, failed parts, refrigerant work, emergency calls, after-hours attendance and work on unlisted equipment are excluded unless specifically included.

Give the technician a simple site process:

  • Stop before starting out-of-scope work.
  • Follow the site emergency process when the condition requires it.
  • Document the condition and tell the customer what was found.
  • Isolate equipment only when qualified and authorized to do so.
  • Issue a separate quote or change order.
  • Get approval before continuing.

The Oak Street house example is electrical work, but the site rule is the same. Quote Q-1847 for R. Chen at 14 Oak Street was 1,105 for a bathroom exhaust fan and four LED downlights. The lined ceiling meant chasing was excluded. Extra cable and chasing became an approved 160 change order, so invoice INV-1847 was 1,265.

Those figures are sample currency units, not a rate card. The change-order costs are not given, so do not calculate profit from the 1,265 invoice. The lesson is the approval point: stop, price the added work, get a yes and then proceed.

Price the agreement from the work

Build the HVAC maintenance contract price from the equipment register and the visit scope. Use one consistent internal labour-cost method for every visit, including wages and the employment costs you classify as direct labour. Keep those costs out of allocated overhead.

Use this blank calculation for each planned visit:

Hands-on labour: [hours] × [your internal labour cost per hour] = [cost]
Travel: [travel time × internal labour cost, plus vehicle cost] = [cost]
Access and coordination: [hours] × [your internal labour cost per hour] = [cost]
Consumables and materials: [your cost] = [cost]
Other direct visit costs: [your cost] = [cost]
Allocated overhead: [your consistent allocation] = [cost]

Estimated visit cost: [sum of visit costs above]
Planned visit costs: [sum of all estimated visit costs]
Agreement administration: [setup, scheduling, customer reporting and renewal review not already in overhead] = [cost]
Estimated agreement cost: [planned visit costs + agreement administration]
Markup: [estimated agreement cost] × [your markup] = [amount]
Agreement price: [estimated agreement cost + markup]

Add markup after you have built the estimated cost. Markup is what you add to cost to reach the selling price. Margin is the profit left after cost, expressed as a share of the selling price. Keep the two calculations separate.

An agreement is worth offering only when the scope repeats cleanly, the calendar has room for every visit, the price recovers setup and administration, and actual visit records can show a profit. If any test fails, change the scope, capacity or price before signing.

State whether the customer total includes GST/HST. Ask the Canada Revenue Agency about your business number and GST/HST setup before formatting the agreement. Ask your municipality whether the exact work needs a building permit.

Put the commercial terms beside the work

Write the price and payment timing next to the service promise. State whether you invoice by visit, on a schedule or at another agreed point. Do not leave the customer to infer it.

Add the agreement period, cancellation process and renewal method. State how much notice each party must give using terms chosen for your business and reviewed for your agreement. Do not hide cancellation wording in a service checklist.

Explain how additional work is handled. Name the person who can approve it, the acceptable approval method and how the separate work will appear on the invoice.

If you employ workers, ask your provincial or territorial workers' compensation board about coverage. Keep that question separate from trade licensing, tax and municipal permits because each body handles a different issue.

Use an operating-scope outline

Have the cancellation, renewal, liability and other legal terms reviewed for the province or territory where you use the agreement.

HVAC maintenance contract

Contractor: [legal business name and contact details]
Customer: [customer name and contact details]
Service site: [street address and access contact]
Agreement period: [start and end]

Covered equipment:
[asset identifier, equipment type, location, make/model and service notes]

Visit timing:
[planned visit pattern, booking process and service window]

Maintenance visit scope:
[tasks listed by covered asset and visit]

Included consumables:
[item, specification and any limit]

Excluded work:
[repairs, parts, emergency calls, after-hours work and unlisted equipment]

Access and coordination:
[induction, escort, shutdown, roof access and tenant requirements]

Defect and approval process:
[stop-work point, quote or change-order process and authorized approver]

Visit record:
[completed tasks, readings, time, materials, defects and customer decisions]

Price and GST/HST treatment:
[price, tax treatment and what the price covers]

Payment timing:
[invoice point, payment terms and accepted method]

Cancellation:
[process and agreed notice]

Priority service:
[what the term means, when it applies and what remains billable]

Renewal:
[review date, repricing method and acceptance process]

Acceptance:
[customer name, contractor name, signatures and dates]

Use an estimate while site details remain unknown; then issue the quote or contract when the scope is settled. The quote template gives you a practical field structure for that document.

Turn every visit into a usable service record

Record the asset serviced, technician time, travel, materials used, completed tasks, readings and defects found. Keep recommendations separate from work already completed. A recommendation is not an approved repair.

Attach the record to the correct customer, site and asset. Connect it to the invoice and any separate repair approval. This gives the office enough detail to answer a customer question without calling the technician from memory.

See the job tools for HVAC contractors when you need to keep the site, asset and visit record together.

Compare estimated and actual cost before renewal

After each visit, enter your own figures in a renewal table:

Cost lineEstimated costActual costVarianceChange required at renewal
Technician labour[amount][amount][actual minus estimated][change labour allowance, scope or price]
Travel[amount][amount][actual minus estimated][change travel allowance or price]
Access and coordination[amount][amount][actual minus estimated][change access terms, allowance or price]
Materials and consumables[amount][amount][actual minus estimated][change inclusions, limits or price]
Callbacks[amount][amount][actual minus estimated][fix the cause or add the recurring cost]
Other direct costs[amount][amount][actual minus estimated][change scope or price]
Allocated overhead[amount][amount][actual minus estimated][update the allocation]

Keep callbacks visible as their own line. Review the variance by visit and across the agreement so unplanned time does not disappear into overhead.

Use the job-costing guide to keep direct costs, allocated overhead, selling price and job profitability separate.

Before service plan renewal, update the equipment register and the HVAC maintenance contract. Remove retired assets, add new ones and rewrite recurring work that needed separate approval. Use the final column to change the scope, access allowance or price before sending the renewal.

Put the next job in one place

Yes Foreman connects quotes, schedules, crews, timesheets and invoices for small field-service teams.