Local Delivery Drivers and Route Manager for WooCommerce lets you run local deliveries with your own drivers, directly from your store. You assign orders to drivers, drivers work from a mobile dashboard in My Account, and customers follow their delivery on a tracking page and by email.
This guide covers installation, the setup wizard, every setting, and the day-to-day workflow for store managers and drivers.
The extension is compatible with WooCommerce High-Performance Order Storage (HPOS) and the Checkout block.
Installation
↑ Back to top- Download the .zip file from your WooCommerce.com account.
- In your WordPress admin, go to Plugins > Add New Plugin and click Upload Plugin.
- Choose the downloaded .zip file and click Install Now.
- Click Activate.
After activation, a notice at the top of the admin asks you to complete the setup wizard. Click Run Setup Wizard to start.
Setup wizard
↑ Back to topThe wizard takes a few minutes and covers everything you need to start delivering. You can change every choice later.
Step 1: Welcome
↑ Back to topAn overview of what the extension does. Click Let’s get started.
Step 2: Add your first delivery driver
↑ Back to topDrivers are WordPress users with the Delivery Driver role. Choose one of two options:
- Create a new user account: enter a username, first name, email address, and mobile phone number. The driver receives an email with login instructions.
- Use an existing WordPress user: select a user who already has an account. Their role is upgraded to Delivery Driver.
You can also enter a vehicle type, such as Van, Motorbike, or Bicycle, and a delivery zone. Click Save driver and continue, or Skip for now to add drivers later.
Step 3: Basic settings
↑ Back to top- Which order status means “ready for delivery”? Orders in this status appear in the Delivery Manager, ready to assign. Most stores use Processing.
- Send delivery status emails to customers: enabled by default.
- Require a proof-of-delivery photo: drivers must attach a photo before they can mark an order as delivered.
- Automatically complete the order when delivered: sets the WooCommerce order status to Completed when the driver marks the delivery done.
Step 4: Driver access
↑ Back to topDrivers always get a My Deliveries tab in My Account on your site. Tick Also show a “My Deliveries” menu item in the WordPress admin sidebar if your drivers prefer to work from wp-admin. Click Finish setup.
Settings
↑ Back to topGo to WooCommerce > Settings > Delivery Driver.
Delivery settings
↑ Back to top- Ready for delivery status: the order status that makes an order available for assignment. Default: Processing.
- Customer email notifications: send delivery status emails to customers. Default: on.
- Require proof-of-delivery photo: drivers must attach a photo before marking an order delivered. Default: off.
- Auto-complete order on delivery: set the order to Completed when the driver marks it delivered. Default: off.
- Update order status on failed delivery: set the order to Delivery Failed when the driver marks it failed. Default: on.
Driver access
↑ Back to top- WordPress admin menu for drivers: show a My Deliveries item in the admin sidebar for drivers. Default: on.
Maps and location
↑ Back to top- Google Maps API key: required for embedded maps and live driver tracking. Leave blank to disable maps.
With a key, you get:
- A Navigate All Stops button that opens the driver’s stops for the day as one route in Google Maps
- A map on the customer tracking page with the driver’s live location, refreshed every 30 seconds
Everything else, including assignment, the driver dashboard, proof of delivery, emails, tracking pages, cash reconciliation, reports, and run sheets, works without a key. In your Google Cloud project, enable the Maps JavaScript API and the Geocoding API for the key.
Cash on delivery
↑ Back to top- Enable cash reconciliation: record how much cash each driver should collect and hand in. This adds the WooCommerce > Cash Reconciliation page. Default: off.
- Treat unpaid orders as cash: count orders that have not been paid online, such as bank transfer and check payments, as cash to collect. Default: off.
See Cash reconciliation for how cash orders are identified.
Routing and capacity
↑ Back to top- Maximum stops per driver, per day: when an assignment takes a driver over this number, you see a note with the new stop count. Assignments are not blocked. Set to 0 for no limit. Default: 0.
- Delivery instructions at checkout: add an optional “Delivery instructions” field to checkout, for example a gate code or where to leave the parcel. Works on classic checkout and the Checkout block. Drivers see the instructions on each stop, and customers see them on their tracking page. Default: off.
Data
↑ Back to top- Delete all data on uninstall: remove the extension’s settings and delivery data when you delete the plugin. Default: off.
Managing drivers
↑ Back to topGo to WooCommerce > Delivery Drivers.
Add a driver
↑ Back to top- Click Add New Driver.
- Choose Create a new WordPress account for this driver or Use an existing WordPress account.
- Enter the driver’s name, email address, phone number, vehicle type, and delivery zone. The phone number and name are shown to customers in delivery emails.
- Set the status to Active so the driver can be assigned deliveries.
- Click Add Driver.
Find and edit drivers
↑ Back to topSearch by name, email, phone, or vehicle, and filter by status, availability, or zone. Each row shows whether the driver is available today. Use Edit to update a driver, or View Deliveries to see their assigned orders.
Driver availability
↑ Back to topDrivers set themselves as Available or Unavailable from their own dashboard. Availability is shown when you assign orders, so you can see at a glance who is working today.
Remove a driver
↑ Back to topClick Remove. The driver is removed from the delivery system, and their WordPress account is kept.
Assigning orders
↑ Back to topGo to WooCommerce > Delivery Manager.
Unassigned Orders tab
↑ Back to topThis tab lists every order in your “ready for delivery” status that does not have a driver yet. Failed deliveries also appear here for re-assignment.
- Tick the orders you want to deliver, or use Select all.
- Click Assign Selected to Driver.
- Choose the driver and the delivery date.
- Click Confirm Assignment.
When you confirm, the driver receives a “New delivery assigned” email for each order, and the customer receives a “scheduled for delivery” email with a link to their tracking page.
Assign from the order screen
↑ Back to topYou can also assign a single order from its edit screen. The Delivery Assignment box in the sidebar lets you choose a driver and delivery date. After delivery, the same box shows the delivery status, the customer signature, and the proof photo.
Assigned Orders tab
↑ Back to topThis tab lists every assigned delivery. Filter by date (Today, Tomorrow, Yesterday, This Week, This Month, or All Time), by delivery status, and by driver. From each row you can:
- View the order.
- Re-assign the order to a different driver or date.
- Reschedule a failed delivery to tomorrow for the same driver in one click.
When you filter by a single driver and a single day, a Print run sheet link appears.
The WooCommerce Orders list also gets a Driver column with the assigned driver and delivery status.
Stop order
↑ Back to topStops are added to a driver’s day in the order you assign them. The driver sees the stops in that order, and Navigate All Stops follows the same sequence.
Delivery statuses
↑ Back to topEach assigned order has a delivery status:
- Pending: assigned and waiting for the driver to start.
- Out for Delivery: the driver has started the delivery.
- Delivered: the driver has completed the delivery.
- Failed: the driver could not complete the delivery and has entered a reason.
The extension also adds two WooCommerce order statuses, Out for Delivery and Delivery Failed. The order moves to Out for Delivery when the driver starts, and to Delivery Failed on a failed attempt if Update order status on failed delivery is on. Cancelled and refunded orders are removed from driver routes.
The driver dashboard
↑ Back to topDrivers sign in to your store and open My Account > My Deliveries on their phone. If the admin menu option is on, they can also use My Deliveries in the WordPress admin sidebar. There is no separate app to install.
Daily view
↑ Back to topThe dashboard lists the driver’s stops for the selected day, with filters for Today, Yesterday, This Week, This Month, All Time, or a specific date. Drivers can switch themselves between Available and Unavailable, open their Delivery History, and print their own run sheet for a single day.
Making a delivery
↑ Back to top- Tap an order to see the customer, delivery address, order items, payment details, customer note, and delivery instructions.
- Use Open in Google Maps to navigate, or WhatsApp to message the customer.
- Before leaving, select an estimated arrival time and tap Start Delivery. The customer sees this time on their tracking page and receives an “out for delivery” email.
- At the door, add a proof-of-delivery photo and ask the customer to sign on screen with their finger or a stylus.
- For a cash order, enter the amount collected in Cash collected.
- Tap Mark as Delivered. You can add an optional note for the store manager, for example “Left with reception”.
Failed deliveries
↑ Back to topIf the delivery cannot be completed, the driver taps Could not deliver?, enters a reason (required), and taps Mark as Failed. The customer and the store manager each receive an email, and the order returns to the Unassigned Orders tab.
Location sharing
↑ Back to topAfter the driver taps Start Delivery, their phone shares its location while the delivery is in progress. The browser asks the driver for location permission the first time. Customers see the location on a map when a Google Maps API key is set.
Customer tracking page
↑ Back to topEvery assigned order gets a private tracking link, included in the customer’s delivery emails. The tracking page shows:
- The delivery progress: Order Placed, Driver Assigned, Out for Delivery, and Delivered
- The expected arrival time and the driver’s name
- The customer’s delivery instructions and order items
- A live map with the driver’s location, when a Google Maps API key is set
- The proof photo and signature after delivery
Tracking links expire 30 days after delivery. Expired links show a clear message that the link is no longer active.
Emails
↑ Back to topThe extension sends these emails using your store’s WooCommerce email template:
- To the customer: delivery scheduled, out for delivery, delivered, and delivery failed.
- To the driver: new delivery assigned, with the delivery address, items, and instructions.
- To the store manager: delivery failed, with the driver’s name and reason.
Turn customer emails on or off with Customer email notifications in the settings.
Cash reconciliation
↑ Back to topTurn on Enable cash reconciliation in the settings, then go to WooCommerce > Cash Reconciliation.
For each driver, the page shows the number of cash orders, the cash to collect, the cash collected, and the amount outstanding. Filter by date range and driver, and click Download CSV to export.
Which orders count as cash
↑ Back to top- Orders paid with the WooCommerce Cash on delivery payment method always count as cash.
- With Treat unpaid orders as cash on, orders that have not been paid, such as bank transfer and check orders awaiting payment, also count as cash.
- Orders paid online are never counted as cash. If you mark a bank transfer order as paid after it is assigned, it stops being counted as cash.
The driver sees “Amount due for this order” on each cash stop and enters the exact amount collected before marking it delivered.
xyno_lddrm_cod_gateways filter, which receives an array of payment method IDs.Delivery reports
↑ Back to topGo to WooCommerce > Delivery Reports.
Filter by date range and driver to see:
- Assigned, Delivered, and Failed counts
- Success Rate: delivered orders as a share of completed attempts
- On Time: of the deliveries with an arrival time, the share completed by that time
- Avg. Time: the average time from assignment to delivery
- Cash Collected
Click Download CSV to export the report.
Printable run sheet
↑ Back to topA run sheet is a printable list of one driver’s stops for one day. It shows each order and customer, the address and delivery instructions, any cash to collect, and a column for signatures and notes, with the total cash to collect at the bottom.
Open it from the Assigned Orders tab by filtering to one driver and one day, then clicking Print run sheet. Drivers can print their own from the My Deliveries page when a single day is selected. Cancelled and refunded orders are not included.
Developer hooks
↑ Back to topxyno_lddrm_cod_gateways(filter): payment method IDs treated as cash on delivery. Default:array( 'cod' ).xyno_lddrm_order_assigned(action): fires when an order is assigned. Receives the order ID, driver ID, and delivery date.xyno_lddrm_delivery_status_changed(action): fires when a delivery status changes. Receives the order ID, new status, and extra arguments.xyno_lddrm_order_reattempted(action): fires when a failed delivery is rescheduled. Receives the order ID, driver ID, and new date.
Frequently asked questions
↑ Back to topDo drivers need a separate app?
↑ Back to topNo. Drivers use their phone’s browser and sign in to your store. Their deliveries are under My Account > My Deliveries.
The my deliveries tab shows a “page not found” error.
↑ Back to topGo to Settings > Permalinks and click Save Changes without changing anything. This refreshes your site’s permalinks.
The map does not appear on the tracking page.
↑ Back to topCheck that a Google Maps API key is saved in WooCommerce > Settings > Delivery Driver, that the Maps JavaScript API is enabled for that key, and that the key allows your site’s domain. The driver’s live location appears only after the driver taps Start Delivery and allows location access.
An order is not showing in the unassigned orders tab.
↑ Back to topOnly orders in your “ready for delivery” status appear. Check the order’s status, or change the Ready for delivery status setting.
I don’t see the cash reconciliation page.
↑ Back to topTurn on Enable cash reconciliation in WooCommerce > Settings > Delivery Driver. The page appears under the WooCommerce menu.
Can a driver see other drivers’ orders?
↑ Back to topNo. Drivers see only the orders assigned to them. If a driver opens the WordPress admin, they are taken to their own My Deliveries page.
What happens to delivery data if I deactivate the extension?
↑ Back to topNothing is deleted. Delivery data is removed only if you turn on Delete all data on uninstall and then delete the plugin.
Questions and support
↑ Back to topNeed help? Open a ticket from WooCommerce.com > My Account > Support. Support is included with your active subscription.