HVAC maintenance software for preventive service agreements

Built for a two-to-six person HVAC crew running its own spring and fall tune-ups, not a national chain tracking thousands of rooftop units. A visit lands on the calendar on its own schedule, the technician opens the job with last visit’s notes and photos already loaded, and whatever they find while they’re up in the attic turns into a signed estimate before they leave.

Keep your billing system or a spreadsheet for the annual price, the renewal date and the member discount. Use Opsler for the schedule, the checklist, the technician’s findings and the invoice — the parts of a maintenance visit that happen every time, plan or no plan.

What an HVAC Maintenance Workflow Must Connect

Good hvac maintenance software has to connect eight things: the customer, the site, whatever equipment is there, the agreement that says what the customer bought, the schedule that generates visits, the checklist for each visit, wherever the technician’s findings go, and the bill. A lot of vendors selling hvac maintenance agreement software fold all eight into one “membership” or “contract” object. Opsler doesn’t: it connects five of them directly and is explicit about where the other three live instead.

What a maintenance workflow needsOpslerDetail
Customer record with one service address YesPlus an optional separate billing address
Recurring visit schedule YesPro. Frequency, interval, day rules, end condition
Checklist attached to each visit YesItems timestamped with who ticked them
History of every past visit YesNotes, photos, parts and completion detail
Findings turned into an on-site estimate YesSingle price or Good/Better/Best
Approved estimate becomes its own job YesOnly the accepted tier's line items carry over
Completed visit becomes a draft invoice YesOffice review or direct send, set per job
Equipment record — model, serial, its own history NoModel/serial go in the job notes instead
Agreement record — price, term, renewal date NoNo contract object anywhere in Opsler
Automatic recurring billing for the plan NoNo billing engine for a membership fee

That gap matters more here than in most trades, because a shop shopping for hvac preventative maintenance software is usually trying to run an actual membership programme — visits, yes, but also a price, a term and a renewal date. Get the schedule right without an agreement record behind it, and the $199-a-year plan still needs somewhere to live; for most small shops that’s already a spreadsheet or the accounting package, not a second piece of software.

The sections below work through each row: what’s on the customer record, how the recurring schedule behaves, what “agreement scope” means with no contract object behind it, and what happens from a technician standing at the unit through to the invoice landing in an inbox. Compare HVAC pricebook workflows covers the pricing side directly, if that’s the more pressing question.

Set Up Customers, Locations and Equipment History

The customer record holds contact details, a service address, an optional separate billing address, notes, and every job done there with its photos, parts and completion notes. For a homeowner with one system, that’s a genuinely complete service history, and a technician can read the whole story before they knock.

What doesn’t exist is an equipment record. There is no entity for a specific condenser or air handler with its own model, serial, install date, refrigerant type and maintenance history. Model and serial go on the job instead, in the description, the notes, and a photo of the data plate, which is how most technicians capture it anyway, because a plate in a dark attic is easier to photograph than to transcribe.

Where that bites: a customer with two systems needs “upstairs unit” written into the job title rather than held in a field you can filter or report on. A light-commercial customer with six roof-top units is a real constraint, not a cosmetic one.

A customer record holds one service address, so a landlord with several properties works best as a record per address, with each property keeping its own clean maintenance history and the same billing contact on all of them.

Plan Seasonal and Recurring Maintenance Visits

The operational risk in maintenance is simple: the visit that quietly doesn’t happen, discovered in July when the customer calls with no cooling and a plan they paid for. Recurring series are a Pro feature.

PatternHow it’s set up
Spring and fall tune-upsMonthly, interval 6
Annual heating checkYearly, interval 1
Quarterly light-commercial serviceMonthly, interval 3
Monthly filter change on the last working dayMonthly, day of month: Last
A prepaid block of four visitsAny frequency, ends after 4 occurrences
Plan that ends when the warranty doesAny frequency, ends by date

One edit to the series changes the pattern going forward — the twice-yearly plan set up in January can become quarterly in July without touching visits already on the calendar. It only reaches forward, though: occurrences already generated keep the pattern they were created under.

Two honest notes. The schedule is a calendar rule, not a rule derived from equipment runtime or manufacturer interval. Nothing observes the system between visits. And the customer is reminded by email, not text; customer SMS is not a live feature in Opsler. More on how recurrence works or see how a series fits into day-to-day scheduling.

Keep Maintenance Agreement Scope Visible

Say it plainly: a recurring schedule is not a maintenance agreement. Opsler owns the schedule side completely and is deliberately not where a contract’s commercial terms live. Exactly which is which:

What a maintenance programme needsOpslerDetail
A schedule that generates the visits YesRecurring series (Pro): frequency, interval, day rules, end condition
A named series managed as one thing YesChange the pattern going forward without touching visits already booked
The checklist the visit should follow YesAttached to the service; each item stamped with who completed it
History of every past visit for that customer YesNotes, photos, parts used and completion detail
Warranty on the work performed YesPro. Parts, labor or full, with a linked callback job
An agreement record with coverage terms NoNothing stores what the customer bought
Annual price, visit count, member discount rate NoNot fields anywhere in Opsler
Renewal date or auto-renewal NoNothing renews or expires a plan
Recurring billing for the plan itself NoNo billing engine for a membership fee

The HVAC preset’s own maintenance quote template shows where the line actually sits. It has three tiers: Good at $150 for a cleaning-and-inspection tune-up, Better adding $275 on top (billing $425 in total), Best adding $450 again (billing $875 in total, since Opsler’s Good/Better/Best tiers stack rather than stand alone). That’s a one-time quoted job, built and approved like any other estimate. It isn’t a contract: nothing remembers that this customer picked the Best tier last spring, and nothing re-bills the $875 automatically a year from now. You’d send the tiers again as a fresh estimate, and set up the recurring series separately so the visit itself doesn’t depend on anyone remembering to send it.

Opsler does prompt about one kind of expiration: if a visit produced warrantied work (Pro), your own admins get a push notification 30, 14, 7, 3 and 1 days before that warranty runs out, worded as a nudge to schedule a follow-up. That’s a warranty alert on completed work, not a membership-renewal reminder, and it never reaches the customer, though it’s the closest thing to a renewal system here, worth knowing about if you were expecting one.

Send Technicians With the Right Checklist and History

A tune-up done from memory is a different product from a tune-up done from a list, and the customer can tell.

1

The checklist arrives with the job

A default checklist attaches to the service, so every technician performs the same tune-up. Items tick individually with a time and a name, and the ones marked required carry a red asterisk on the technician's screen as a reminder. What actually gates a job closing is the before-and-after photos and the customer's signature — a required item left unticked won't stop completion on its own.

2

So does the history

Every previous visit at that address, with its notes, photos and parts. What was flagged last spring and never done is the single most valuable thing a maintenance technician can arrive already knowing.

3

And it keeps working with no signal

Today's jobs, customer history, the parts and service catalogs, tax settings and the van's stock all download before a technician leaves. Checklists, photos, notes and finishing the job itself work with no signal and catch up on reconnect. Building a brand-new estimate is the one exception — that needs a live connection, so a finding captured in a dead zone should wait for signal before it becomes a quote.

Document Findings and Prepare Follow-Up Estimates

Maintenance pays for itself through what it uncovers, and the revenue is lost in the gap between finding it and quoting it. A capacitor reading low, a drain pan starting to corrode, a system at fifteen years — written on a sheet, quoted a week later, or not at all.

The technician photographs the finding and builds the estimate on the spot from your own catalog. HVAC is the trade where Good/Better/Best earns its keep, because the honest answer to a failing part on an aging system genuinely is three answers: repair it, repair it and get ahead of what else is tired, or replace the unit. The preset’s own residential AC replacement template shows why the tiers have to be read as running totals, not separate prices: Good lists a 14 SEER unit at $3,500, Better lists a 16 SEER upgrade at $5,500, but because tiers stack, Better actually bills $9,000, and Best, the 20+ SEER variable-speed unit, bills $18,000 once every tier below it is added in. The customer is comparing three real, cumulative prices, not three disconnected line items.

They approve through a link with a one-time code and sign on screen — on the driveway, or three days later after talking to their partner. Rejecting an option doesn’t require a reason, though most customers leave one anyway. The approved option becomes its own scheduled job carrying only the line items they agreed to.

You will find no average-ticket uplift figure on this page, because nobody can honestly publish one for your market — the estimating page explains why, and Opsler’s own analytics will tell you your split once you have run enough of them.

Complete Work and Invoice From the Field

Closing out a maintenance visit is what gates everything downstream. A technician can’t mark a job complete without at least one before-and-after photo pair and a signature: those two are the actual gate. Checklist items flagged as required only carry that red asterisk; they don’t block completion on their own, so a required step still needs someone paying attention rather than the system enforcing it.

Complete the job, and its line items (labor, parts, whatever the tune-up or an approved estimate added) carry straight into a draft invoice. Whether that draft needs an admin’s review before the customer sees it depends on how the job was set up, not one account-wide switch: work created by a field agent defaults to requiring review; work an admin or dispatcher set up, which is how most recurring maintenance visits arrive, defaults to letting the technician send directly. Either behavior can be changed on that specific job. More on the invoicing workflow.

Parts added to the invoice come off stock at the location chosen (the van, on a maintenance run) once the invoice is finalized, whichever of those two paths it took. Completing the job, saving the draft and finalizing the invoice all work with no signal and catch up once the technician is back in range; it’s the one part of this workflow that doesn’t share the new-estimate offline gap described above.

What Opsler Does Not Replace

Three things buyers ask about, stated plainly instead of left for a support call to reveal.

No predictions. There is no IoT sensor feed, no smart-thermostat integration, no runtime telemetry, and nothing that flags a system before a technician looks at it in person. Every finding in Opsler comes from someone standing at the unit, this visit.

No engineering. Opsler doesn’t run load calculations, size equipment or replace a Manual J worksheet. A technician recommends a replacement unit from their own assessment; the catalog holds the price, not the engineering behind it.

No live accounting link. QuickBooks and Xero support means a formatted CSV export you import by hand: not a sync, a connection or a two-way feed. If a bookkeeper needs same-day numbers from Opsler, someone is still exporting and importing that file.

And, as the rest of this page has been explicit about: no contract object and no auto-renewal. The schedule runs; the commercial side of a membership plan is yours to track elsewhere. Opsler’s broader HVAC page covers what it does handle, but the honest answer here is that a specialist platform still does these three jobs better.

HVAC Maintenance Software Questions

Whether the search was for hvac maintenance agreement software or hvac preventative maintenance software, the questions that come up most when a shop is evaluating it for the first time are mostly about what’s stored as a record versus what’s just a habit the software enforces.

No, and this is the distinction the whole page turns on. Opsler has a recurring schedule that generates visits and a warranty record for completed work, not a contract object. There is no field for the annual price, the renewal date, the included-visit count or a member discount rate. If you run a membership programme, the visits run here and the commercial terms live in your accounting system or a spreadsheet, which is where most small shops already keep them.

As a recurring series, on Pro. A spring-and-fall tune-up is a monthly pattern with an interval of six; a single annual check is yearly. The series carries its own frequency, interval and end condition — never, after a set number of visits, or by a date — so moving a customer from once a year to twice a year is one edit to the series, not a rewrite of every future visit. It only changes visits not yet generated; ones already on the calendar stay as they were created.

No. There is no IoT, thermostat, controller or runtime-telemetry integration, and nothing that predicts a failure between visits. Maintenance runs on the calendar rule you set, and every finding comes from a technician standing in front of the unit — worth asking any vendor claiming otherwise exactly what data they think they are predicting from.

Mostly, yes. The checklist, photos, notes, finishing the job and its draft invoice all work offline and catch up once the technician is back in range — that covers an attic, a crawl space or a plant room with no bars. The one action that needs a live connection is building a brand-new estimate: a finding and its photo are safe to capture offline, but turning that finding into a quote should wait until the signal returns.

It is built for a shop running maintenance across a handful of technicians, not a facilities company managing thousands of units. Budding, the free plan, covers 2 seats and 50 jobs a month; Pro at $25 per seat removes the job cap and adds recurring series, warranty tracking and the rest of what this page describes. Full pricing is on the pricing page. If you need equipment-asset hierarchies across dozens of sites, or contract billing with auto-renewal, that is a real limit here, not a setting you are missing.

Ready to Run Your Business Without the Chaos?

Scheduling, dispatch, estimates, invoicing, customer portal, and a free branded website — start completely free, upgrade to Pro when you scale.

Free forever on the Budding plan. No credit card required.

Explore all 42 features·See full pricing