Just-in-Time (JIT) Orders
Background
Standard orders are released as soon as they’re placed, giving partners ~20 minutes to finish picking before the order auto-rejects. At busy sites, that window is often too tight, so orders get rejected before pickers can complete them.
JIT improves this by dispatching riders earlier, while picking is still in progress, using a prep-time model to align rider arrival with expected completion. This helps pickers prioritise the order and increases the auto-rejection timeout to ~50 minutes, giving enough time to finish picking.
How the JIT order flow works
JIT temporarily holds an order after it’s placed, then calculates the best time to release it based on the given site’s picking speed, order complexity, and rider availability. Once it’s released, a rider is assigned straight away while picking is still ongoing, and the partners should be receiving live updates through the rider events webhook as the riders head to the site.
If a rider arrives and collects the order before the picker marks it as complete, Deliveroo will auto-complete the order on the partner's behalf (with the assumption that all the items on the order is prepared accounting for the active amendments).
Key integration requirements
To support JIT, Picking API partners must implement
- Picker experience updates to reflect deadlines and live rider status
- JIT system signal handling for early rider dispatch
- Rider events webhook integration to track assignment and arrival
Picker experience updates
The picker experience for JIT is designed to ensure pickers remain aligned with rider arrival times rather than system-driven rejection timers.
Functional prerequisites
Before enabling JIT on a site, the following foundational capabilities must be in place:
- Visibility latency: 99.9% of orders must appear on the in-store device within 30 seconds of webhook receipt
- Audible alerting: Device must emit audio notification for new orders, stopping automatically once picking begins
- Device availability: In-store devices must remain awake at all times to prevent disruption. This ensure pickers can begin fulfilment immediately which is critical for JIT's early rider dispatch model
Picker interface guidelines
The partner's picker interface must help pickers prioritise orders and manage the picking progress in sync with rider arrivals.
Timers and order prioritisation
The partner's picker interface should display pick completion expectation timers based on the earliest rider's estimated arrival time:
- Before a rider is assigned, use the predicted prep time (the
prepare_forfield) - Once a rider is assigned, switch the countdown timer to the rider's
estimated_arrival_time. This is the live rider ETA that updates in real-time as the rider travels to your site, providing accurate arrival predictions. If multiple riders are assigned to an order, always use the earliest estimated arrival time.
Timers must not be based on the auto-rejection deadline. Under JIT, the auto-rejection deadline is extended and serves only as a fallback mechanism. Orders should be sorted by earliest rider arrival: Overdue/Rider arrived first, then Rider nearby, then Rider en route.
Visual and audible notifications
The partner's picker interface should show real-time countdown (e.g., "Rider arriving in 3 mins") in both dashboard and order headers. Trigger distinct audio and visual alerts when riders arrive. Send recurring overdue notifications (every 3 minutes) if orders remain incomplete after rider arrival.
Edge case handling
If a rider collects an order before it's marked pick-completed, Deliveroo auto-completes it, assuming all items were successfully picked (accounting for those with amendment requests). The partner's picker interface should display a notification to the pickers that the order was collected and auto-completed, and is no longer editable.
Order release
JIT manages order release by synchronising it with rider's estimated arrival. The system uses prep-time and rider-confirmation models to calculate prepare_for (when the order should be ready). If a rider is going to take longer to arrive than the prep time, JIT delays the release, thus ensuring you receive the order at an optimal moment.
What changes: Previously, webhooks were sent immediately when orders were placed. For JIT orders, webhooks are sent only when orders are released.
Auto-rejection timer extension
JIT modifies auto-rejections in two ways:
- First, the timeout extends from ~20 to ~50 minutes to prevent premature rejections during operational challenges.
- Second, the timer starts from the JIT-determined release time (not placement time), providing a fairer deadline since JIT holds the order until optimal dispatch.
What changes: Auto-rejection timeout will be ~50 minutes. This appears in eta.start_picking_by and eta.end_picking_by fields.
Payload changes
rider_assignment_flow— Indicates whether rider assignment isSTANDARDorJUST_IN_TIME. Helps partner systems handle workflow appropriately.prepare_for— Time by which the order should be ready for rider pickup. Predicted by Deliveroo's prep-time model using order details, rider telemetry, and site's typical picking time.eta.start_picking_byandeta.end_picking_by— Auto-rejection timeout boundaries.
For JIT orders, don't use these timers for picker countdown. Use:
prepare_forbefore rider assigned- Earliest rider's ETA once riders assigned
Key differences
| Aspect | Standard | JIT. |
|---|---|---|
| Order release | Immediately when placed | Delayed for optimal timing |
| Rider assignment | After picker completes | During Picking |
| Auto-Rejection timeout | ~20 mins from placed_at | ~50 mins from release_at |
Sample Payload Excerpt
{
"orders": [
{
... other attributes
"status": "placed",
... other attributes
"prepare_for": "2025-11-19T10:32:22",
"eta": [
{
"type": "start_picking_by",
"timestamp": "2025-11-19T10:42:22.944664469Z"
}
],
"rider_assignment_flow": "JUST_IN_TIME"
}
],
... other attributes
}
Rider events webhook integration
Rider events webhook integration is essential to ensure accurate and timely updates on rider status, which directly impacts the picking process and order flow. It enables the partner's system to track when a rider is assigned to an order, the number of riders assigned to a given order, when a rider is expected to arrive, when they actually arrive, and when they collect the order. These signals allow the picker app to display relevant deadlines, send overdue alerts, and automate state transitions—ensuring smooth handoffs even if pickers don't manually update the system. More guidance on this is available at the listening to rider events guide here.
Onboarding and testing
To onboard your testing sites, please contact your Technical Integration Manager and request that the production test sites be added to the necessary configurations, including an extension of their auto-rejection timeouts.
Updated 1 day ago
