Delivery statuses
A delivery's status tells you where it is. Every change fires a delivery.status_changed webhook with the previous_status, and is added to the delivery's events.
Statuses
| Status | Meaning |
|---|---|
requires_action | Can't move until you do something. See required_actions in Drafts and required actions. |
scheduled | Booked and charged (or added to your invoice); waiting for its pickup time and a rider. |
rider_assigned | A rider has been given the pickup. |
picked_up | Collected from the pickup address. |
at_hub | At a Reeds hub (via-hub deliveries only). |
in_transit | Moving between hubs on an inter-state delivery. Inter-state delivery is not available through the API, so the API doesn't return this status. |
out_for_delivery | With the rider, heading to the receiver. |
delivered | Delivered. Final. |
failed_attempt | The rider couldn't deliver. Reeds will retry or contact you. |
on_hold | Paused by Reeds. hold_reason says why. |
cancelled | Cancelled. Final. See Cancellations. |
Typical paths
| Path | Statuses |
|---|---|
| Direct (under 7 km) | scheduled → rider_assigned → picked_up → out_for_delivery → delivered |
| Via hub | scheduled → rider_assigned → picked_up → at_hub → out_for_delivery → delivered |
| Draft | requires_action → scheduled → then as above |
The route type is on the delivery as route.type. See Quotes.
The ready field and the /ready endpoint only mean that the item is packed. Once a rider is on the pickup, the delivery is rider_assigned.
failed_attempt and on_hold
failed_attempt means the rider reached the receiver but couldn't hand over the parcel. The delivery isn't over: Reeds retries or contacts you, and the status moves on again.
on_hold means Reeds paused the delivery. Read hold_reason for why, and expect a later status change when it resumes.
Tracking links
Every booked delivery has a tracking_code and a tracking_url, for example https://getreeds.co/packages/HQ3W5F2. The receiver gets an SMS with that link, and you can put it in your own order emails. A draft has neither until it is booked.
Handle statuses you don't know
Reeds may add statuses later. Treat the list above as today's list, not a closed one. Map statuses you know, and fall back to a sensible default (usually "in progress") for any other value, rather than throwing an error. For a worked mapping, see Status mapping.
Next steps
- Webhook events
- Delivery promise
- Sandbox, to simulate each status