Webhooks - Ocean Freight Visibility (OFV)

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 load for the shipment, providing an additional “reason of delay” field.
(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_ETA_UPDATE

This field is received from the carrier and examined as is without additional processing.

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)

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 (ETD vs ATD). CARRIER_ATD_UPDATE This field is received from the carrier and examined as is without additional processing.

Received actual time of departure (based on carrier information, if applicable)

CARRIER_ATA_UPDATE

This field is received from the carrier and examined as is without additional processing.

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).

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.
The hash itself is not included in the webhook payload.

For every new shipment status received from the carrier, Hash calculation is done by Windward.
The calculation is based on carrier event info (vendor events with actual dates, sorted by date of event creation). Last event (by timestamp) is hashed and compared to the previous hash. If hash change is detected then the webhook will be triggered.

CARRIER_REASONS_OF_DELAY

A new reason for delay was updated.

This webhook is triggered by the exceptions service.
Whenever a OfvException CUD (create/update/delete) is changing, UI is getting a webhook SNS notification containing: <origin (app name), shipmentId, CARRIER_REASONS_OF_DELAY>

📘

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_ETD_UPDATE

A new reason for delay updated
Get windward shipment ETA from last leg

PREDICTED_ETA_UPDATE

Windward's Predicted ETA update according to the last leg timestamps.
Once actual time is available, this field will change to “null”

PREDICTED_ATD_UPDATE

Windward's actual time of departure identified (by port-call information, last 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

Shipment is completed


ERRORS (of Data Status)

DATA_AVAILABLE

Response description: Data retrieval is successful, ensuring a seamless experience

BOL_OR_BOOKING_REF_INPUT_ERROR

Response description: Data retrieval was unsuccessful due to bad input (BOL OR BOOKING REFERENCE)Webapp tooltip: Incorrect or invalid data There is no available information for the provided data. Verify that the BOL / Booking Reference Number is correct before submitting it again.

SCAC_INPUT_ERROR

Response description: Data retrieval was unsuccessful due to bad input (SCAC)Webapp tooltip: Incorrect or invalid data - There is no available information for the provided data. Verify that the SCAC is correct before submitting it again.

CONTAINER_NUMBER_INPUT_ERROR

Response description: Data retrieval was unsuccessful due to bad input (Container Number)Webapp tooltip: Incorrect or invalid data - There is no available information for the provided data. Verify that the Container number is correct before submitting it again.

TEMPORARY_ISSUE

Response description: There is currently no response from the carrier for this shipmentWebapp tooltip: Data unavailable - This shipment’s data can’t be retrieved from the carrier right now. Check again later or contact support if the data isn’t updated.

NO_DATA

Response description: No data was returned from the carrier for the shipment identifiers providedWebapp tooltip: Data unavailable - This shipment’s data isn’t available right now. Check again later.

CONTAINER_NOT_FOUND_IN_LAST_FETCH

Response description: Data retrieval was unsuccessful due to the container not being associated with the identifiers providedWebapp tooltip: Data unavailable - This shipment has no data or has outdated data because the last data collection did not return any results for its container number.Platform trigger & logic: Data unavailable - Data from the latest fetch did not include information for the container number associated with this shipment.

SHIPMENT_DISABLED

Response description: No changes have been recorded in the shipment during the past 60 daysWebapp tooltip: Shipment tracking disabled - This shipment has not shown any data since it was logged or is showing outdated data and can no longer be tracked.Platform trigger & logic: Shipment disabled - For 60 days straight, no changes have been recorded for this shipment, resulting in stopping its data fetching.

DATA_NOT_UPDATED

Response description: This shipment may have outdated data because its recent data collection failed.Webapp tooltip: Data not updated - This shipment may have outdated data because its recent data collection failed.




.