Webhooks - Ocean Freight Visibility (OFV)

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


ERRORS (of Data Status)


BOL_OR_BOOKING_REF_INPUT_ERROR

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

There is no available information for the provided data. Verify that the SCAC is correct before submitting it again.

CONTAINER_NUMBER_INPUT_ERROR

There is no available information for the provided data. Verify that the Container number is correct before submitting it again.

TEMPORARY_ISSUE

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

This shipment’s data isn’t available right now. Check again later.

CONTAINER_NOT_FOUND_IN_LAST_FETCH

This shipment has no data or has outdated data because the last data collection did not return any results for its container number.

SHIPMENT_DISABLED

This shipment has not shown any data since it was logged or is showing outdated data and can no longer be tracked.

DATA_NOT_UPDATED

This shipment may have outdated data because its recent data collection failed.