Delivery Analytics Explained: Deliveries Per Hour and Time at Stop
MiliRoute's route analytics show how a delivery run went: how many stops you delivered, how many per hour, the average time between deliveries, an estimate of the time spent at each stop, and the distance and time the quickest order saved. Each number has one plain meaning and one formula, set out below with a full worked example.
This guide explains every number on the analytics screen, shows how each is calculated (checked in the app's code on 7 November 2026), walks through a complete example on a real Sydney route, and says what the numbers cannot tell you.
Quick facts
- Where: History tab, then the analytics icon beside a route (Android app), or under each saved route (web app). Also reachable from the live map screen.
- Counts: Delivered, Failed and Total stops, with a "pending" stop counted as neither.
- Deliveries / hour: stops with a recorded time ÷ hours between the first and last time. Needs at least 2 times.
- Avg. time per delivery: the average gap between consecutive deliveries in stop order. It includes driving.
- Est. time at stop: that gap minus Google's drive-time estimate for the leg, never below 0. An estimate, not a stopwatch.
- Distance saved / Time saved: your route against the order you first entered the stops in.
- Export: "Save / share as PDF" on the analytics screen.
Key takeaways
- MiliRoute records when you finish each stop, not when you arrive, so "time at stop" is worked out, not measured.
- In the worked example below (11 stops on a real Sydney route, with assumed minutes at each stop) the screen would show 4.85 deliveries per hour, 13.6 minutes per delivery and 6.2 minutes estimated at a stop.
- 62.6 − 43.0 = 19.6 km and 113.1 − 79.0 = 34.1 minutes: that is the distance and time saved on that route against the list order (source: our MiliRoute run on 2026-11-07 and the app's own formulas).
- A dash means MiliRoute does not have enough real data for that number. It never fills in a made-up figure.
- There is no universal "good" number. Compare the same route, or the same area, from one day to the next.
Where do you find your delivery analytics?
Open the History tab and tap the analytics icon beside a route. You can also open analytics from the live map screen, and on the web app they are under each saved route (you need to be signed in).
- Open the History tab.
- Tap the analytics icon on the route you want.

What do the numbers on the analytics screen mean?
| Number | What it measures | How it is calculated | What it needs |
|---|---|---|---|
| Delivered | Stops marked delivered | A count | Nothing |
| Failed | Stops marked failed, with a reason | A count | Nothing |
| Total stops | Every stop on the route | A count | Nothing |
| Deliveries / hour | Your pace | Stops with a recorded time ÷ hours between the first and last time | At least 2 stops with a time |
| Avg. time per delivery | The typical gap between deliveries, driving included | The average of the gaps between consecutive deliveries, in stop order | At least 2 stops with a time |
| Est. time at stop | The time not spent driving, per stop | Gap since the last delivery − Google's drive time for that leg, never below 0 | A time on this stop and the one before |
| Distance saved | How much shorter your route is | Distance in the order you entered − distance in your optimized order | A measured comparison for the route |
| Time saved | How much quicker your route is | Time in the order you entered − time in your optimized order | A measured comparison for the route |
A stop you have not reached yet is pending. It is neither delivered nor failed, so Delivered and Failed can add up to less than Total while a run is still going.
How do the numbers work on a real route? A worked example
Take a real route and walk the numbers through. We use the 12-stop Hills District route from our real Sydney test: a depot at Bella Vista Metro Station, then 11 deliveries in MiliRoute's quickest order. The drive times are Google's estimates from our run. The minutes spent at each stop and the 8:00 start are assumptions we chose for the illustration; they are not measurements from a driver.
Assumption: the driver leaves the depot at 8:00 and marks each stop done when finished.
| Stop | Place | Google drive time to it | Assumed time at the stop | Marked done at |
|---|---|---|---|---|
| 1 | Norwest Metro Station | 5 min | 4 min | 8:09 |
| 2 | Norwest Marketplace | 2 min | 6 min | 8:17 |
| 3 | Kellyville Metro Station | 12 min | 5 min | 8:34 |
| 4 | Rouse Hill Town Centre | 8 min | 9 min | 8:51 |
| 5 | Dural Mall | 17 min | 4 min | 9:12 |
| 6 | Cherrybrook Metro Station | 10 min | 12 min | 9:34 |
| 7 | Castle Towers Shopping Centre | 6 min | 7 min | 9:47 |
| 8 | Castle Hill Metro Station | 3 min | 5 min | 9:55 |
| 9 | Stockland Baulkham Hills | 6 min | 6 min | 10:07 |
| 10 | Hills Showground Metro Station | 9 min | 5 min | 10:21 |
| 11 | The Hills Centre | 1 min | 3 min | 10:25 |
(source: Google's drive-time estimates from our MiliRoute run on 2026-11-07; the time at each stop and the 8:00 start are assumptions)
The screen would now show:
- Delivered / Failed / Total: 11 / 0 / 11.
- Deliveries / hour: the first stop was marked done at 8:09 and the last at 10:25, which is 136 minutes, or 136 ÷ 60 = 2.27 hours. 11 stops with a time ÷ 2.27 hours = 4.85 deliveries per hour.
- Avg. time per delivery: there are 10 gaps between the 11 times. They add up to 136 minutes, so 136 ÷ 10 = 13.6 minutes.
- Est. time at stop: for each stop after the first, the gap minus Google's drive time, as in the next table. The average is 6.2 minutes.
- Distance saved and time saved: the quickest order was 43.0 km and 79.0 minutes, and the order entered was 62.6 km and 113.1 minutes, so the screen shows 19.6 km and 34.1 minutes saved (source: our MiliRoute run on 2026-11-07 and the app's own formulas).
The time-at-stop estimate, stop by stop:
| Stop | Place | Gap since the last delivery | Google drive time | Estimated time at the stop |
|---|---|---|---|---|
| 1 | Norwest Metro Station | none | none | none (the first stop never has one) |
| 2 | Norwest Marketplace | 8 min | 2 min | 6 min |
| 3 | Kellyville Metro Station | 17 min | 12 min | 5 min |
| 4 | Rouse Hill Town Centre | 17 min | 8 min | 9 min |
| 5 | Dural Mall | 21 min | 17 min | 4 min |
| 6 | Cherrybrook Metro Station | 22 min | 10 min | 12 min |
| 7 | Castle Towers Shopping Centre | 13 min | 6 min | 7 min |
| 8 | Castle Hill Metro Station | 8 min | 3 min | 5 min |
| 9 | Stockland Baulkham Hills | 12 min | 6 min | 6 min |
| 10 | Hills Showground Metro Station | 14 min | 9 min | 5 min |
| 11 | The Hills Centre | 4 min | 1 min | 3 min |
Two things to notice. First, the estimate gives back the minutes we assumed at each stop, because in this example the driver took exactly Google's drive time. Second, the identity holds: the average gap of 13.6 minutes equals the average Google drive time of 7.4 minutes plus the average time at a stop of 6.2 minutes. That is why "average time per delivery" always includes driving.

Why does deliveries per hour count every stop but only the time between the first and last?
The rate divides the number of stops with a time by the elapsed hours between the first and last time. In the worked example there are 11 times and 10 gaps between them, but MiliRoute counts all 11 stops over the 136 minutes. The same rule gives the sample screen's 4.90: its 8 stops with 14.0-minute gaps make 7 gaps × 14.0 = 98 minutes = 1.63 hours, and 8 ÷ 1.63 = 4.9.
What happens when you beat Google's estimate?
The estimate is set to 0, never negative. Suppose the gap between Rouse Hill Town Centre and Dural Mall were 15 minutes while Google's drive time for that leg is 17 minutes. The estimate would be 15 − 17 = -2, so MiliRoute shows 0, because a negative time at a stop would be meaningless.

What is "estimated time at stop", and why is it only an estimate?
MiliRoute records when you mark a stop done, not when you arrive, so the time at a stop is the gap since the last delivery minus Google's estimated drive time. It can include walking from the van, parking, waiting for a gate, finding the door and handing over the parcel.
The chart called "Time at each stop (estimate)" draws a bar per stop. It needs at least two delivered stops, and the first stop is never shown, because there is no earlier delivery to measure a gap from. In our example the tallest bar is Cherrybrook Metro Station, at 12 minutes.
What do "distance saved" and "time saved" compare?
They compare your optimized route with the order you first entered the stops in. If the quickest order is shorter and faster, the screen shows the difference. When MiliRoute does not have both figures for a route, it says "not measured for this route" and does not guess. A route with only two stops is an example, because the order cannot change.
When every stop on a route is delivered, you also see a "Great route!" message. If the route has a measured saving, the message shows the real minutes saved against your original order. If not, it only shows the number of stops delivered.
How can you use these numbers?
Compare like with like, then look for the outliers.
- Compare the same route or area across days. Deliveries per hour on a tight city run and on a long suburban run are not comparable, because the driving is inside the number.
- Look for the tall bars. A bar far taller than the others points to a stop that took a long time: a locked gate, a long walk, a lift, a customer who was not ready. Add a note to that stop in the app and plan around it next time.
- Read the failed stops. Each failed stop has a reason. If the same reason keeps coming up for one area, fix it at the source. See how to capture proof of delivery.
- Use the saved time as a planning check. If the optimized order saves little against the order you entered, your list was already good. If it saves a lot, planning is worth the minute it takes. See why the closest stop is not always the fastest route.
- Read the stop snapshot. On the analytics screen green means delivered, red means failed and grey means pending, and the numbers match the stop order below it.
How do you share or export your analytics?
Tap "Save / share as PDF" on the analytics screen. The PDF is a copy of the analytics screen, and it can include the proof photos and signatures recorded for the stops. Send it to a customer, a manager or yourself.
What do the analytics not measure?
They measure what you record. The numbers come from the times you mark stops delivered or failed, from Google's estimated drive times for average traffic, and from the order you entered. They do not record when you arrived, they are not live tracking, and they cannot see traffic or weather on the day.
Why does my analytics screen show a dash?
A dash means MiliRoute does not have enough real data for that number. The usual reasons:
- Deliveries per hour and the time-at-stop chart need at least two stops with a recorded time.
- Time at stop needs a recorded time on the stop and on the one before it, and a drive-time estimate for that leg.
- Distance saved and time saved need a measured comparison for the route, which a very short route may not have.

Questions
What is deliveries per hour in MiliRoute?
The number of stops with a recorded time divided by the hours between your first and last recorded time. It needs at least two stops with a time.
How is average time per delivery calculated?
It is the average gap between one delivery and the next, in stop order. It includes the driving between stops, and it skips any stop that is still pending.
Is "time at stop" the time I spent waiting?
No. It is an estimate of the time not spent driving: the gap since the last delivery minus Google's estimated drive time for that leg. It can include walking, parking, waiting and handing over the parcel.
Why is the first stop missing from the time-at-stop chart?
Because there is no earlier delivery to measure a gap from, so the first stop never has an estimate.
Why is my time at a stop 0?
The gap was shorter than Google's drive-time estimate, so the estimate would have been negative. MiliRoute shows 0 instead.
Does a failed delivery count in deliveries per hour?
Yes. The rate counts every stop with a recorded time, delivered or failed.
What do distance saved and time saved compare against?
Against the order you first entered the stops in, not against some other planner.
Why does my analytics screen show a dash?
MiliRoute does not have enough real data for that number. It never fills in a made-up figure.
Are the analytics in the web app as well as the Android app?
Yes. They are under each saved route in the web app, and you need to be signed in.
Can I export my analytics?
Yes. Tap "Save / share as PDF" on the analytics screen. The PDF can include the proof photos and signatures recorded for the stops.
Are analytics on the Free plan?
Yes. Analytics are on both the Free plan and Premium. See Free vs Premium for the one thing that differs.
Does MiliRoute track my arrival time or location live?
No. It records when you mark a stop done or failed, and the analytics are worked out from those times and Google's drive-time estimates.
Sources
- MiliRoute analytics screen and calculations (the formulas in the app's analytics code), checked on 7 November 2026.
- MiliRoute optimizer run on 2026-11-07: 12 public places in the Hills District, Google driving-time estimates for average traffic. See the full test.
- The sample analytics screen is a real MiliRoute screen for a sample route, not a customer's results. The worked example's time at each stop and start time are assumptions.
Last updated 7 November 2026.