Win work · Recurring maintenance revenue

The agreement raises the work order.

Not a calendar. Not a sticky note. Not the one dispatcher who has been here nine years and keeps the PM schedule in her head.

LiveOne block on the roadmap

What it is

A service agreementin Thermal is a recurring contract tied to specific installed equipment at a specific service site. It carries its own pricing, its own escalation schedule, its own visit frequency, and its own coverage rules — what's included, what's billable, what's excluded.

When a scheduled visit comes due, Thermal raises the work order from the agreement. When the work is finished, the agreement decides what gets invoiced and what was already paid for. The contract is a working record, not a PDF in a shared drive.

Where the agreement sits.

Thermal has one spine, and every record hangs off it in the same order. An agreement is the fourth link — which is why it can reach both directions, down to the serial number and forward to the invoice.

  1. 01Customer

    One account. Every site under it.

  2. 02Service site

    The address, and the branch that covers it.

  3. 03Installed equipment

    Make, model, serial, and everything ever done to it.

  4. 04Service agreement

    Coverage, price, escalation, visit frequency.

    You are here
  5. 05Work order

    Raised from the agreement, worked in the field.

  6. 06Invoice

    Built from the work, minus what's covered.

Stage 03 is the part most systems get wrong. If coverage hangs off a customer instead of a unit, you can't answer "is this compressor under contract" without opening a filing cabinet. Thermal attaches coverage to the installed equipment record, so the answer is on the work order before the tech drives out. The visits themselves are scheduled by preventive maintenance and land on the dispatch board like any other call.

ThermalDispatchAgreementsEquipment
Illustrative agreement register — interface mock, not customer data
AgreementCustomer & siteCovered unitsVisits / yrNext visitAnnual valueRenewal
AG‑2214Northgate MedicalRoof A & B · Ottawa1442026‑08‑18$48,600Auto-renew
AG‑2231Cedar Park LogisticsDC 3 · Mississauga622026‑08‑25$21,30090 days out
AG‑2240Riverside FoodsPlant 2 · Winnipeg23122026‑08‑11$96,750Auto-renew
AG‑2258Harbour Point TowerMechanical penthouse · Halifax942026‑09‑02$33,400Escalation unapplied
AG‑2263Westfield Distribution4 sites · Prairie branch3122026‑09‑14$74,900Master agreement
Illustrative interface mock — not customer dataExceptions sort first: unapplied escalations, renewals inside 90 days

Eight things an agreement actually has to do.

Written the way a submittal is written: what it does, what it does today, and what it doesn't do yet. Seven of these are in the product now. One is not, and it says so.

Live

Tiered pricing and annual escalation

Set the contract price by tier — inspection only, full coverage, parts-and-labour — and set the escalation once. Thermal applies it at renewal and flags the agreement if the increase never went out. The register above surfaces that as an exception, because an escalation everybody forgot is the most common quiet margin leak in a maintenance book.

  • TodayFixed, tiered and per-unit pricing; percentage or flat escalation at renewal
  • BillingMonthly, quarterly, annual, or on a custom schedule
Live

Coverage that lives on the unit

Coverage is written against installed equipment, not against a customer name. One rooftop unit can be under full coverage while the unit beside it — the one they added last spring and never put on contract — is time and materials. The tech sees which is which on the work order, so the argument about who pays happens before the repair, not after the invoice.

  • TodayPer-unit inclusions, exclusions and labour-rate overrides
  • FieldCoverage status shown on the work order in the field app
Live

Route-based visit scheduling

Twelve visits a year across four sites in the same industrial park should be one truck roll, not four. Thermal schedules agreement visits by route and by branch, generates the work orders ahead of the window, and drops them onto dispatch with the equipment list and last visit's readings already attached. Deeper scheduling rules live on the preventive maintenance page.

  • TodayFrequency, season and route-driven generation; branch-aware
  • Measured byPM compliance rate
Live

SLA terms, tracked against real timestamps

Response windows, priority levels and after-hours terms are the agreement's own service-level agreement terms, so the clock starts when the call is logged and stops when a tech is on site. Missed windows show up in SLA compliance rate and go into a compliance queue instead of surfacing three months later in a customer meeting. The same queue carries refrigerant and safety reporting for the sites that need it — see refrigeration and fire & life safety.

  • TodayResponse-window tracking, priority tiers, compliance queue, exportable SLA reporting
Live

Master agreements over many sites and branches

A regional grocery chain is one customer with forty sites, and it usually signs once. A master agreement holds the commercial terms while each site keeps its own equipment list, its own visit schedule and its own branch ownership. Roll the numbers up to the contract or split them down to a single building — without exporting anything to a spreadsheet.

  • TodayMaster and child agreements, per-site schedules, branch-scoped work
  • RelatedCommercial HVAC and mechanical contractors run this hardest
Live

Renewals you can see coming

Every agreement carries its term, its notice period and its renewal date. The register sorts what's inside ninety days to the top, with the escalation and last year's contract margin next to it, so the renewal conversation starts with numbers instead of a scramble — the same numbers behind agreement renewal rate. Nothing auto-renews silently unless you set it to.

  • TodayTerm tracking, notice periods, renewal queue, auto-renew per agreement
Live

Margin per contract, not per department

Labour hours, parts and truck time booked against agreement work orders roll back to the agreement they came from. That gives you the one number most maintenance books can't produce: what this contract earned, this year, against what it cost to service. Deeper cost capture is on the job costing page — including the parts that are still Early access there.

  • TodayRevenue, labour and material cost rolled to the agreement
  • Measured byContract margin
On the roadmap

Suggested repricing at renewal

Planned, not built. The intent is a suggestion — this contract ran eleven callbacks and three hundred unbilled hours, here's what it should price at — with the reasoning shown and an off switch. Thermal will not reprice anything on its own. How that bounded-suggestion model is meant to work is written up on the automation page, and what's actually being built is tracked publicly on the roadmap.

  • PlannedRenewal price suggestions with visible reasoning and a per-agreement off switch
  • Not yetNothing in this block is in the product today

What an agreement in Thermal will not do.

Three things worth knowing before a demo, because finding them out afterward is worse for both of us.

It won't post to your ledger

Thermal builds the invoice from the agreement and the work. Your accounting system still owns the GL, payroll and retainage. QuickBooks Online sync is in early access; the Sage Intacct and Business Central adapters are on the roadmap. The integrations page lists what moves today, and we'd rather you read it than take our word for it.

It won't price the job for you

Escalations apply automatically. The contract price itself is yours to set. Quoting new work against an existing agreement happens in quoting & proposals, where your price book and approval rules live.

It won't hold your data hostage

Agreements, coverage and service history are your records. Your data remains yours. The security page is written to be forwarded to whoever has to sign off on it, and migration covers how records get in — and what it looks like if they ever go out.

If a capability isn't on this page, assume it isn't built. We'd rather lose a deal on a missing feature than win one on a sentence that turns out to be aspirational.

What agreements touch.

Nothing here stands alone. These are the records an agreement reads from and writes to, in the order it touches them.

Reads from

Writes to

Sits beside

Questions a controller asks.

The ones that come up on every second call, answered at the level of detail they're actually asked at.

Can one agreement cover equipment at more than one site?

Yes. A master agreement holds the commercial terms and covers child agreements at each service site, so a customer with forty locations signs once. Each site keeps its own equipment list, its own visit schedule and its own branch ownership, and you can report at either level.

How does Thermal decide what's covered and what's billable?

Coverage is written against individual installed equipment, not against the customer. Each covered unit carries its inclusions, exclusions and any labour-rate override. When a work order is raised, the technician sees the coverage status for that specific unit before the work starts, and the invoice is built from the same rules.

Does Thermal apply price escalations at renewal?

Yes. Set a percentage or flat escalation on the agreement and Thermal applies it at renewal. If the renewal passes without the increase going out, the agreement is flagged as an exception in the agreement register rather than quietly carrying last year's price forward.

Can I see margin on an individual agreement?

Yes. Labour hours, parts and material booked against work orders that came from an agreement roll back to that agreement, so you can see contract revenue against the cost of servicing it. Deeper cost capture and full project rollup live on the job costing page, and part of that is still early access.

Does the agreement push invoices into my accounting system?

Thermal generates the invoice from the completed work order and the agreement's coverage rules. QuickBooks Online sync is in early access; the Sage Intacct and Business Central adapters are on the roadmap. Check the integrations page for exactly what moves today before you plan around it. Thermal never owns your general ledger.

What happens to our agreement data if we leave?

Your data remains yours. Agreements, coverage records and service history are your records, and there is no exit penalty in the contract. The security page documents how data is stored and handled.

Bring your worst agreement.

The one with the escalation nobody applied, the site that got added and never put on contract, and the renewal that's already late. We'll build it in Thermal on the call instead of running you through a tour.