Shipment Status Reference
Shipment Status Reference
This reference describes all shipment statuses used in the OOH platform. Statuses are emitted in real time as parcels move through the locker lifecycle. Subscribe to status webhooks to track parcel progress and drive your downstream systems accordingly.
Statuses marked [FINAL] are terminal — no further transitions will occur once a shipment reaches these states.
1. Booking
These statuses represent the booking request and validation lifecycle, from submission through acceptance or rejection.
BOOKING_REQUESTED
The carrier has submitted a booking request. The platform has received it and processing has begun. This is the initial status for every new shipment.
BOOKING_PRE_CHECK
The carrier submitted a pre-check probe rather than a full booking request. The platform evaluated locker eligibility but no compartment was reserved and no booking was created. This status exists only to record the probe — it does not initiate a shipment lifecycle. To proceed, a full booking request must be submitted separately.
BOOKING_PARCEL_DIMENSIONS_UNKNOWN
The booking request was received but parcel dimensions could not be validated — typically because dimension data was missing or could not be resolved at request time. A compartment may not be assigned until dimensions are confirmed.
Important: Dimensions must be submitted in millimetres. Submitting values in centimetres will cause the parcel to appear ~10× smaller than its actual size. The booking may pass eligibility checks but then fail physically at the locker.
BOOKING_PARCEL_DIMENSIONS_OK
Parcel dimensions have been validated and a suitable compartment size has been identified.
BOOKING_CREATED
The booking was accepted and is now active. For hard-reservation lockers, a compartment is reserved immediately. For soft-reservation lockers, compartment assignment happens at the time of deposit. Access codes have been generated and are available for the courier and/or consignee.
BOOKING_CANCELLATION_FAILED
A cancellation request was submitted but could not be completed — for example, because the locker provider rejected it due to a missing compartment reference or a provider-side error. The booking remains active. Retry the cancellation. If failures persist, contact platform support.
BOOKING_CANCELLED ✦ FINAL
The booking was successfully cancelled. Any reserved compartment has been released. No further operations are possible on this shipment.
BOOKING_EXPIRED ✦ FINAL
The booking was never acted upon within the allowed window and has expired automatically. The compartment has been released. This typically occurs when the courier never attempted delivery and no explicit cancellation was made.
2. Booking Rejections
The booking request was evaluated and rejected. All rejection statuses are terminal — the booking was not created. A new booking request must be submitted after resolving the underlying cause.
BOOKING_REJECTED_DIMENSIONS_EXCEED ✦ FINAL
The parcel dimensions exceed the maximum compartment size available at this locker. No compartment can accommodate this parcel. Verify the dimensions are in millimetres, and either correct and resubmit or reroute to a different locker.
BOOKING_REJECTED_INVALID_CONSIGNEE ✦ FINAL
The consignee data in the booking request is missing or invalid. Verify that all required consignee fields (name, contact details) are correctly populated and resubmit.
BOOKING_REJECTED_INVALID_LOCKER ✦ FINAL
The requested locker is not valid — it may not exist on the platform, may have been deactivated, or may not be configured for use by this carrier. Verify the locker ID and your carrier configuration before resubmitting.
BOOKING_REJECTED_LOCKER_IS_FULL ✦ FINAL
[10:06 AM]All compartments at the locker are currently occupied. No capacity is available for new bookings. Try a different locker, or retry this one later once capacity is freed.
BOOKING_REJECTED_LOCKER_UNAVAILABLE ✦ FINAL
The locker exists and may have free compartments, but is not currently accepting bookings — for example, it has not been activated for this carrier, is temporarily offline, or has been suspended. This is distinct from the locker being full. Check the locker's activation status in your carrier portal.
BOOKING_REJECTED_NO_ACCESSIBLE_COMPARTMENT ✦ FINAL
No compartment meeting accessibility requirements is available at this locker. This applies when the booking includes constraints such as maximum height or reach requirements for the consignee.
BOOKING_REJECTED_NO_FREE_FITTING_COMPARTMENT ✦ FINAL
The locker has general capacity, but no compartment of a suitable size for this parcel's dimensions is currently free. Note that smaller or larger compartments may be available — this rejection is size-specific, not a full-capacity state. Verify dimensions are submitted in millimetres and accurately reflect the parcel. Retry later when an appropriately sized compartment becomes available.
BOOKING_REJECTED_PROVIDER_ERROR ✦ FINAL
The booking was rejected due to an error on the locker provider's side (e.g. provider API unavailable, circuit breaker open after repeated failures). This is a transient condition — the platform processed the request correctly. Retry after a short delay. If rejections continue, the provider may be experiencing an outage.
3. Delivery to Locker
These statuses cover the phase where a courier deposits a parcel into the locker (last-mile), or a consignee drops off a return parcel (first-mile).
COURIER_DELIVERY_LABEL_SCANNED
The courier scanned the parcel label at the locker touchscreen. This does not confirm that the parcel was deposited. A deposit is confirmed only upon receipt of COURIER_DELIVERED. If the process is interrupted after the label scan — for example due to a locker error or the courier abandoning the session — the booking may eventually expire without a successful deposit.
COURIER_DELIVERED
The courier successfully deposited the parcel in the locker. The compartment is now occupied and secured. For last-mile shipments, the consignee has been notified and their collection code is now active. The parcel is awaiting consignee collection.
COURIER_DELIVERY_EXPIRED ✦ FINAL
The courier did not deposit the parcel within the allowed delivery window. The booking has expired without a deposit and the compartment has been released.
CONSIGNEE_DELIVERED
(First-mile shipments only) The consignee has deposited a return parcel in the locker. The parcel is now awaiting courier collection.
CONSIGNEE_DELIVERY_EXPIRED ✦ FINAL
(First-mile shipments only) The consignee did not deposit the parcel within the allowed drop-off window. The booking has expired.
DELIVERY_COMPARTMENT_BROKEN
The compartment assigned to this shipment was found to be broken or malfunctioning during the delivery attempt. The courier was unable to deposit the parcel. Escalate to the locker provider for hardware inspection and repair. A new booking may be required.
DELIVERY_COMPARTMENT_OCCUPIED
The compartment assigned to this booking was unexpectedly found to be already occupied when the courier attempted delivery. The deposit could not proceed. Escalate to the locker provider to investigate the compartment state.
DELIVERY_NOT_POSSIBLE
The delivery could not be completed for a reason not covered by a more specific status (e.g. general locker error, door failure during deposit). Check provider-side logs. A new booking may be required once the issue is resolved.
DELIVERY_PARCEL_TOO_BIG
[10:06 AM]The parcel does not physically fit in the assigned compartment at the time of deposit — confirmed by the locker's volume scanner or courier report. This can occur when dimensions were submitted in centimetres rather than millimetres (causing the parcel to pass eligibility but fail at the locker), or when the actual parcel size differs from the declared dimensions. Verify the declared dimensions are accurate and in millimetres before resubmitting.
4. Collection from Locker
These statuses cover the phase where a parcel is collected — by the consignee (last-mile), or by a courier (first-mile, or last-mile retrieval after the consignee window has closed).
CONSIGNEE_COLLECTED ✦ FINAL
The consignee successfully collected the parcel from the locker using their access code. The compartment has been released. Shipment complete.
CONSIGNEE_COLLECTION_EXPIRED
The consignee did not collect the parcel within the allowed collection window. The parcel remains physically in the locker but the consignee's access code is no longer valid. This is not a final state — a courier must now retrieve the parcel, after which the shipment will transition to COURIER_COLLECTED_EXPIRED.
COURIER_COLLECTED ✦ FINAL
(First-mile shipments) The courier successfully collected the return parcel deposited by the consignee. The compartment has been released. Shipment complete.
COURIER_COLLECTED_EXPIRED ✦ FINAL
The consignee did not collect within the collection window, and a courier has since retrieved the parcel from the locker. This is the terminal state for last-mile shipments that exceeded the consignee collection window.
COURIER_COLLECTION_LABEL_SCANNED
The courier scanned the label at the locker as part of the collection process. This does not confirm the parcel has been physically removed. Collection is confirmed only upon receipt of COURIER_COLLECTED or COURIER_COLLECTED_EXPIRED.
COURIER_COLLECTION_LABEL_NOT_AVAILABLE
The courier attempted to initiate collection but the required label or access information could not be retrieved at the time of the attempt. This may indicate a data synchronisation issue. Contact platform support with the shipment reference and the timestamp of the attempt.
COLLECTION_COMPARTMENT_BROKEN
The compartment containing the parcel has been reported as broken or malfunctioning during the active collection window. The consignee (or courier) cannot open the door. Escalate immediately to the locker provider for hardware repair.
Note: The access code remains valid. Once the hardware fault is resolved, collection can proceed using the original code — no new booking is required.
COLLECTION_NOT_POSSIBLE
Collection could not be completed for a reason not covered by a more specific status (e.g. general locker error or access system failure during collection attempt). Escalate to the locker provider with the compartment reference and the time of the failed attempt.
COLLECTION_PARCEL_NOT_AVAILABLE
The parcel is not available for collection — it may have already been collected, removed, or the locker's internal state is inconsistent with the platform record. Escalate to the locker provider with the compartment reference and access log for investigation.
Updated about 2 months ago
