Everything on this page lives at WooCommerce → Delivery Manager → Zones & Assignment and requires Delivery Manager Pro.
Delivery zones
A zone is a named area plus the drivers who cover it. Zones are what make automatic assignment sensible — without them, every on-duty driver is a candidate for every order.
Creating a zone
| Field | Notes |
|---|---|
| Name | Whatever you call the area — “City centre”, “North side”, “Suburbs”. |
| Match by | Postcode, City, State, Country, or WooCommerce shipping zone. |
| Values | One per line, or comma-separated. |
| Delivery persons | Tick everyone who covers this zone. |
| Priority | Lower numbers are matched first. Use it to put specific zones ahead of catch-alls. |
| Active | Untick to park a zone without deleting it. |
Match value formats
- Postcode — exact values, wildcards (
12*matches everything starting with 12) and numeric ranges (1000-1999). - City — city names as they appear in the order address.
- State / Country — use the codes, e.g.
CA,US. - WooCommerce shipping zone — the numeric shipping zone IDs, listed for you on the settings screen. Use this to reuse the geography you’ve already configured in WooCommerce.
An order is matched against the customer’s shipping address (falling back to billing). Zones are checked in priority order, and the first match wins.
Automatic assignment
| Setting | Options |
|---|---|
| Mode | Manual only (default — nothing is assigned automatically), Round robin (each eligible driver in turn), or Least loaded (the driver with the fewest active deliveries). |
| Assign when the order becomes | The WooCommerce order status that triggers assignment. Processing by default. |
| If no zone matches, consider all delivery persons | On by default; turn it off to require a zone match. |
| Email the customer when the delivery person changes | On by default. |
How a driver is chosen
- Match the order’s address to a zone. If one matches, only that zone’s drivers are candidates; otherwise, all delivery persons are candidates (or none, if the fallback is off).
- Drop anyone who no longer holds the Delivery Person role, and anyone off duty.
- Drop anyone whose max active deliveries capacity is already reached.
0means unlimited. - Pick from what’s left using the mode — round robin remembers who went last, least loaded counts each candidate’s pending and active deliveries.
If nothing is left, the order stays unassigned and an order note records why: “Auto-assignment skipped: no available delivery person (check zones, on-duty status and capacity).” Pick it up manually from the dispatch board.
On-duty and capacity
Both live on the driver’s user profile, and the on-duty toggle is also on their My Account dashboard so they can flip it themselves at the start and end of a shift. See Delivery Persons.
Assigning on demand
Automatic assignment isn’t all-or-nothing. Even in Manual only mode you can trigger it per order:
- ⚡ Auto-assign on a dispatch-board card, for one order;
- Auto-assign all at the top of the Unassigned lane, for the whole backlog.
Zone reporting
WooCommerce → Delivery Reports includes a zone breakdown — deliveries completed and on-time percentage per zone — so you can see which areas are slipping. See Delivery Reports.
Related
- Assigning Deliveries
- Delivery Persons
- Developer Reference —
dmanp_auto_assign_candidates,dmanp_auto_assign_candidate,dmanp_matched_zone