Admin

Set up a service agreement

A service agreement is the spine of recurring revenue. It covers a customer's equipment for a fixed term, generates the preventive-maintenance visits on a schedule you set, and drives what gets billed and when. You set it up once — the schedule and the invoices both follow from it, so you're not maintaining three separate lists that drift out of sync.

This guide walks the whole job: get the customer and equipment in place, fill out the agreement, and confirm the visits start generating on their own.

Before you start

An agreement always attaches to real installed equipment on a real service site — not just a customer name. So the customer, at least one service site, and the covered units need to be on file first. If any are missing, add them from Customers (open the customer, add the site, add the equipment) before you come here. You can't cover a unit the system doesn't know about yet.

You'll also want three decisions made before you open the form, because they're easier to settle with the customer than to guess at:

  • How often maintenance runs — annual, semi-annual, or quarterly.
  • The term — when coverage starts and ends.
  • The price — the annual amount, and whether there's a guaranteed response time you're committing to.

Create the agreement

Open Agreements and choose New Agreement. The form is one page, top to bottom.

The new-agreement form
  1. Branch — if the shop runs more than one branch, pick the one that owns this agreement. A single-branch shop never sees this field.
  2. Customer — pick the customer. This is the only truly required field besides status; everything else has a sensible default.
  3. Service Site — leave this on All customer sites to cover equipment wherever the customer has it, or pick one site to scope the agreement to a single location. This is a convenience filter for the equipment list below; coverage itself is recorded per unit.
  4. Covered equipment — pick the specific units this agreement covers. This is the part that matters most: coverage is a real per-equipment record, so a rooftop unit that's under agreement and a walk-in cooler that isn't can sit on the same site without confusion. Check every unit the customer is paying to have maintained.
  5. Plan Name — the name the customer will recognize on their invoice and in the portal (for example, Comfort Club or Premier Care). Optional, but worth filling in for anything you sell by name.
  6. Status — leave this Active for a live agreement. The other values (Due for Renewal, Expired, Canceled) exist so you can record an agreement that isn't currently generating visits; you rarely set them here.
  7. Service Cadence — how often the agreement generates a preventive- maintenance visit: Annual, Semi-annual, or Quarterly. This is the setting that turns into scheduled work, so get it right.
  8. Starts On / Expires On — the coverage term. The start date is when the first visit cycle begins.
  9. Price per Year — the annual amount, entered in dollars. Enter 299.00, not 29900; the system stores the cents for you.
  10. Guaranteed response (hours) — optional. If you're committing to a response-time SLA (say, a tech dispatched within 4 hours of a call coming in), enter the hours here. Leave it blank if this agreement carries no such promise. When it's set, the dispatch board flags jobs on this agreement that are approaching or past the window, so the office can act before you've broken the commitment.
  11. Auto-renew — check this to have the agreement roll over automatically when it expires, so recurring coverage doesn't lapse on a date nobody was watching.

Add any internal notes, then choose Create Agreement.

If your shop uses rate cards or master agreements

Two optional fields appear only when they apply to the selected customer:

  • Pricing tier / rate card shows up if your shop has rate cards set up. Pick one to price coverage per unit from that card's tier rules instead of a flat annual amount. Leave it blank to just use the Price per Year above.
  • Part of MSA shows up if the customer already has a master service agreement. Use it to file this as a child site-agreement under that master — the pattern for a multi-location customer who signs one master and gets a per-site agreement under it. Leave it on Standalone agreement otherwise.

Neither is required, and neither appears at all for a straightforward single-site, flat-price agreement.

After it's active

Once the agreement is active, Thermal schedules the covered visits on the cadence you set — you don't create those work orders by hand, and you don't schedule them separately on the dispatch side. They land as normal preventive-maintenance jobs on the board.

A generated PM visit runs like any other inspection: the same readings, photos, and pass / flag / fail checks a technician uses on any job. To change what a visit checks, edit the linked inspection template under Settings → Inspection Templates — not the agreement. The agreement decides who and how often; the template decides what gets done on site.

Reference

  • Agreement statuses and cadence values — the exact set of statuses an agreement can hold (active, due_for_renewal, expired, canceled) and the cadence options (annual, semi_annual, quarterly), generated straight from the product, are in Status & domain values.
  • Who can create agreements — Owners, Dispatchers, and Office users can reach Agreements; Technicians can't. See Roles & permissions.

On this page