By Supaorder Team — who we are
How Automatic Load Assignment Works
What dispatch software means by load assignment, why nearest-driver is the wrong rule, and what changes when you have four drivers instead of four hundred.
Load assignment is the decision a dispatch system makes when an order is ready and more than one driver could take it. Automatic load assignment is that decision made by software rather than by a person with a headset.
The phrase comes from freight, where a “load” is a shipment and assignment is a genuinely hard optimisation problem. In restaurant delivery it means something smaller and more tractable: given this order and these available riders, who gets offered it, in what order, and what happens when nobody accepts.
This is written for a restaurant deciding whether it needs any of this. If you are building a marketplace and want the scoring mechanics — the actual weights and how to tune them — our sister platform’s post on how auto-dispatch scores a driver is the deeper one.
The rule everybody assumes, and why it is wrong
Ask anyone how dispatch should work and you get “send it to the nearest driver”. It is the obvious answer and it fails in three ordinary situations.
The nearest driver is already carrying two orders. Proximity says give them a third; the customer on the first order disagrees. Distance without load is how one rider ends up with a stacked run and everybody else idles.
The nearest driver is on a bicycle and the drop is six kilometres uphill. Vehicle capability is not distance.
The nearest driver just declined two offers. They are technically available and functionally not — on a break, finishing a personal errand, about to log off. A system that keeps offering to them adds a timeout to every order.
So every real dispatch system scores rather than sorts. Distance is the largest input and it is not the only one.
What the software is actually deciding
Four decisions, in this order.
Who is even eligible. Availability, whether they are on shift, whether their vehicle suits the drop, and whether they are already at their concurrent-order limit. This is a filter, not a score — an ineligible rider is not a low-scoring rider, they are absent.
Who is best. Among the eligible, a score combining distance to pickup, how many jobs they are already carrying, and vehicle type.
How long to wait. The offer goes to the best-scoring rider with a countdown. If they do not accept, it moves on. That timeout is the single most consequential setting in the whole system and almost nobody tunes it — too short and you burn through your roster on every order, too long and a declined order sits for two minutes before anyone else sees it.
What to do when the list runs out. Either it holds and re-offers, or it escalates to a human, or it goes out to a courier network. Knowing which of those your system does — before a Friday night when it happens — is worth more than any amount of tuning.
What changes at restaurant scale
Most writing about dispatch assumes a marketplace with hundreds of riders across a city. A restaurant with four drivers is a different problem, and the differences run the other way from what people expect.
Scoring matters less. With four riders and one order, the choice is nearly always obvious. The value of automatic assignment at this scale is not that it picks better than a human — it is that it picks at all, instantly, at 7pm, without someone stopping what they are doing.
Timeouts matter more. With four hundred riders a declined offer costs you nothing. With four, cycling through all of them takes four timeouts, and if your timeout is ninety seconds that is six minutes with food going cold.
The overflow route matters most. A marketplace always has another rider. You do not. What happens when all four are out is the question that actually determines whether your Friday works, and the answer is either “the order waits” or “it goes to a courier network” — you should pick deliberately rather than discover it.
The setting most restaurants get wrong
Concurrent order limits.
The instinct is to let a rider carry three or four, because it looks efficient on paper and the delivery fee per trip goes further. What it does in practice is convert your fastest deliveries into your slowest ones: the third order on a run is delivered after two other stops, and the customer waiting for it does not know they were third.
The workable rule for most restaurants is two, raised to three only when the drops are genuinely on the same road. It is a setting worth revisiting seasonally rather than once.
Manual is a legitimate answer
Plenty of restaurants should not turn this on, and vendors rarely say so.
If you run one or two drivers, automatic assignment is deciding between very few options and a dispatcher with a screen does it as well. Turn it on when a person is making the same obvious decision forty times a night and resenting it.
If your delivery area is small and uniform, distance barely differentiates and scoring adds nothing. The value shows up when the geography is uneven.
And if you have never watched your own dispatch, start manual for a fortnight regardless. You will learn what your real delivery times are, which is the input every setting above depends on. Restaurants that turn scoring on before they know their own numbers end up tuning against a guess.
What to check before you rely on it
Four questions, whoever you buy from:
- What happens when nobody accepts? Hold, escalate, or hand out. Get a specific answer.
- Can a dispatcher override any assignment, at any point? The answer should be yes and it should not require a support ticket.
- Is the concurrent-order limit per driver or global? Per driver is what you want.
- Does the customer see the same tracking whether it is your rider or a courier? If handing an order out downgrades the customer’s experience, the overflow route is not really available to you.
On Supaorder, dispatch runs manual, automatic, or handed out to a courier network per order, and the mechanics are documented at auto-dispatch in the docs. The courier networks it can hand an order to are named on the integrations page — if one is not on that list, it is not connected.