Thermal
Admin

Set up a service agreement

Open Agreements in Thermal →

A service agreement is the spine of recurring revenue. It covers a customer's equipment for a fixed term and generates the preventive-maintenance visits on a schedule you set. You set it up once — the visit schedule follows from it automatically, so you're not maintaining a separate calendar by hand.

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. For how the agreement's price actually turns into a bill — and what happens when its term ends — see Understand agreement billing and renewal.

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 company runs more than one branch, pick the one that owns this agreement. A single-branch company 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 first preventive maintenance visit is due one cadence after Starts On (a year later on an annual plan, six months on semi-annual, three months on quarterly). It is not due on the start date, so a new agreement is not already overdue. With no start date, that first due date is one cadence after the agreement was created.
  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. Included labor hours per term — optional. Leave it blank when the agreement does not include a block of hours. Enter zero or more hours in half-hour steps. Anything else is refused: "Enter zero or more hours in half-hour increments." On the agreement, What's included then shows Included labor hours, Used, and Remaining. Used is approved time on this agreement's jobs during the current term, not time marked nonchargeable. Past the bank, remaining reads like "−1.5 h over".
  12. 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.

When a signature is required

Service agreements do not require a signature unless an owner sets Service agreement to Required before issue under Settings → Signatures. That switch starts off. A company that never touches it keeps the status you picked on the form.

When it is on, you still choose Active or Due for Renewal, but the agreement is saved as Awaiting signature. The agreements list has an Awaiting signature filter. Nothing can be scheduled or billed against it until the customer signs, or an owner activates it with a reason. The office message is: "This agreement is awaiting the customer's signature. Nothing can be scheduled or billed against it until the customer signs or an owner waives the signature."

An approver contact signs in the portal with Sign service agreement. After they sign, the agreement becomes Active. On Edit, an agreement that is awaiting a signature shows Reason to activate without the customer's signature. Only an owner can save that. Without a reason, the form says "This agreement is awaiting the customer's signature. An owner can activate it with a reason." Anyone else sees "Only an owner can waive the customer's signature."

If your company uses rate cards or master agreements

Two optional fields appear only when they apply:

  • Pricing tier / rate card shows up once your company has at least one agreement rate card (Agreements → Rate cards). It starts on Automatic. For a contractor, that is their own wholesale card (the default one when they have several), then the wholesale default, then the retail default. For everyone else it is the retail default. When none of those cards exist, Automatic reads flat annual price. Choose a named card to override Automatic. Choose No rate card (flat annual price) to keep the Price per Year above. The card's price applies when equipment is added. Coverage already saved keeps its price.
  • 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. Pricing tier / rate card stays hidden until a rate card exists. Part of MSA stays hidden until this customer has a master agreement.

Installments

By default an agreement bills as one annual amount. If the customer pays over time, open the agreement, choose Edit, and use the Installments section.

Bill in installments splits this term's price into dated invoices. The hint is "Split this agreement's price into dated invoices instead of one bill."

  • Monthly or Quarterly builds an even schedule from a start date (it defaults to the agreement's Starts On) across the term.
  • Custom lets you add and remove rows yourself, each with a due date and an amount.
  • None turns installments off.

The amounts must add up to the agreement's price. The form shows the running total against the price and tells you when they don't match; it won't save until they do. Rows that have already been invoiced show as Already invoiced (read-only).

Billing frequency is a separate choice. It starts on Custom schedule. Monthly, Quarterly, or Annually means each renewal adds the next term's installments at the renewed price. The hint is "Each renewal adds the next term's installments at the renewed price." Leave it on Custom schedule when you are writing the dates yourself.

Each day, Thermal drafts invoices for installments that have fallen due on an Active agreement. By default that is one invoice per installment. The Agreement invoices choice on the customer named on the agreement can put same-day installments on one draft instead. The choices and the cases that still draft separately are in Understand agreement billing and renewal. These are drafts only. Your office reviews and sends them like any other invoice.

Also draft the renewal invoice stays off while Billing frequency is Monthly, Quarterly, or Annually, or while this term has installment rows.

When Billing frequency is Monthly, Quarterly, or Annually, Renew + Invoice extends the term and adds those installments. It does not also draft a full-year invoice.

When Billing frequency stays Custom schedule and Bill in installments is not None, Renew + Invoice still drafts the full-year invoice on top of the installment invoices. Void or adjust that renewal invoice so the customer is not billed twice.

After it's active

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

A canceled visit still shows on the agreement, labeled Canceled. It is left out of the N of M PM visits complete count.

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 statuses the form offers (active, due_for_renewal, expired, canceled) and the cadence options (annual, semi_annual, quarterly) are in Status & domain values. Awaiting signature is not in that picker. The signature policy sets it, as described above.
  • Who can create agreements — Owners, Dispatchers, and Office users can reach Agreements; Technicians can't. See Roles & permissions.

On this page