Routes & Optimization
Use this page to understand how deliveries become a driver's route, how to fix addresses that won't map, and how to close out a route and count in the driver's cash.
Quick stepsโ
Before drivers head out:
- Go to Orders and click Fulfillment (the Delivery tab if you also ship). Every delivery still to go out is listed.
- If a Fix pins (N) button shows, click it and correct each address with Save address until the page says All clear ๐.
- Get each delivery onto a driver: a dispatcher assigns it in the Dispatcher Console, or the driver claims it from the Available tab.
- The driver taps โ Optimize in the app to put their stops in a fast order with arrival times.
When the driver comes back:
- The driver taps Finish route. The app shows Cash to hand in.
- In the admin, go to Orders โ More Actions โ Delivery Routes and click View on their route.
- Count the cash, type it in Counted, click Cash received and confirm.
Common questionsโ
What happens to stops the driver didn't finish? They go back into the available pool overnight (after 3 AM store time), marked โฉ From an earlier day. To send them back right away, click Return unfinished stops to pool on the route.
Why is a stop not in the optimized order or on the map? Its address has no map pin, or only an approximate one. Fix it on the Fix delivery pins page.
Can I build a route myself? Yes. On Delivery Routes, click Create New Route, pick the driver and date, tick the orders and click Create Route.
A delivery is missing from the available list. It may already be on a route, be scheduled for a future day, be voided or delivered, or be waiting on the customer's ID check.
More detail: how a route comes together, and the Delivery Routes page
How a Route Comes Togetherโ
- A local delivery order is created with a delivery address. It can come from the POS, your online storefront or WooCommerce.
- In the background, the address is placed on the map as a pin.
- The order joins the available pool of deliveries with no driver.
- The delivery gets a driver in one of three ways:
- A dispatcher assigns it from the Dispatcher Console,
- A driver claims it from the Available tab in the app, or
- A manager puts it on a driver's route from the admin panel (see The Delivery Routes Page).
- Either way, it's added as the last stop on that person's route for today. A route is started for them if they don't have one yet.
- The driver taps โ Optimize to put the stops in a fast order and get ETAs.
- The driver works through the stops, marks each one delivered (or Couldn't deliver) and taps Finish route.
Each driver has one open route per day. New deliveries for that driver are added to the same route until they finish it.
Routes are still for one day. Each night, stops left unfinished on a route from an earlier day go back into the available pool on their own, so they can be claimed or assigned again. Delivered stops stay recorded on the old route, and that route is closed. This happens after 3 AM in your store's time zone, not at midnight, and until then a driver still working last night's route keeps it in the app. New deliveries they claim or are assigned after midnight join that same route. Orders that come back this way are marked โฉ From an earlier day in the app.
Closing or cancelling a route also sends back anything on it that wasn't delivered, whether the driver taps Finish route or you complete or cancel it. The overnight clean-up only looks at routes from the last 7 days, including recent routes that were closed or cancelled with undelivered orders still on them. That keeps very old orders from suddenly filling the list. For an older route, use the button below.
The Delivery Routes Pageโ
Admins and managers can see every route, including past days, by going to Orders, clicking More Actions and choosing Delivery Routes. Click View on a route to see its stops.
Building a route yourself: click Create New Route, choose the driver under Assign Driver, the Delivery Date and (optionally) a Time Slot and notes, tick the orders under Assign Orders to Route, and click Create Route. Each ticked order becomes a stop in that driver's app. A driver has only one route a day, so if they already have an open route on that date, the orders are added to it instead and a banner says so. Orders with no street address are left off, with a message naming them. Add the address first (see Fixing Delivery Pins).
A route's page lists its stops in route order. For each stop it shows whether the order was already Paid, or what the driver has to collect at the door and how (for example Collect on delivery ยท Cash). Stops the driver couldn't deliver show Couldn't deliver with the reason, and stops handed back show Returned to pool.
Any route that isn't completed or cancelled has a Return unfinished stops to pool button, on the list and on the route's own page. Use it when you don't want to wait for the overnight clean-up, for example when a driver goes home early. Confirm when asked. The route's undelivered orders go straight back into the available pool, delivered stops stay recorded, and the route is closed. A note listing the returned orders is added to the route. Complete Route on a started route's page does the same thing. The button works on routes of any age.
Routes that haven't been started also have a Delete button on the list. Deleting one puts its undelivered orders back into the available pool too. Routes built by the TrafficDelivery app count as started as soon as they're created, so use Return unfinished stops to pool for those.
More detail: the available pool
The Available Poolโ
The deliveries a driver can claim (and a dispatcher can assign) are local delivery orders that:
- aren't on anyone's route yet,
- have a street address (an order without one is listed, marked "No address yet โ the store has to add one", but can't be claimed or assigned until it's fixed),
- haven't been voided, delivered or cancelled, and aren't already out with an outside delivery service,
- aren't waiting on the customer's ID check (orders with a pending or declined check stay out), and
- are due today or earlier. Orders with no scheduled date and overdue orders show right away, while orders scheduled for a future day stay hidden until that day.
This keeps tomorrow's orders out of today's list. The list is sorted by the end of each delivery window, so the most time-sensitive orders come first and orders without a window come last.
The list reloads itself about every 25 seconds while it's on screen. If two people go for the same delivery, only the first gets it. For the second person, the delivery isn't added, the list reloads and it drops off. The same happens if an order is voided or delivered while it's still showing.
More detail: delivery windows and route optimization
Delivery Windowsโ
A delivery can have a time window: the earliest and latest time the customer expects their order. Windows come from:
- A delivery date and time slot picked when the order is taken at the register. The register offers your store's delivery hours split into slots (for example 9:00 AM โ 11:00 AM).
- WooCommerce orders where the customer picked a delivery time. These become a one-hour window on the next day (see WooCommerce Orders).
After optimizing, each stop with a window is flagged on time or โ late by comparing its ETA with the end of the window. Stops without a window have no flag.
Route Optimizationโ
When a driver taps โ Optimize, their stops are put in order starting from where the driver's phone is, and each stop gets an ETA.
| Situation | How stops are ordered |
|---|---|
| No stops have windows | Google Maps picks the fastest order, ending at whichever stop is currently last on the list. |
| Some stops have windows | Stops are ordered by deadline: the earliest window end first, with the nearest stop breaking ties. Stops without a window go last. Google Maps then works out the drive times in that order. |
Each ETA includes:
- Drive time with traffic between stops, not just distance.
- About 5 minutes at each earlier stop for parking, walking to the door and handing over the order.
- Up to 25 stops are put in order with ETAs at a time. With more than that, the first 25 are routed (earliest deadlines first when there are windows) and the rest follow after them without ETAs. Optimize again once some are delivered to bring the rest in.
- Google Maps navigation fits 10 stops per trip. The app opens the first 10 and tells the driver how many are left for a second trip.
- If the map service is unavailable, stops still get a sensible order (deadline order when there are windows) but no ETAs.
Only stops still to do are reordered, within the places they already hold on the list. Delivered and couldn't-deliver stops stay where they are. Stops whose map pin is missing or only approximate also keep their place, but they aren't routed and get no ETA. Fix their pins (below) so they can be routed.
More detail: fixing delivery pins
Fixing Delivery Pinsโ
When an address can't be matched to a precise spot on the map, or a delivery has no street address at all, the order is flagged so you can fix it before the driver heads out.
- Go to Orders and click Fulfillment (the Delivery tab, if your store also ships).
- Click Fix pins (N). This button only appears when at least one address needs attention.
- The Fix delivery pins page lists open delivery orders whose address was only matched approximately (fuzzy) or not matched at all (failed), plus open deliveries with no street address.
For each order you can:
| Action | What it does |
|---|---|
| Save address | Correct the Street, City and Postal code and click Save address. The address is looked up again on the map. |
| Re-geocode | Tries the address lookup again. |
| Save pin | Places the pin yourself: type the Latitude and Longitude (for example, copied from Google Maps) and click Save pin. The order leaves the list. |
When nothing needs fixing, the page says All clear ๐.
A stop without a pin, or with only an approximate one, can't be put in the optimized order or shown on the map. If a delivery seems out of order or missing from the map, check Fix delivery pins first.
More detail: couldn't deliver, completing a route and counting in cash
Couldn't Deliverโ
If a driver can't hand an order over, they tap โ Couldn't deliver and pick a reason: Not home, Wrong address, Refused or Other (with an optional note). The stop stays on the route as a record, and the order goes straight back into the available pool so it can be tried again. The next time it shows up, in the app and on the Fulfillment page, it carries a line such as "Tried 9:40 PM โ Not home".
Completing a Routeโ
Once every stop is done, the driver taps Finish route. The app shows Route complete and Cash to hand in: with the total cash on delivery the driver recorded across the route's stops.
If anything on the route wasn't delivered when it's closed (by Finish route or by Complete Route on the route's page), it goes straight back into the available pool. Delivered stops stay recorded on the route.
Counting in the Driver's Cashโ
The route's page on Delivery Routes shows Cash to hand in: the cash the driver collected at the door. When the driver hands it over:
- Count the cash and type the amount in Counted.
- Click Cash received and confirm. If the count differs from what was expected, the confirmation says by how much.
The route then shows who received the cash and when, and the counted amount with any difference (for example Counted $148.00 (-2.00 vs expected)).
An unpaid order is paid when it's delivered, and the payment is recorded in the cash drawer of the register that took the order. If no register took it (for example, an online order) and only one drawer is open, it goes into that drawer. If more than one drawer was open, the order isn't put in any drawer. The route's page flags those orders, and the Fulfillment page lists them under Delivered cash not in any drawer, so you can count them in by hand.
More detail: the Fulfillment page (Delivery tab)
The Fulfillment Page (Delivery Tab)โ
Go to Orders and click Fulfillment to see every delivery that still has to go out, under Pending Deliveries. The page is for admins and managers.
If your store also ships orders, the page has two tabs: Delivery (this list) and Shipping (orders to ship, see Shipping Orders Out). A store that only delivers sees just the delivery list, and one that only ships sees just the shipping list.
| Column | What it shows |
|---|---|
| Order # | The order number, linked to the order. An order from your storefront has an Online badge, and one from your WooCommerce website a WooCommerce badge. Click the badge to open the order in Online Orders. |
| Customer | The customer (or recipient) and a tap-to-call phone number. |
| Address | The delivery address. Map pin is approximate โ check it or Fix the address link to the Fix delivery pins page when something's wrong. |
| Wanted | When the customer wants it, when it was ordered, and any earlier failed attempt. |
| To collect | What the driver must collect at the door and how, Paid when nothing is owed, or E-transfer โ check it arrived for an unpaid e-transfer order. |
| Route | The route and driver it's on, or Not on a route. |
Each row also has Mark Delivered. For an order that hasn't been paid yet, choose How they paid first and, when no register took the order, which cash drawer the money went into (or Not in a drawer โ I'll count it in by hand). Marking it delivered completes the sale. An online order the customer already paid for at checkout (by card or eDebit) doesn't ask how it was paid: it keeps its payment.
Clicking Complete Order on a delivery order in Online Orders marks it delivered exactly like Mark Delivered here: the sale is completed, the payment goes into the drawer you pick, and the order's stop on the driver's route is closed. Use whichever page you have open.
When route planning is switched on for your store, rows that aren't on a route and have a street address also have Add to Route, and the page has a Create Route button.
More detail: best practices
Best Practicesโ
- Promise realistic windows. Don't offer a morning slot for an order placed mid-afternoon.
- Clear the pin list daily. Check Fix delivery pins each morning so every stop can be routed and mapped.
- Re-optimize after new stops. When a driver picks up extra stops mid-run, have them tap โ Optimize again.
- Finish routes at the end of the day. A driver's route is for one day, so wrap up each run with Finish route. Anything left undelivered goes back to the available pool overnight, or right away with Return unfinished stops to pool.
More detail: troubleshooting
Troubleshootingโ
| Problem | Solution |
|---|---|
| Stops won't reorder | The driver's phone must share its location. Stops without a pin, or with an approximate one, stay where they are, so check Fix delivery pins. |
| No ETAs after optimizing | The map service may be briefly unavailable. Try again shortly, and contact support if it persists. |
| A delivery is missing from the available list | It may already be on someone's route, be scheduled for a future day (those stay hidden until their day), be voided or already delivered, or be waiting on the customer's ID check. |
| A delivery shows "No address yet" and can't be claimed | It has no street address. Add one on Fix delivery pins with Save address. |
| An order was left off a route I built | It has no street address. Add one on Fix delivery pins, then edit the route and tick it again. |
| Yesterday's unfinished stops aren't in today's list yet | They go back to the available pool after 3 AM your store's time. To bring them back now, go to Orders โ More Actions โ Delivery Routes and click Return unfinished stops to pool on the old route. |
| Some stops have no ETA after optimizing | Stops past the first 25 aren't given ETAs. Optimize again after a few deliveries. Stops without a map pin never get an ETA until their pin is fixed. |
| ETAs look off | Traffic may have changed since the last optimize. Have the driver tap โ Optimize again. |
| A stop keeps showing late | The customer's window is tighter than the route can meet. Consider giving the stop to another driver, or contact the customer. |
What's Next?โ
- Dispatcher Console: assign deliveries and watch progress.
- The Driver App: the driver's side of a route.
- Delivery Zones: where you deliver and what you charge.
- Turning On Delivery: switching delivery on.