TemplateLast reviewed November 7, 2026

HVAC Work Order Template (Free .xlsx Log + Form)

Free HVAC work order template: a macro-free .xlsx log with status, priority, aging and job cost, plus a printable single work order form.

Most HVAC shops already know what goes on a work order. The trouble starts when the orders pile up: which ones are still open, which emergency call has been sitting too long, and what a finished job cost in parts and labor. Our HVAC work order template keeps every order in one log, ages each open order against target days you set per priority, and prints any single order on a one-page form.

Download the HVAC work order template. It’s a plain .xlsx with no macros and no sign-up. Swap the sample orders for your own and the ages, overdue flags and cost totals recalculate.

Video walkthrough

This short captioned walkthrough goes from the log to the printable form to the Dashboard.

HVAC Work Order Template walkthrough

Who this template is for

We built it for small HVAC and mechanical service teams that take calls, send a technician, and need a record of every job without buying software yet. That might be an owner-operator with two or three technicians, an office manager who types up the day’s tickets, or a facilities team that handles its own rooftop units and boilers.

It answers four questions:

  1. Which orders are still open, and who has them?
  2. Which open orders are older than they should be for their priority?
  3. What did each job cost in parts and labor?
  4. Can a technician leave site with a printed copy of the order and get it signed?

It works the same way as a field service work order template or a maintenance work order template for any trade. The sample just happens to be HVAC equipment.

What’s in the workbook

There are four sheets, in this order:

  1. Instructions covers setup, the color legend, Google Sheets import, the limitations, and a note that the formulas, layout and sample figures were written from scratch for this file.
  2. Work Orders is the log, with one row per order. You enter the WO #, date opened, customer or site, equipment, problem, priority, technician, status, date completed, labor hours and parts cost. The sheet works out labor cost, the order total, age in days, an Overdue flag and a Row check.
  3. Order Form is the printable work order form. Type or pick a WO # and it fills in that order’s details, parts, labor and total, with a box for work performed and signature and date lines for the technician and the customer.
  4. Dashboard holds the settings (the as-of date, your labor rate, and target days for each priority) and the totals.

Blue cells are for typing, yellow cells calculate, and green cells are the headline results.

How to set it up

  1. On Dashboard, set the as-of date, your labor rate per hour, and the target days for Emergency, High, Normal and Low orders. The sample as-of date is typed so the sample numbers stay put. When you start using the log for real, type =TODAY() in that cell.
  2. On Work Orders, clear the sample rows and add your own, one row per order. Keep each WO # unique, because the Order Form finds orders by it. Your own numbering works, whether that’s WO-1001, 24-0117 or a dispatch ticket number.
  3. Pick the priority and status from the dropdowns. Completed and Invoiced count as closed. Open, Scheduled, In progress and On hold count as open.
  4. When a job is done, set it to Completed and type the date completed.
  5. Fix any Row check that doesn’t read OK, then confirm Rows to check and Settings to check on Dashboard both read 0.

The sample targets are 1 day for Emergency, 3 days for High, 7 days for Normal and 14 days for Low. Those are placeholders that show how the flag works. Set them to whatever you promise customers or hold your own team to.

Work Orders sheet showing ten sample HVAC work orders with WO number, date opened, customer or site, equipment, problem, priority, technician and status

How the Overdue flag works

Each open order is compared with the target for its own priority.

Age in days for an open order is the as-of date minus the date opened. For a closed order it’s the date completed minus the date opened, so a closed order stops aging. Overdue reads Overdue when an open order’s age is greater than its priority’s target, On time when it isn’t, and Closed for anything Completed or Invoiced.

Take WO-1006, the classroom unit ventilator at Riverside School. It’s a High order opened on 2026-10-27 and still in progress. Against the sample as-of date of 2026-11-02 it’s 6 days old, past the High target of 3, so it reads Overdue. WO-1007, the quarterly PM on the condensing unit, is 4 days old. It’s a Low order with a 14-day target, so it’s On time.

Closing an order updates the Dashboard on its own. Set WO-1006 to Completed with a date of 2026-11-02 and three things change on the Dashboard: open orders drops by one, overdue open orders drops by one, and the order’s 6 days join the average days to close.

The flag only measures how long an order stays open. If you also want to know how often your technicians resolve a call in one trip, read our explainer on first-time fix rate. A log that shows many repeat orders on the same equipment is usually a sign that number is worth tracking.

Printing a single work order

Order Form turns any row in the log into a one-page work order form. Type or pick a WO # in B3 and the sheet looks up that exact number on Work Orders. It fills in the customer and site, equipment, problem, priority, technician, status, dates, labor hours, parts and labor cost, and the order total. Below that there’s a box for work performed and signature and date lines for the technician and the customer. The print area is set to fit one page.

The lookup only fills in the form when exactly one order matches. If the WO # is blank, the total reads “Enter a WO #”. If no order or more than one order matches, it reads “Check WO #”. Either way, every field shows a dash, so you can’t print a stale ticket by mistake. Matching is literal, so a typo or a stray * won’t pull up a different order.

Order Form sheet showing work order WO-1006 for Riverside School with equipment, problem, priority, technician, status, dates, labor hours, parts cost, labor cost, a work performed box, the order total and signature lines

Worked example: the sample log

The sample has ten orders across five customers and four technicians, with a labor rate of $95 per hour. Treat them as sample inputs to replace. Here’s what the Dashboard reports for them:

MetricResult
Open orders6
Overdue open orders3
Closed orders4
Average days to close1.75
Labor hours14.5
Parts cost$914.65
Labor cost$1,377.50
Total job cost$2,292.15

And here’s where each open order stands:

OrderPriorityStatusAge (days)Flag
WO-1005 RTU-1, economizer stuck openNormalOn hold11Overdue
WO-1006 Unit ventilator 12, no heatHighIn progress6Overdue
WO-1007 Condensing unit, quarterly PMLowScheduled4On time
WO-1008 Make-up air unit, thermostatNormalOpen3On time
WO-1009 Server room split, high temp alarmEmergencyOpen2Overdue
WO-1010 Boiler B-2, annual inspectionLowOpen0On time

The 1.75 average comes from the four closed orders: 1, same day, 2 and 4 days. On the form, WO-1006 shows 2.5 labor hours, or $237.50 at the sample rate, plus $145.00 in parts, for an order total of $382.50.

Dashboard sheet showing the as-of date, labor rate and target days by priority, with open, overdue and closed orders, average days to close, labor hours, parts, labor and total job cost, rows to check and settings to check

Importing it into Google Sheets

The template is an .xlsx file. To try it in Google Sheets, import it:

  1. Download the workbook from the template link.
  2. Open Google Sheets.
  3. Choose File > Import > Upload.
  4. Select the downloaded file.
  5. Choose Insert new sheet(s), or create a new spreadsheet from the upload.

Google Sheets converts the file on import, and some formulas, dropdowns or colors may not come across the same way. Before you rely on it or share it with your team, enter a few of your own orders and check Work Orders, Order Form and Dashboard.

How it fits with our other templates

Our other templates cover the work around an order:

You’ll find the rest of the set on our free field service templates page.

Limitations to know before relying on it

  • A row with a blank or shared WO #, a missing or out-of-range date (1950 to 2099), an unlisted priority or status, a closed order with no completion date, a completion date before the date opened, or labor hours or parts cost out of range shows a warning in Row check. Open orders, overdue open orders, average days to close and total job cost then read Check data until Rows to check reads 0. A bad setting on Dashboard does the same through Settings to check.
  • There’s one labor rate for everyone, and changing it reprices earlier orders.
  • Parts cost is one amount per order, not a parts list.
  • Age counts calendar days. It doesn’t track arrival times, response windows or business hours.
  • The log holds up to 500 orders. Formulas, totals and dropdowns stop at row 501 on Work Orders.
  • It’s one file. It won’t dispatch, schedule, notify a technician or sync between people in the field.

Once dispatch, the technicians in the field and billing all need the same order at the same time, a shared file can’t keep them in step. Our Vendor Matcher asks about your trade, team size and budget and suggests field service software to compare.

Until then, grab the HVAC work order template, type in this week’s orders, and set your priority targets to see what’s overdue.

Frequently asked questions

  1. What should an HVAC work order include?

    A WO number, the date opened and completed, the customer and site, the equipment, the problem, the priority, the assigned technician, the status, the labor hours and parts, and a sign-off from the technician and the customer.

  2. How does the template decide an order is overdue?

    An open order is overdue when its age in days is greater than the target days you set for its priority on the Dashboard. Closed orders, meaning Completed or Invoiced, are never overdue.

  3. Can I print a single work order?

    Yes. Type or pick the WO number in B3 on the Order Form sheet and print that sheet. It fills in the order's details, parts, labor and total, and fits on one page with a notes box and signature lines.

  4. Can I open this work order template in Google Sheets?

    You can import it. In Google Sheets choose File > Import > Upload, select the .xlsx file, and choose Insert new sheet(s). Google Sheets converts the file on import and may not carry every formula, dropdown or color over the same way, so test it with a few orders before you rely on it.

  5. When does a work order spreadsheet stop being enough?

    When dispatch, the technicians in the field and billing all need the same order at the same time. One file cannot keep them in step. The Vendor Matcher on this site can shortlist field service software for that stage.

Trust signal

Fact Checked & Editorial Guidelines

Every post on this site is fact-checked against the policy below before the "Last reviewed" date is updated. If a single item below fails verification, the post does not go live.

  • Every claim traces to a source.

    Pricing, feature lists, integrations, and headquarters are taken from vendor product pages, documentation, or signed contracts — never repeated from secondary blogs. Where a claim is sourced from a single vendor's marketing, it is qualified as such.

  • Vendor relationships are disclosed in-line.

    If a review covers a platform whose vendor has provided trial access, sandbox access, or paid placement on a sister property, that relationship is stated in the review's methodology footer — not buried in a sitewide disclosure page.

  • Pricing is rechecked at every review cycle.

    Vendor pricing changes constantly. The 'Last reviewed' date on each post is the date the price line was last re-verified against the vendor's public pricing page. If you spot a stale price, the contact page accepts corrections.

  • Corrections are logged, not silently rewritten.

    Material factual corrections after publication get a correction note dated and appended to the post. We don't pretend the prior version never said what it said.

Spotted an error? Send a correction via thecontact page — corrections are logged with a dated note on the post.

Trust signal

Editorial Review & Methodology

Reviews and comparisons on this site follow a single documented methodology — the same rubric, applied identically to every platform, on every review cycle.

  • Five-criteria scoring rubric, applied identically to every platform.

    Usability, pricing transparency, feature depth, support quality, and integrations. Each criterion scored 0–10 with documented weighting. The rubric is published on the methodology page and does not change between platforms in the same review.

  • Hands-on testing where vendor trial access permits.

    If a vendor offers trial or sandbox access, the reviewer spins up an account and works through the documented evaluation script before scoring. Where access is enterprise-gated, the access type is disclosed and scoring draws on product documentation, verified buyer reviews, and analyst sources.

  • Editorial independence from commercial relationships.

    No vendor pays for placement, previews scores, or controls the content of a review. Affiliate links, where present, do not change ranking — picks are ordered by score, not by commercial yield. If a conflict of interest exists for a specific review, it is disclosed within that review.

  • Reviews get re-checked, not just re-dated.

    Each 'Last reviewed' update means the rubric was re-applied — pricing, feature inventory, integration list, and any material vendor changes since the prior review. A bare date bump without re-evaluation is not a re-review.

The full rubric, weighting, and review-cycle process is on themethodology page.