OFV Related Event Types
Ocean Freight Visibility (OFV) webhooks are triggered automatically by the platform based on specific events and conditions. These triggers function similarly within the webapp and when notifying your system's backend..
Field types
Complete payload explanation is available here: https://developer.windward.ai/reference/webhook-reference
NEW_SHIPMENT
A new shipment was uploaded to the system (no additional triggers generated per other fields) - Track shipment is created.
If BOL or Booking reference was uploaded, temporary information is created until all data points are verified through external data sources (all container information). After data collection, new shipment information will be created per container.
CARRIER_POL_UPDATE
Carrier has updated the port of load for the shipment
(POL code is not included in the shipment entity structure, therefore a calculation is made on the “legs” or the route)
CARRIER_POD_UPDATE
Carrier has updated the port of discharge for the shipment, providing an additional exception field (“reason of delay”).
(POD code is not included in the shipment entity structure, therefore a calculation is made on the “legs” or the route)
CARRIER_ETD_UPDATE
This field is received from the carrier and examined as is without additional processing.
Carrier has updated the estimated time of departure for the shipment
Carrier Update Variations
This information is extracted from the carrier's data, where a single field indicates a timestamp with a prefix of “E” (representing “estimated” for a planned shipment) or an “A” (representing “actual” time).
During the update of Windward’s fields, this data is being split into 2 different fields, one of them will be set to “null”, according to their meaning (for example ETD vs ATD).
CARRIER_ETA_UPDATE
Carrier has updated the estimated time of arrival to final POD for the shipment
(the difference between the old ETA and the new ETA is calculated in days, and a threshold might be set to avoid webhook triggers for minor changes)
CARRIER_ATD_UPDATE
Received actual time of departure (based on carrier information, if applicable)
CARRIER_ATA_UPDATE
Received actual time of arrival (based on carrier information, if applicable)
CARRIER_ROUTE_UPDATE
This field is received from the carrier and examined as is without additional processing.
Carrier has changed the route for the shipment
The platform is updating the latest timestamp of route updates received from the carrier.
This may also indicate that vessel information which was not previously available is now included in the carrier data (meaning, no actual change to route, but some properties related to the route itself were obtained).
CARRIER_VESSEL_UPDATE
Carrier has updated vessel information for this shipment.
This webhook is triggered for any change in list of vessels’ IDs related to this shipment - sorted by legs. This includes missing information (“null”) which is replaced with a valid ID.
CARRIER_STATUS_UPDATE
This field is not received from the carrier/vendor.
For every new shipment status received from the carrier, Hash calculation is done by Windward.
CARRIER_REASONS_OF_DELAY
A new reason for delay was created/updated.
The following webhooks with the prefix “PREDICTED” are based on Windward’s platform calculations (unlike the previous ones which refer to raw data received from the data provider (which pulls from the carrier).
PREDICTED_ETA_UPDATE
Windward's Predicted ETA update according to the last leg timestamps.
Once Actual Time of Arrival (ATA) is available, this field will change to “null”
PREDICTED_ATD_UPDATE
Windward's actual time of departure identified (by port-call information, first leg actual departure date & time)
PREDICTED_ATA_UPDATE
Windward's actual time of arrival identified (by port-call information, last leg information)
PREDICTED_ROUTE_UPDATE
Change in one of the ports where transactions to the containers are made (POL / TSP / POD)
Windward leg codes which are not “null” are grouped into a list.
This list includes all port-calls in and out of ports - referring to vessels only (not container related information which is handled by the carrier).
Any change to this list of valid leg codes will trigger the webhook.
(*) route updates from the carrier will also include container events, while this webhook refers to vessel events only.
DAYS_DIFF_FROM_INITIAL_ETA_CHANGE
A predicted ETA update caused a change in the difference between the PTA and the initial carrier ETA.
If no prediction is available, webhook will return “null”.
Comparing windward predicted ETA and carrier initial ETA - calculation result is presented as integer (number of days).
COMPLETED
An indication that the shipment is completed
Tracking Data Status Values
Every shipment carries a dataStatus that tells you the state of tracking — returned as response.message, with response.description giving its explanatory text:
| Status | Meaning |
|---|---|
| DATA_AVAILABLE | Carrier returned valid data; tracking is healthy |
| NO_DATA_RECEIVED | The carrier's API responded but returned no information for this shipment |
| UNAVAILABLE_CONTAINER_DATA | The booking exists but no containers are attached to it yet |
| UNAVAILABLE_EVENT_DATA | The shipment is matched with the carrier; no events have been reported yet |
| TEMPORARY_ISSUE | A transient condition on our or the carrier's side |
| BOL_OR_BOOKING_REF_INPUT_ERROR | The BOL or booking reference was rejected by the carrier |
| CONTAINER_NUMBER_INPUT_ERROR | The container number was rejected |
| CONTAINER_NOT_RECOGNISED | The carrier does not recognise the container number supplied |
| SCAC_INPUT_ERROR | The carrier code is wrong or unsupported |
| UNSUPPORTED_SHIPMENT_ERROR | The carrier does not support tracking for this shipment type at all |
| CONTAINER_NOT_FOUND_IN_LAST_FETCH | The carrier stopped listing this container |
| SHIPMENT_DISABLED | The carrier cancelled the shipment, or every identifier you supplied has failed |
