Close
Case study · 01

Courier Route
Planner

A route-planning and live-tracking module that runs inside WooCommerce — no more copying orders into a separate routing app. Couriers get one focused screen, customers get live updates, managers see every courier on the map.

Platform
WordPress · WooCommerce
Core features
Route optimisation · Live ETAs
Roles
Courier · Admin · Customer
Tracking
Live courier location
The problem
Routes lived in another app. Orders were copied by hand.

Couriers had to plan their day in a separate routing tool and re-enter every order’s address and details manually — slow, error-prone, and invisible to the store and its customers.

The solution
Route planning, built right into WooCommerce.

Orders flow straight into an optimised route with traffic-aware ETAs. Every stop updates the order in real time, customers stay informed, and managers can follow each courier live.

Courier Route
Search stops
Live location on · updated 1 min ago
Ends 13:49 · 11 stops
Bakırköy - Eyüpsultan - Sarıyer
Fetch Europe
Fetch Asia
Optimize
Plan
Load Vehicle
⌂
Depot
Starting point · Avcılar
1
Yeşilköy
Bakırköy
09:20
Delivered
2
Zafer
Bahçelievler
09:52
Delivered
3
Kirazlı
Bağcılar
10:21
Out for delivery
4
Karadeniz
Gaziosmanpaşa
10:55
Planned
5
Rami Cuma
Eyüpsultan
11:18
Planned
6
Seyrantepe
Kağıthane
11:46
Planned
7
Mecidiyeköy
Şişli
12:09
Planned
8
Sinanpaşa
Beşiktaş
12:31
Planned
9
Etiler
Beşiktaş
12:58
Planned
10
Rumelihisarı
Sarıyer
13:17
Planned
11
Kireçburnu
Sarıyer
13:49
Planned
Cancel Route
Edit
⌂
1
2
3
4
5
6
7
8
9
10
11
+
−
➜
Courier · on the way to stop 3
ETA 10:21 · Kirazlı, Bağcılar
© Mapbox © OpenStreetMap
Who uses it

Three people, one source of truth.

Courier

Logs in with the Courier role and sees only the Courier Route page. The admin bar is hidden, and every other admin page redirects back here.

Admin

Follows each courier’s live location and saved route from the Courier Tracking page.

Customer

Sees the order’s status change as the courier moves — planned, out for delivery, delivered — and gets WooCommerce’s completed-order email automatically.

Courier workflow

Every button on the screen, in the order a day runs.

01
Fetch Europe · Fetch Asia
Fetch by side of the city

Pulls the newest 200 orders in Processing, Postponed or Planned status whose shipping address falls in that side’s districts. The list always starts at the Depot, taken from the depot address in settings.

02
Optimize
Optimise in two passes

Asks for a departure date and time. Route optimisation reorders the stops — start at the depot, end at the last stop, no return — then traffic-aware drive times give every stop an ETA.

03
Plan
Plan without reordering

Keeps the order as it is, sets the date and time and calculates ETAs. Every order moves to “Planned” and its ETA is saved on the order.

04
Load Vehicle
Load the vehicle

Pressed when the courier leaves. ETAs are recalculated with live traffic and every order becomes “Out for Delivery”.

05
Edit → Save Route
Edit and save the route

Reorder or remove stops by hand. On save, ETAs are recalculated from the courier’s current location.

06
Cancel Route
Cancel the route

Clears the list and the route on the map.

On screen, “Bakırköy - Eyüpsultan - Sarıyer” lists the districts on the route, “Ends 13:49 · 11 stops” is the ETA at the last stop and the stop count, and every stop shows its own ETA.

How ETAs are calculated

Real traffic, plus time at the door.

Live
Traffic-aware driving

Drive times are based on real-time traffic data.

+5 min
Per stop

Added for every delivery to cover time at the door.

8 min
Fallback

Used when a leg’s drive time can’t be fetched.

Stop status → order status

Couriers tap one status; WooCommerce stays in sync.

Courier selects
Order becomes
Delivered
Handed to the customer
→
Completed
Left with neighbour
Handed to a neighbour
→
Completed
Not home
Nobody answered the door
→
Postponed — re-enters the next route
Out for delivery
On the way
→
Out for Delivery
Planned
Scheduled with an ETA
→
Planned

Every change is logged on the order as “Courier status update: …”. When an order turns Completed, WooCommerce’s order-completed email to the customer is triggered too (if enabled).

Stop detail

Tap a stop to open it.

Customer details with a tap-to-call phone link.

Courier note.

Update coordinates — saves the courier’s current location as the address coordinate. Points outside Istanbul are rejected.

Live tracking

Every courier, on one map.

While the courier page is open, the phone’s location is watched continuously and saved to the server every 2 minutes.

On Courier Tracking, the admin picks couriers and hits “Show”: last position, saved route, stops, ETAs and statuses appear on the map, refreshing on their own.

Next case study · 02
WhatsApp OTP Login
WooCommerce module