HVAC scheduling is harder than it looks from outside the trade, and harder than most general field service advice accounts for. Four characteristics compound:
- Job durations vary enormously. A filter change and a compressor replacement are not comparable appointments, and a system that blocks both as "two hours" is guessing on every booking.
- Demand is violently seasonal. The first genuinely hot week and the first cold snap produce demand spikes that have little to do with your average week.
- Emergency work displaces planned work. No heat in January is not going on next Thursday.
- Maintenance agreements are both an obligation and an opportunity. They must happen, and they are flexible about when.
A scheduling system that handles three of these and ignores the fourth falls over in the first week of July. Here is one that accounts for all four.
Step 1: Classify the work by predictability
Not by revenue, not by trade — by how much freedom you have about when it happens. This classification drives everything else.
| Class | Examples | Scheduling freedom |
|---|---|---|
| Fixed | Emergency no-heat / no-cool, customer-specified appointments | None — the time is the requirement |
| Semi-flexible | Diagnostics, non-urgent repair, quoted work | Days, sometimes a preferred half-day |
| Flexible | Maintenance agreement visits, seasonal tune-ups | Weeks, within a broad window |
| Deferrable | Non-critical follow-ups, optional upgrades | Fill material |
Most HVAC companies schedule these in the order the calls arrive, which means flexible work lands wherever it happened to be booked and then blocks the fixed work that arrives later.
Reverse it. Place flexible work last, into the space that fixed and semi-flexible work leaves behind. That single change is worth more in a peak week than any routing algorithm.
Step 2: Use maintenance agreements as geographic filler
Agreement visits are the most underused scheduling asset in HVAC. They are obligations you have already been paid for, they have to happen within a wide window, and they are usually concentrated in neighbourhoods where you have sold agreements for years.
That combination makes them ideal for filling travel gaps.
Practically:
- Group agreement customers by neighbourhood or postcode cluster, not by due date alone.
- When a truck has fixed work in a cluster on a given day, pull agreement visits from that same cluster into the surrounding gaps.
- Track how far each agreement is from its due window, and let anything approaching the edge escalate to semi-flexible so it does not get filled around indefinitely.
Done well, a meaningful share of agreement work gets absorbed into travel time you were already paying for.
Step 3: Hold emergency capacity deliberately
The common approach is to hope for gaps and cannibalise planned work when an emergency lands. That produces the worst outcome available: an emergency handled late and a planned customer rescheduled.
Instead, reserve it explicitly.
- Look at your own same-day call volume by week of year. Not an average across the year — the first hot week is not February.
- Reserve capacity to match that week's observed demand, on the trucks and in the territories where the calls actually come from.
- Set a release time. If reserved capacity is unclaimed by, say, 11:00 a.m., release it to deferrable work so it is not wasted.
- Review the reservation weekly during shoulder seasons and daily during a peak.
The reservation is not idle time. It is the difference between absorbing an emergency and rescheduling three customers to fit one in.
Step 4: Attach real durations to service types
HVAC has more duration variance than almost any residential trade, which makes uniform blocks especially costly.
Build a service catalogue with honest durations drawn from your completion history, and set each at roughly the 75th percentile rather than the mean — you are scheduling against the days that run long.
Two refinements that matter in this trade specifically:
- Split by equipment age or system type where the spread justifies it. If service calls on older systems reliably run longer, they are a different service type, not the same one with bad luck.
- Separate diagnosis from repair. A visit that may or may not turn into a four-hour job should be scheduled as a diagnostic with a defined slot, with the repair booked separately once scope is known. Scheduling the optimistic case is how afternoons collapse.
Step 5: Check the drive before promising the time
The step that ties the rest together. In a dense agreement territory, a truck can complete several visits in a morning. In a sprawling install territory, the same truck manages far fewer. The difference is drive, and it is entirely determined by which jobs got promised next to which.
Before a slot is offered, the question worth answering is whether a qualified crew can physically reach that address by that time, given everything already on their day — with travel computed from where the truck will actually be when the previous job ends, at that hour. Slots that fail never get offered, so nothing needs rescuing later.
In July, this is the difference between a day that holds and a day your dispatcher spends rebuilding.
On peak season: a schedule that works in April and breaks in July was never working — April was just forgiving. If you are going to change how you schedule, change it in the shoulder season and let the team get fluent before the volume arrives.
Step 6: Watch four numbers through the season
- Productive utilization — hands-on hours over available hours. The core measure.
- Travel as a share of shift — should fall as clustering improves.
- Schedule adherence — the honesty check, especially when windows tighten.
- Same-day reschedule rate — the clearest signal that days are being built infeasibly.
Review weekly in shoulder season, daily through a peak. The full set and how to read them together is in the scheduling KPIs worth tracking.
What to take away
- Classify HVAC work by scheduling freedom, then place flexible work last, into the space fixed work leaves.
- Maintenance agreements are geographic filler — cluster them and absorb them into travel you are already paying for.
- Reserve emergency capacity deliberately against your own seasonal demand, with a daily release time.
- Attach honest per-service durations at roughly the 75th percentile, and schedule diagnosis separately from repair.
- Check that the drive fits before promising a time; in peak season this is what separates a day that holds from one that gets rebuilt.
- Change how you schedule in the shoulder season, not in July.
Common questions
How do you schedule HVAC technicians efficiently?
Separate the work by predictability first. Maintenance agreements are flexible and schedulable weeks ahead; emergency calls are not. Place the flexible work to create a dense, low-travel base, hold deliberate capacity for same-day calls, and check that each appointment is physically reachable before promising it.
How should HVAC companies handle maintenance agreements in scheduling?
Treat them as the geographic filler they are. Because they are flexible within a wide window, they can be placed to minimise travel around fixed commitments — clustering agreement visits by neighbourhood and scheduling them into the gaps between less flexible work.
How much capacity should an HVAC company hold for emergency calls?
Enough to match observed same-day demand for that week of the year, which means looking at your own history rather than a fixed percentage. Hold it as deliberately reserved capacity rather than hoping for gaps, and release it on a rolling basis if it is unclaimed by a set time each day.