
Most delivery tracking shows a status label and a date. Customers call anyway, because 'out for delivery' spans nine hours and tells them nothing about whether to leave the house. Support cost is a direct function of how little the tracking page says.
An ETA is a distribution, not a time
The honest statement is a window with a confidence, not a single minute the system cannot support. Presenting a precise time and missing it repeatedly destroys trust faster than a wider window that proves reliable. Users forgive imprecision; they do not forgive confident wrongness.
A window you hit beats a precise time you miss. Customers remember which one you were.
Build from the remaining sequence
A useful ETA accounts for the driver's actual position, the stops still ahead, historical service time per stop type and current traffic. Static promises based on despatch date ignore everything that has happened since, which is precisely the information the customer wants.
Update proactively when it slips
Delay is tolerable; silence is not. A notification when the window changes, sent before the original window closes, converts a complaint into an inconvenience. The systems that generate the fewest support calls are the ones that tell people bad news early.
Address quality caps everything
In Indian cities, addresses are frequently descriptive rather than structured, and geocoding them naively produces routes that are wrong before the driver starts. Capturing a location pin at order time, and learning verified locations for repeat addresses, improves sequencing and ETAs more than better routing algorithms.
Respect what the dispatcher knows
Optimisation that ignores practical constraints — this customer only accepts deliveries after 2pm, this lane is impassable for a large vehicle — gets overridden, and once overridden it gets ignored entirely. Encode those constraints or the system will be bypassed.
Offline is the normal case
Driver apps run on cheap phones in areas with weak coverage and a dying battery. Scans, proof of delivery and status must be captured locally and synced later, in order. Any design assuming continuous connectivity will produce missing deliveries that did in fact happen.





