Scheduling

Arrival window math: how wide each window needs to be, and why the fourth job gets the widest

An arrival window is not a policy. It is a statement about how much uncertainty sits in front of that job on the day. Here is the arithmetic, so you can set windows from your own numbers instead of habit.

Same six stops, two ways to book them● live sketch
- - Phone order— Map orderThis sketch: less road

Most companies pick an arrival window the same way: someone chose "8 to 12 or 12 to 4" years ago and nobody has touched it since. Then the board gets busier, the late arrivals pile up in the afternoon, and the windows get wider to cover it.

There is a better way to set them. A window only has to be wide enough to cover the uncertainty in front of a job. That uncertainty can be estimated, and it is not the same for every job on the day. The first stop has almost none. The fourth stop carries the overruns of the three before it.

This guide gives you the arithmetic. It is a simplified model, but it is close enough to show where your window width comes from and which inputs actually move it. If you want the background on why long windows cost you bookings, read why arrival windows are so long first.

Where arrival uncertainty comes from

A technician's arrival time at a job is the sum of everything that happened before it that day:

  • the start time and the first drive,
  • the length of every earlier job,
  • every drive between earlier jobs.

Each of those has a planned value and a spread. A furnace tune-up planned at 60 minutes might run 40 or 95. A 20-minute drive might take 15 or 35 depending on the hour. The spread is what the window has to absorb.

The key idea is that spreads add up along the day. Not linearly, because some jobs run short and some run long and they partly cancel. But they do add.

The formula

Call the spread of one job's duration s_j and the spread of one drive s_d, both measured as a standard deviation in minutes. If the overruns from one stop to the next are roughly independent, the spread of the arrival time at stop k is:

spread at stop k = √((k − 1) × (s_j² + s_d²))

To cover a share of arrivals, multiply that spread by a factor and use it on both sides of the planned arrival time:

  • to cover about 80% of arrivals, full window width ≈ 2.56 × spread
  • to cover about 90% of arrivals, full window width ≈ 3.29 × spread

Those factors come from the normal distribution. Real job lengths are lopsided (jobs run long more often than short), so treat the output as a starting point and check it against your on-time arrival rate.

A worked example

This is an illustrative example with invented numbers. Plug in your own.

Say your job durations have a spread of 30 minutes and your drives have a spread of 10 minutes. Each stop adds 30² + 10² = 1,000 to the variance, so each stop adds about 31.6 minutes of spread on its own.

Illustrative: window width needed by stop, job spread 30 min, drive spread 10 min
Stop 1 (only the start and first drive)narrow
Stop 2: spread √1,000 = 31.6 min81 min for 80%, 104 min for 90%
Stop 3: spread √2,000 = 44.7 min114 min for 80%, 147 min for 90%
Stop 4: spread √3,000 = 54.8 min140 min for 80%, 180 min for 90%
Stop 4 with job spread cut to 15 min: spread √975 = 31.2 min103 min for 90%

Three things fall out of this.

The fourth job needs about three hours if you want to hit 90%. That is exactly the afternoon window most companies end up offering, and now you can see why. It is not a policy failure. It is the sum of the morning.

The first job needs almost nothing. If you give the first stop of the day the same four-hour window as the last, you are throwing away the easiest promise you will make all day.

Job duration spread dominates. In this example, cutting the drive spread from 10 to 0 only takes stop 4 from 180 to about 171 minutes. Cutting the job spread from 30 to 15 takes it to 103. Drive time is visible, so it gets the blame. Job length estimates usually do more damage. See job duration estimates for how to tighten them by job type.

Three ways to narrow the window

1. Shrink the job spread

Stop using one block length for every job. A "service call" that covers both a capacitor swap and a no-heat diagnosis has a huge spread. Split job types until each one has a tighter range, and book by the type. This is usually the cheapest win.

2. Make the drive known, not guessed

A drive estimated from the shop, or from a home address, has a larger error than one computed from where the truck will actually be. When availability is built from the previous job's location at that hour, s_d drops and, more important, you stop booking stops that were never reachable. That is what travel time scheduling means in practice.

3. Break the chain during the day

The formula assumes you promise every window in the morning and never update it. You do not have to. Once stop 3 is finished and the tech heads out, all that is left in front of stop 4 is one drive: about 10 minutes of spread in the example, not 54.8. An ETA notification sent when the tech heads out is a second, much tighter promise. Keep the booked window honest and let the on-the-day message do the precise work.

Setting windows by position in the day

You do not need a different window for every slot. A simple scheme that follows the arithmetic:

Position What the window covers Practical approach
First job Start time and first drive Tightest window you offer
Second job One job and one drive Next tightest
Third and later Several jobs and drives Widest window, plus an on-the-way message

Run the formula with your own spreads to get the minutes. Then measure for a month and adjust. If stop-2 arrivals are on time 97% of the time, the window is wider than it needs to be. If stop-4 arrivals hit 70%, it is too narrow, or the day is overbooked. Our guide to measuring on-time arrival shows how to split the rate by stop position so you can see this.

How to get your own spreads

You need two numbers, and both come from timestamps you may already have.

  • Job spread: for each job type, take arrived-to-done times for the last 50 or more jobs and compute the standard deviation. A spreadsheet's STDEV function does it.
  • Drive spread: take the actual time from leaving one job to arriving at the next and subtract the planned drive. The standard deviation of that difference is s_d.

If you do not capture arrival and done times per job, start there. Without them you cannot measure schedule adherence either.

Where CrewLink fits

CrewLink, in early access, works on each input in the formula:

  • Drive spread. Online booking offers only start times a qualified tech can make, with the drive at that hour computed from the previous job, not the shop.
  • Job spread. Time on site is recorded when a job is marked done, and future bookings use it.
  • The chain. About halfway through a job, the tech app asks whether the tech is on track or needs +15, +30 or +60 minutes. An extension re-flows the rest of that tech's day right away, and the affected customers are texted. Customers also get an on-the-way text with an ETA.

The tech app's on my way, arrived and done taps give you the timestamps this math needs, and the Reports page shows your on-time rate. The window widths are still your call. The arithmetic above is how to make it.

What to take away

  • Arrival uncertainty grows along the day: spread at stop k ≈ √((k − 1) × (s_j² + s_d²)).
  • A 90% window is about 3.3 times that spread; an 80% window about 2.6 times.
  • The first job of the day needs a much narrower window than the fourth.
  • Job duration spread usually matters more than drive spread, so fix estimates by job type first.
  • An on-the-way message is sent with only one drive left, so it can promise far more tightly than the booked window.

Common questions

How wide should an arrival window be?

Wide enough to cover the uncertainty in front of that job. Estimate the spread of your job lengths and drives, multiply by the number of stops before the job, take the square root, and multiply by about 3.3 to cover 90% of arrivals. The first job of the day needs far less than the last.

Is a two-hour arrival window realistic?

For the first and second jobs of the day, often yes. For the fourth job, only if your job durations are tight or you update the customer once the previous job finishes. Run the formula with your own spreads to see where two hours stops holding.

Why are afternoon arrival windows always longer?

Because an afternoon job carries every overrun from the morning. Spreads from each earlier job and drive add up, so the arrival time of a later stop is less certain than an earlier one.

Does a narrower window mean more late arrivals?

Only if nothing else changes. If you narrow the window without cutting the job and drive spreads, more arrivals land outside it. Tighten the estimates first, then narrow the window to match.

See your own day on it

CrewLink offers only the times a crew can actually reach, from where the truck will be. Plug in your trucks, services and city and see how your week would run, then walk through it with your own territory. CrewLink is in early access.

Set up your CrewLinkIndependent contractor? Join CrewConnect