Webhooks allow DSV to automatically send event notifications to your system (your pushUrl) when something changes. Examples include tracking milestones, quote updates, invoice availability, visibility updates, customs status changes, and warehousing events.
For event-wise payload examples, refer to: Webhook Response Examples
Before you start: To use the Webhook APIs, you need:
Subscription keys are environment specific:
Demo keys work only in Demo, QA keys only in QA, and Production keys only in Production.
Demo: Subscription keys can be generated directly in the Developer Portal after subscribing to the product.
QA / Production: Subscription keys are provided by DSV Support.
Email developer.support@dsv.com with the environment (QA or Production). Our support team will respond once the key is ready.
A webhook is a notification sent from DSV to your system when an event occurs. Once subscribed, DSV sends an HTTPS POST request with a JSON payload to your pushUrl.
DSV Webhook APIs require OAuth 2.0 token-based authentication. Include a valid access token in your API requests:
When subscribing, you can provide authenticationData so DSV can securely deliver webhook data to your endpoint (by requesting a token from your token generation URL).
Common headers:
| Operation | Method | Path | Purpose |
|---|---|---|---|
| Health | GET |
/status/health |
Check if the webhook service is available |
| Subscribe | POST |
/subscriptions/subscribe |
Create a subscription for a specific event |
| Unsubscribe | POST |
/subscriptions/unsubscribe/{subscriptionEvent} |
Remove a subscription for a specific event |
| List subscriptions | GET |
/subscriptions |
Get all subscriptions for the current user |
Tip: If you need to change your pushUrl, unsubscribe and subscribe again with the updated URL.
To subscribe, provide:
The request schema and accepted values are defined in the Webhook API specification.
Use the exact event name as the subscriptionEvent value when subscribing.
Use the exact event name as the subscriptionEvent value when subscribing.
Use the exact event name as the subscriptionEvent value when subscribing.
Note: Access to visibility data may depend on compatible devices linked to your shipment.
Use the exact event name as the subscriptionEvent value when subscribing.
Use the exact event name as the subscriptionEvent value when subscribing.
Use the exact event name as the subscriptionEvent value when subscribing.
Downtime notifications are subscribed in the same way as any other event (subscribe with the event name and your pushUrl).
Use the exact event name as the subscriptionEvent value when subscribing.
Not all webhook events are applicable to every transport mode. The table below shows which transport modes support each event.
| Event Trigger | When / On | Transport Mode | Webhook Event Name |
|---|---|---|---|
| Booking summary | When booking was submitted | Road, Air, Sea, Rail | TrackingShipmentBookingSummary |
| Estimated pickup | On estimated pickup event change | Road, Air, Sea, Rail, Xpress | TrackingShipmentEstimatedPickupChanged |
| Estimated delivery | On estimated delivery event change | Road, Air, Sea, Rail, Xpress | TrackingShipmentEstimatedDeliveryChanged |
| Estimated arrival changed | On ETA event change | Air, Sea, Rail, Xpress | TrackingShipmentEstimatedArrivalChanged |
| Estimated departure changed | On ETD event change | Air, Sea, Rail, Xpress | TrackingShipmentEstimatedDepartureChanged |
| Actual arrival changed | On arrival event change | Air, Sea, Rail, Xpress | TrackingShipmentActualArrivalChanged |
| Actual departure changed | On departure event change | Air, Sea, Rail, Xpress | TrackingShipmentActualDepartureChanged |
| Picked up | On pickup confirmation | Road, Air, Sea, Rail, Xpress | TrackingShipmentPickedUp |
| Delivered | On delivery confirmation | Road, Air, Sea, Rail, Xpress | TrackingShipmentDelivered |
| Supplier booking | When supplier booking was submitted | Road, Air, Sea, Rail | TrackingShipmentSupplierBooking |
| POD available | When Proof of Delivery is available | Road | TrackingShipmentPodAvailable |
| Export customs cleared | On export customs clearance | Air, Sea, Rail | TrackingShipmentExportCustomsCleared |
| Import customs cleared | On import customs clearance | Air, Sea, Rail | TrackingShipmentImportCustomsCleared |
| Shipment status changed | On shipment status update | Road, Air, Sea, Rail | TrackingShipmentShipmentStatusChanged |
| Gate in | On gate-in event | Sea | TrackingShipmentGateIn |
| Gate out | On gate-out event | Sea | TrackingShipmentGateOut |
| Freight loaded | On freight loaded event | Sea | TrackingShipmentFreightLoaded |
| Freight unloaded | On freight unloaded event | Sea | TrackingShipmentFreightUnloaded |
| Shipment container added | On container added to shipment | Sea | TrackingShipmentShipmentContainerAdded |
Use the exact event name as the subscriptionEvent value when subscribing.
Webhook payloads vary by event. Use the examples page to view sample responses for each event:
Select the relevant tab to view samples by event.
For support, contact: developer.support@dsv.com
You may also find answers to common questions in the Developer Portal FAQs , covering authentication, subscriptions, and general API usage.
Please include: environment (Demo/QA/Production), subscriptionEvent(s), pushUrl domain (do not share secrets), timestamp of the test, and any error message returned by the API.