Delivery Routes Built
A delivery route — also called a beat — is a warehouse-owned, scheduled path made of an ordered list of pincode stops, walked by hand-delivery staff. It answers the gap noted in earlier warehouse feedback: "Routes are not defined."
What a delivery route is
Where a Delivery Carrier is who moves goods and a Region/Pincode is where a customer sits, a delivery route is the missing piece in between for hand delivery: the specific, named, repeatable beat a warehouse's own staff walk or ride — Monday's beat, Wednesday's beat, and so on — and the ordered sequence of pincodes it passes through. Every route belongs to exactly one warehouse, the source that owns and runs the beat; it can optionally be tied to a delivery carrier if an outside agent runs it instead of warehouse staff.
Where to find it & who can see it
Open Despatch › Delivery Routes in the left navigation. The list is visible to anyone holding delivery_route.view (or a super administrator). Creating, editing and deleting a route — and adding, editing, deleting or reordering its stops — all need the broader delivery_route.manage permission instead; there is no separate permission for the stops themselves.
Creating / editing a route
Select New delivery route from the list, or row Edit on an existing one. A single "Route Details" section covers everything:
| Field | Type | Required | Notes |
|---|---|---|---|
| Warehouse | Select (searchable) | Yes | The source warehouse that owns this route — see Warehouses. |
| Carrier | Select (searchable) | No | Optional. Any delivery carrier that runs this beat on the warehouse's behalf, where one is used instead of in-house staff. |
| Name | Text | Yes | Max 255. |
| Code | Text | Yes | Max 50, unique across all routes. |
| Days of week | Checkboxes | No | Which weekdays the beat runs — Monday through Sunday, laid out four to a row. Any combination, including none. |
| Priority | Number | No | Defaults 0. When a pincode is on more than one active route, the lowest priority wins (ties fall back to the route code) — this is which beat a shared pincode's despatch groups under. |
| Active | Toggle | No | Defaults on. |
| Notes | Textarea | No | Free text, full width. |
Actions on the list are the standard Edit and Delete — plain CRUD, both gated by delivery_route.manage.
The list
| Column | Shows |
|---|---|
code | Shown as a badge. Searchable, sortable. |
name | Route name. Searchable. |
| Warehouse | warehouse.name — the owning warehouse. |
| Carrier | carrier.name, or a dash when the route has none. |
| Stops | A live badge count of the route's pincode stops. |
| Active | is_active as a boolean icon. |
Filters: Warehouse (drop-down) and Active Status (yes/no/either). The search box matches code and name.
Stops — the ordered pincodes
Open a route's edit page and switch to the Stops tab to see and manage the pincodes the beat visits, in the order it visits them.
| Column | Shows |
|---|---|
| Order | sequence — the stop's position along the route. |
| Pincode | pincode.pincode. |
| Area | pincode.office_name, or a dash if not set. |
| Stop name | An optional label for the stop, or a dash. |
- Select Add stop (needs delivery_route.manage)
Pick a Pincode from a searchable, preloaded select, and optionally give the stop a name and notes.
- A pincode can only appear once on a given route
Try to add the same pincode twice on one route and the form refuses it with a validation message right there on the field — enforced by a database-level unique constraint on (route, pincode), not just a UI check. The same pincode can, however, belong to several different routes — there is nothing stopping the same area appearing on two different warehouses' beats, or on two beats from the same warehouse.
- Drag rows to reorder
The Stops table is reorderable — drag a row up or down to change its position along the beat. The table's default sort is by
sequence, so the order you see is the order the beat is walked. - Edit or delete a stop
Row Edit and Delete, both gated by delivery_route.manage, work exactly as elsewhere in the console.
Grouping hand-delivery despatch by route Built
Routes now drive despatch. When the nightly auto-wave scheduler groups reserved deliveries into picking waves, hand-delivery deliveries are additionally split by the route that covers their destination pincode — so a beat becomes its own wave(s) and despatch staff can work a route as a batch. The route is resolved from the delivery's warehouse and the shipping address's pincode against the route's stops.
- Only hand-delivery is grouped this way. Courier, post and transport despatch is grouped exactly as before (route has no effect).
- Shared pincodes use the Priority field above — the lowest-priority covering route wins.
- Uncovered pincodes still despatch — a hand-delivery delivery whose pincode is on no route is still waved as usual, just not tied to a beat (no delivery is ever held up for a missing route).
- Each wave records the beat it serves — a Route column now appears on Picking Waves.
Related pages
See Warehouses for the warehouse each route belongs to and the Delivery Carrier master list a route may optionally use; Zones, Regions & Pincodes for the pincodes a route's stops are drawn from; and Packages for how hand-delivery despatch is packed today, ahead of route-based grouping.