Ask a service company for its on-time arrival rate and you'll usually get one of two answers. "We don't track it." Or a single number, like 84%, that nobody can act on.
The single number isn't wrong. It is just too blended to point anywhere. A late arrival can come from a job that ran long, a drive that took longer than planned, or a slot that was never reachable in the first place. Those are three different problems with three different owners. This guide shows how to measure on-time arrival so the number separates them.
For the definition and formula, see on-time arrival rate. This page is about measuring it well.
Step 1: Decide what "on time" means, and write it down
On time means the tech arrived inside the window the customer was promised. Before you count anything, settle three edge cases:
- Early arrivals. If the window is 10 to 12 and the tech arrives at 9:45, is that on time? Some customers are glad. Others aren't home. Pick a rule (for example, up to 15 minutes early counts as on time) and apply it every time.
- Which promise. If the window was moved during the day and the customer was told, do you measure against the original window or the updated one? Measure both. They answer different questions, covered in step 4.
- Customer-caused misses. A customer who asks for a later arrival on the day is not a late arrival. Mark those and exclude them, but count how many there are.
Step 2: Capture two timestamps per job
You need exactly two pieces of data per job:
- The promised window, stored at the moment of booking and never overwritten. If your system edits the window when the job moves, you lose the original promise.
- The arrival time, recorded when the tech actually gets there. A tap in a tech app is the usual source. A tech who taps "arrived" from the driveway at the end of the day, or forgets until the job is done, ruins the data. Make the tap part of the job, not an afterthought.
Add a third timestamp if you can: when the tech left the previous job. With departure and arrival, you can split a late arrival into "left late" and "drove longer than planned."
Step 3: Compute the rate, then the minutes
The rate is simple:
on-time arrival rate = arrivals inside the window ÷ arrivals measured
Then look at how late the late ones were. A 90% rate where the misses average 8 minutes is a different business from a 90% rate where the misses average 70. Report the median minutes late and the 90th percentile minutes late for the late arrivals. The second number is the one your angriest customers experienced.
Step 4: Split it four ways
This is where the number starts pointing at causes.
By position in the day
Split arrivals by whether the job was the tech's first, second, third or later stop. This is the most useful split, because lateness compounds along the day.
The numbers are invented. The pattern is common. A blended 83% hides a first stop that is nearly perfect and an afternoon that misses one time in three. The fix for that pattern is not "tell the techs to hurry." It is either wider afternoon windows or less uncertainty in the morning. Our guide to arrival window math shows how to size windows by stop position.
If first stops are also late, the problem is the start of the day: late departures from the shop, a long first drive, or morning load-out.
By cause of delay
For each late arrival with a departure timestamp, compare the departure from the previous job with the planned departure.
- Left late, drove on plan: the previous job ran long. That is a job duration estimate problem.
- Left on time, drove long: the drive estimate was wrong. Check whether drives are computed from the previous job at that hour or from the shop.
- Left on time, drove on plan, still late: the slot was never reachable. The booking promised a time the day couldn't make. That one belongs to how availability is offered, which is the subject of travel time scheduling.
By technician
Look for outliers, not a ranking. A tech who is late far more often than peers on similar routes may need help with time on site or with tapping arrival on time. A tech who is late on every route probably has the hardest territory.
Original promise vs last promise
Measure against the window promised at booking and against the latest window the customer was told about. If you are 75% on time against the original promise and 95% against the last update, your day-of communication is doing its job, and your booking is over-promising. If both are low, the day-of updates aren't reaching customers in time to help.
Step 5: Review weekly, act monthly
Weekly numbers jump around, especially per technician. Look at them weekly to catch a bad day early. Change windows, estimates or booking rules monthly, once you have enough arrivals to trust the split. A few hundred arrivals per split is a reasonable floor before you change policy.
Put on-time arrival next to schedule adherence and jobs per day in the same report. Raising on-time arrival by booking fewer jobs is easy. Raising it while holding jobs per day is the real goal. The field service scheduling KPIs Field Note covers the rest of that report.
Where CrewLink fits
CrewLink, in early access, captures the timestamps above as part of the job. The tech app has on my way, arrived and done taps, queued when the phone is offline. On the dispatch board, the live board shows each tech's status as a colored dot: green if the tech will arrive at least 5 minutes early or is on site, yellow between 5 minutes early and 10 minutes late, red more than 10 minutes late, grey when done for the day. The Reports page shows on-time rate, with CSV exports for your own splits, a PDF report and a weekly report email.
What to take away
- Write down what counts as on time, including early arrivals and customer-caused misses.
- Store the promised window at booking and never overwrite it; capture arrival from the tech on site.
- Report minutes late (median and 90th percentile), not only the rate.
- Split by stop position first: it shows whether lateness compounds through the day.
- Use departure times to separate long jobs, long drives and slots that were never reachable.
Common questions
How do you calculate on-time arrival rate?
Divide the number of arrivals inside the promised window by the number of arrivals measured, after excluding misses the customer caused. Decide in advance whether early arrivals count as on time and apply that rule every time.
What is a good on-time arrival rate for field service?
There is no reliable published benchmark across trades, and the rate depends on how wide your windows are. Compare yourself with yourself: split by stop position and work on the weakest position first. A wide window with a high rate is not better than a narrow window with a slightly lower one.
Should early arrivals count as on time?
Pick a rule and apply it consistently. Many companies count a small early margin as on time, because most customers are fine with it, and count earlier arrivals as misses because the customer may not be home.
Why are technicians late more often in the afternoon?
Because every overrun from the morning carries forward. A later stop depends on all earlier jobs and drives finishing on time, so its arrival is less certain. Splitting the rate by stop position shows how much this affects you.