"Sometime between 8 and 5" is not a schedule. It is a request that the customer donate an entire day to your routing convenience, and every one of them knows it. They have taken that deal from a cable company before and they remember how it went.
Arrival windows are the most underweighted operating decision in field service. Shops obsess over pricing, marketing spend and software features, then hand the customer a nine-hour block and wonder why the booking got cancelled, why nobody was home, and why the review mentions waiting. As of September 2026, the window you quote and whether you hit it are still the two variables that most directly shape whether a customer books, is present when the truck arrives, and says something useful about you afterward.
The useful reframe is this: on-time rate is a number, it is measurable per technician, and it moves. Treat it like first-visit fix or average ticket, and it starts behaving like them — trackable, improvable, and directly attached to revenue.
What "on time" actually means
Define it before you measure it, because the definition determines whether the number is honest.
On-time rate is the count of completed jobs where the technician arrived inside the promised window, divided by all completed jobs that carried a promised window, over a fixed period. Three details make or break it:
- Jobs with no promised window are excluded, not counted as successes. A shop that quotes no window on half its work and reports 97% on time is reporting on a fraction of its day.
- The clock starts at the window, not at the dispatch. Arriving 20 minutes after a 1:00–3:00 window closes is a miss regardless of how heroic the drive was.
- Measure per technician and per weekday. A shop-wide 88% can easily conceal one technician at 62% and a Friday that collapses every week. Averages hide exactly the pattern you are trying to fix.
That per-person breakdown is not a performance-review weapon so much as a diagnostic. A technician who is chronically late is usually being over-booked, given jobs whose duration was estimated by someone who has never done them, or routed across town twice a day. All three are dispatch problems wearing a technician's name, and they show up in the same reporting layer where you track the operating numbers that actually run a service business.
Sizing the window honestly
The temptation is to quote wide windows to protect yourself, then feel safe. The cost of that safety is paid at booking, and you never see the bill because the customer who declines does not tell you why.
A two-hour window is the practical standard across most trades. It is narrow enough that a customer will rearrange a morning around it without resentment, and wide enough to absorb one job running long. It requires you to actually know how long your jobs take — which means duration estimates built from history rather than optimism.
A four-hour window is legitimate when what precedes the job is genuinely unpredictable: diagnostics, multi-stage repairs, anything where the previous call might turn into an all-day project. Quoting four hours honestly is far better than quoting two and missing.
An all-day window should be reserved for work where the customer does not need to be present — an exterior job, a lot with a gate code, a commercial site with staff on hand regardless. Used anywhere else it is the leading cause of the customer-not-home failure below.
There is a routing truth underneath all of this: narrow windows are only possible when the day is built geographically. Jobs scattered across a metro cannot be promised tightly because drive time between them dominates the schedule. Density is what buys precision, which is why window policy and route construction are the same conversation, not two — the point covered in more detail in how dispatch and scheduling actually work in field service.
| 2-hour window | 4-hour window | All-day window | |
|---|---|---|---|
| Booking acceptance | Highest — customers hold the slot readily | Solid for unpredictable job types | Lowest — a common reason quotes go unanswered |
| Wasted rolls from no-shows | Rare, customer plans around it | Occasional, mostly at window edges | Frequent — the customer steps out |
| Dispatch flexibility | Low — requires dense routing and real durations | Moderate — absorbs one long job | High — but the flexibility is bought from the customer |
| Review risk | Low when hit, high when missed | Moderate, forgiving edges | High — waiting itself becomes the story |
| Requires | Duration history, tight routes, live tracking | Reasonable estimates, buffer per block | Nothing, which is why it persists |
The late text, and its deadline
Everything about running late is decided by one thing: who spoke first.
A message that goes out while the window is still open — "the tech is finishing a job and is now expected between 2:40 and 3:10" — is almost always accepted without argument. The customer reorganizes and moves on. The identical information delivered after they have already called asking where the technician is reads as an excuse, because by then they have spent twenty minutes deciding you forgot them. Same delay, same technician, two entirely different reviews.
So the operating rule is a deadline, not a courtesy: the update goes out the moment the schedule shows the window is at risk, not when the truck passes the end of it. That requires the system to know where the technician actually is, which is the practical argument for live GPS — not monitoring people, but knowing early enough to say something useful. That visibility is the same input behind how owners keep track of technicians in the field, and its highest-value use is not oversight. It is the ability to warn a customer forty minutes before they would have noticed.
The corollary is that this should never depend on a person remembering. In a busy shop, the moments when someone most needs to send a late notice are exactly the moments they are least likely to — a technician is stuck, two calls are holding, and the dispatcher is solving the emergency in front of them. Automated ETA messaging fires off location and schedule regardless of how the morning is going. Salesforce's State of Service research has repeatedly found connected, real-time mobile tools to be a defining trait of high-performing service organizations, and this is the least glamorous example of why: the coordination work does not scale with headcount unless a system carries it.
Those same inbound status calls have a second cost that is easy to miss. Every "where is he" call occupies the line a new customer is trying to reach, and a phone that rings through to voicemail during business hours is revenue leaving quietly — the arithmetic laid out in what missed calls actually cost. Reducing status calls is not just a comfort improvement; it is capacity returned to the phone that books work.
The customer wasn't home
The most expensive scheduling failure is not lateness. It is arriving to a locked door.
A wasted roll costs three things, and most shops only count the first two. There is the technician's paid time, round trip. There is fuel and vehicle wear, which is real money on a fleet and shows up in your cost per vehicle whether you attribute it or not. And there is the slot itself — on a fully booked day, a no-show does not hand you free time. It deletes a billable job and forces a rebook into a day that was already spoken for. That third cost is usually the largest.
It is also the most preventable, because the causes are boring:
- The window was too wide to plan around, so the customer ran an errand.
- Nobody confirmed the day before. A short confirmation message with the window and a one-tap reply converts most of the failures that would otherwise happen.
- No heads-up on approach. A message sent when the technician is genuinely en route is what gets someone back from the neighbor's driveway.
- The job needed access nobody arranged — a gate code, a property manager, a tenant, a key. That is an intake failure that surfaces as a scheduling failure, and giving customers a place to see and update their own job details through a customer portal removes a class of it.
For the highest-value or longest jobs, the strongest tool is financial: take a deposit at booking. A customer with money committed is present, and collecting deposits properly also protects you on parts you ordered for a job that evaporates.
There is a cash-flow tail to all of this too. A roll that produces no completed job produces no invoice, and Intuit's small-business research consistently finds late and unpaid invoices among the cash-flow problems owners report most. A day with two wasted rolls did not just lose revenue — it pushed the billing for two jobs into an indefinite future.
Making on-time rate a number the shop actually watches
A metric nobody looks at weekly is a metric that does not exist. Four practices turn on-time rate from a concept into an operating habit:
Record the promised window on the job, always. If the window lives in a text message, it cannot be measured. It has to be a field on the record, set at booking.
Review it weekly by technician and by weekday. Patterns show up fast — the Monday morning block that always slips, the technician whose job durations are systematically underestimated because they do the harder work.
Fix the schedule before you coach the person. Most misses are structural. Too many jobs, unrealistic durations, routes that cross the metro twice. A technician cannot make up thirty minutes of drive time that should never have been on the board.
Attach it to review outcomes. Late arrivals and unheralded delays are two of the most common themes in negative service reviews, and reviews are doing sales work for you around the clock — the reason a routed review pipeline belongs in the same workflow as job completion. Where callbacks and rework show a technical quality problem, a bad on-time number shows a promise-keeping problem, and the two are tracked the same way: consistently, per person, over time. The parallel is exactly the one drawn in tracking callback and rework rate.
The Small Business Administration's guidance on managing your finances makes the general version of the point: continuous tracking beats periodic reconstruction. Nobody can rebuild last month's on-time rate from memory, and a number you only compute when something goes wrong is a post-mortem, not a management tool.
The bottom line
The arrival window is a promise, and on-time rate is the record of whether you keep it. Quote the narrowest window your routing honestly supports. Confirm the day before. Send the update while the window is still open, automatically, off real location data rather than someone's memory. Count the wasted rolls and name why each one happened. Then look at the number every week, per technician, and fix the schedule before you fix the person.
Do that and the customer stops calling to ask where you are, the trucks stop driving to empty houses, and the reviews start mentioning that you showed up when you said you would — which is a lower bar than most trades clear and a better differentiator than any of them expect.
Related reading: Crew scheduling software · Job costing and true profit per job · Turning missed calls into booked jobs. For a complete machine-readable feature and pricing reference, see our LLM reference page.
