For a delivery business, the route is basically the business. It determines how many stops a driver can realistically make in a shift, how much fuel and vehicle wear each day costs, and whether the ETA a customer was given is something that can actually be kept. Get the routing right, and a lot of other problems quietly get smaller and go away. Get it wrong, and no amount of hard work from the team can fully make up for it.
For a long time, route optimization meant a dispatcher planning routes once in the morning and hoping the day went roughly to plan. The problem is that just like everything in life, delivery days rarely go according to plan. New orders show up after the routes are already set, traffic shifts, road conditions change, drivers run early or late. A route built at 9 a.m. is often a poor fit for the city by 11.
This is the gap a real-time, AI-powered route optimization system like Onro is built to close. Rather than locking in a route at 9 a.m. and hoping it holds, Onro not only offers the shortest path, but it continuously monitors live conditions including traffic, weather, distance and start/end points, service times and stops, vehicle and load capacity, and more, then re-optimizes routes on the fly to get the best optimal result throughout the day. The payoff of this approach is well documented at scale: UPS’s ORION dynamic routing system cuts an estimated 100 million miles driven and 10 million gallons of fuel every year once fully deployed, worth roughly $300–400 million in annual savings.
What Is Pickup and Delivery (P-Hub-D) Route Planning
P-Hub-D, short for Pickup and Delivery, is one of those logistics models that sounds more complicated than it actually is. The basic idea is that rather than treating every order as a one-off job from point A to point B, orders get grouped together and run through a structured route that often loops through a central hub or warehouse along the way, a setup closely related to what’s known as 4PL logistics.
A typical P-Hub-D flow operation looks something like this:
Drivers get assigned to a pickup route, stopping at multiple locations to collect packages and then dropping them off at the hub (warehouse), where it gets sorted and consolidated. Then it gets handed off to a separate delivery route (sometimes a different driver entirely) for the final delivery to customers.
This setup tends to show up wherever order volume is high enough that handling things one at a time just doesn’t make sense anymore, like in courier services, e-commerce, food distribution, retail delivery, laundry pickup and drop-off, that kind of thing.
Group enough stops into a single well-planned route, and the payoff is pretty straightforward: less fuel burned, drivers getting more done per shift, and more deliveries completed without adding more vehicles.
But where it gets tricky is everything that has to be juggled at once. Some stops matter more than others. Delivery windows don’t move. Drivers only have so much capacity and so many hours. And traffic doesn’t care about any of it. Without a system built to handle all of that together, P-Hub-D routes can get messy fast, and “messy” here usually means wasted time, missed windows, and a dispatcher scrambling to patch things up as the day goes on.
How Onro Handles Pickup and Delivery Orders
In Onro, P&D orders move through two main stages: Pickup Stage and Delivery Stage.
Pickup Stage
- It starts when the orders come in, whether that’s through the customer app, an API integration, a CSV import, Shopify, Woocommerce, or other sources.
- From there, a dispatcher plans a pickup route, assigns the orders to that route, and the status of those orders changes to Pickup Routed. The orders have been assigned to a route, but no driver yet. Once the dispatcher assigns the route to a driver, their status updates to Ready for Pickup and shows up on the driver’s app.
- As the driver makes their way down the route to collect the packages, they scan each package’s barcode at every stop, or log it manually if scanning isn’t possible, and a successful scan moves that order to Picked Up. If a pickup doesn’t go smoothly at any given stop, say no one’s home or the address is wrong, the driver marks that order as Pickup Failed and logs a reason, while the rest of the route just continues. A dispatcher can then decide whether that order gets reattempted or sent back to the sender.
- Once orders are picked up, the driver drops them off at the warehouse, and that’s where the Delivery Stage takes over.
Delivery Stage
- The Delivery Stage kicks in the moment orders get an inbound scan at the warehouse by operators using the onro’s scanner app, which flips their status from the Pickup stage to the Delivery stage and updates their status to At Warehouse.
- From there, what happens next depends on how the customer’s operation is structured. Some operations move packages between multiple warehouses before they’re ready to go out. When that happens, orders get marked Ready for Transit while it’s being prepped to leave, switch to In Transit once it’s on the road, and go back to At Warehouse again once it’s scanned in at the new warehouse. For single-warehouse operations, this step gets skipped entirely.
- Once orders are sorted and ready to go out, a dispatcher plans a delivery route and groups the orders by assigning them into that route, which updates the orders’ statuses to Delivery Routed, meaning it has a route assigned but no driver yet. When a driver gets assigned to that route, every order on it updates to Ready for Delivery.
- When the driver shows up at the warehouse to start the route, they scan each package as they load it onto the vehicle (or bulk load them), and every scanned order shifts the status of order to Out for Delivery.
- From there, each order lands in one of a few final states. Most get marked Delivered once they reach the recipient. If an attempt fails, the driver logs a reason, and the order goes to Not Delivered, after which it either gets reattempted or sent back to the sender, in which case it moves to For Return and finally Returned once it’s back in the sender’s hands.
Route Planning in Hub-Based Courier Operations
They say failing to plan is planning to fail, and it’s especially true in logistics.
Route planning in Onro follows a structured, step-by-step flow that takes dispatchers from a selection of orders all the way through to confirmed, driver-assigned routes. Here’s how it works.
Selecting Orders
Everything starts with order selection. From either the list view or the map, dispatchers pick the orders they want to include in the plan, and from the top menu, they select the Plan Route option. The route planning form shows a running count of what’s selected so nothing gets missed, and any orders already sitting on an active route get automatically excluded from the selection (the system won’t let you double-assign).
Adding Drivers
Once orders are selected, driver assignment is next. This part matters more than it might seem, because the number of routes the system generates will match exactly the number of drivers added, so if you add three drivers, you get three routes.
Configure the Settings
This is where the plan takes shape: by filling in a few fields and selecting some options, you specify how the route should be created.
Auto Name Prefix: Provide a prefix for the route name, which is the naming convention the system uses to label every generated route automatically.
Max Stops Per Route: It puts a ceiling on how many stops any single driver can get. Useful for keeping workloads realistic and making sure no one ends up with an unrunnable day.
Start Date and Time: It sets when the routes kick off. Whatever’s entered here applies to all routes in the plan, so all drivers in the same batch share the same start time.
Load Deliveries: This setting defines whether the driver should scan the packages when starting the route to load them or not, or if it is forced or not.
Optimization Method: This setting determines how the system decides to sequence stops across all generated routes. There are two options: Shortest Path, which minimizes total travel distance, and On-Time Arrival, which prioritizes getting drivers to their stops within the required delivery windows. The right choice depends on what matters more for a given plan, covering less ground or hitting specific time commitments.
Start Location: Type the address and select the correct option from the results. It’s required as it’s the point the optimization engine uses as the starting position for every driver in the plan.
End Location: Type the address and select the correct option from the results. It’s optional, so set this if drivers need to finish their routes at a specific place, like returning to a hub or depot at the end of a shift.
Target Statuses: It tells the plan which orders are actually eligible to be routed. For pickup routes, that’s orders sitting at Ready for Pickup status. For delivery routes, it’s orders with Ready for Delivery or OutForDelivery statuses. This keeps the plan clean and makes sure only orders that are genuinely ready to move get pulled in.
Running the Plan
Once everything’s set, the dispatcher hits the Start Plan button. The system runs the optimization in the background and redirects to the plan details page while it works. When it’s done, the results come back as a list of proposed routes, each one showing the assigned driver, the number of stops, the total distance, and the estimated duration.
If the engine couldn’t fit some orders into any of the generated routes, those get flagged right here — something like “8 orders couldn’t be planned” — with a list the dispatcher can pull up and deal with separately.
Confirming or Rejecting
The last step is a simple call: confirm or reject. If the plan looks good, confirming it assigns all the routes to their drivers immediately, sets each route to Assigned status, and pushes them straight to the driver app. If something’s off, the dispatcher rejects it and goes back to tweak the settings or the order selection before running it again.
