container.status.updated
Overview
Fired when a container transitions to a new milestone status. This is the most commonly used webhook event and represents significant lifecycle transitions such as vessel departure, arrival, discharge, availability, delivery, and empty return.
When This Event Fires
A new milestone has been recorded in the container's history, causing the top-level status field to change. Milestones represent major lifecycle transitions — for example, moving from LOADED to VESSEL_DEPARTED, or from DISCHARGED to AVAILABLE.
This event only fires for milestone transitions. Minor history updates (e.g. a backfilled date correction) that do not change the current status will firecontainer.history.updatedinstead.
Milestones that trigger this event
The following statuses are considered milestones. A transition to any of these will fire the event:
Full milestone list
Pre-ocean:
DISCOVERING · DISCOVERED · NOT_FOUND · EMPTY_OUTGATED · FULL_INGATED_AT_ORIGIN_RAIL_FACILITY · LOADED_ON_RAIL_AT_ORIGIN · DEPARTED_ON_RAIL_FROM_ORIGIN · ARRIVED_AT_ORIGIN_PORT_RAIL_FACILITY · UNLOADED_FROM_RAIL_AT_ORIGIN_PORT · FULL_INGATED
Barge at origin:
LOADED_ON_BARGE_AT_ORIGIN · BARGE_DEPARTED_FROM_ORIGIN · BARGE_BERTHED_AT_ORIGIN_PORT · DISCHARGED_FROM_BARGE_AT_ORIGIN_PORT
Ocean:
LOADED · VESSEL_DEPARTED · VESSEL_ARRIVED_AT_TRANSSHIPMENT_PORT · VESSEL_BERTHED_AT_TRANSSHIPMENT_PORT · DISCHARGED_AT_TRANSSHIPMENT_PORT · LOADED_AT_TRANSSHIPMENT_PORT · VESSEL_DEPARTED_FROM_TRANSSHIPMENT_PORT · VESSEL_ARRIVED · VESSEL_BERTHED · DISCHARGED
Barge at destination:
LOADED_ON_BARGE_AT_DESTINATION_PORT · BARGE_DEPARTED_FROM_DESTINATION_PORT · BARGE_BERTHED_AT_DESTINATION · DISCHARGED_FROM_BARGE_AT_DESTINATION
Port & inland:
AVAILABLE · FULL_OUTGATED · FULL_INGATED_TO_RAIL_FACILITY · LOADED_ON_RAIL · DEPARTED_ON_RAIL · ARRIVED_AT_RAIL_FACILITY · UNLOADED_FROM_RAIL · AVAILABLE_AT_RAIL_FACILITY · FULL_OUTGATED_FROM_RAIL_FACILITY · FULL_INGATED_TO_OFFDOCK_FACILITY · AVAILABLE_AT_OFFDOCK_FACILITY · FULL_OUTGATED_FROM_OFFDOCK_FACILITY · FULL_DROPPED_OFF_AT_TRUCKER_YARD · FULL_PICKED_UP_FROM_TRUCKER_YARD
Delivery & return:
DELIVERED · EMPTY_READY_FOR_PICKUP · EMPTY_PICKED_UP_FOR_RETURN · EMPTY_DROPPED_OFF_AT_TRUCKER_YARD · EMPTY_PICKED_UP_FROM_TRUCKER_YARD · EMPTY_RETURNED
Payload Structure
{
"event": "container.status.updated",
"data": { /* IContainerVoyageResponse — full container snapshot */ },
"changes": {
"status": {
"previous": "DISCHARGED",
"current": "AVAILABLE"
}
},
"deliveryAttempt": 1,
"pendingRetries": 4,
"sentAt": "2025-07-19T17:00:00.654Z"
}data object
data objectThe data property contains the full current state of the container, identical to the response from GET /v1/container/:containerId. Key fields include:
| Field | Description |
|---|---|
containerId | Container number (e.g. MSCU1234567) |
scacCode | Carrier SCAC code |
status | Current milestone status |
etaAtTerminal | ETA at destination terminal |
lastFreeDay | Port last free day |
vessel | Current vessel object (name, imo, mmsi) |
originPort | Origin port location |
destinationPort | Destination port location |
history | Array of milestone events with timestamps and locations |
holds | Array of active and resolved holds |
account | Account domain and region |
changes object
changes objectFor this event, changes always contains the status field with previous and current values.
Common Use Cases
| Use Case | How to Implement |
|---|---|
| Container becomes available | Filter for changes.status.current = AVAILABLE or AVAILABLE_AT_RAIL_FACILITY |
| Container is outgated | Filter for changes.status.current matching any outgate status (FULL_OUTGATED, FULL_OUTGATED_FROM_RAIL_FACILITY, etc.) |
| Container delivered | Filter for changes.status.current = DELIVERED |
| Empty returned | Filter for changes.status.current = EMPTY_RETURNED |
| Vessel departed | Filter for changes.status.current = VESSEL_DEPARTED |
| Vessel arrived | Filter for changes.status.current = VESSEL_ARRIVED |
| Discharged | Filter for changes.status.current = DISCHARGED |
| Update TMS/ERP system | Push the latest status and associated dates to your transportation or ERP system on every milestone change |
| Customer notification | Send email/SMS alerts to consignees when key milestones occur (arrival, availability, delivery) |
Workflow Shortcuts
- "When container becomes available" →
container.status.updatedwherestatus=AVAILABLE - "When container is outgated" →
container.status.updatedwherestatusmatches outgate statuses - "When the status changes" →
container.status.updated(no additional filter)
Updated about 4 hours ago
