Sample Webhook Event Payloads
The exact JSON delivered to your endpoint for every webhook event, grouped by resource.
Every webhook Terminal sends has the same two-key envelope. event is the event type; data is the resource the event happened to.
{
"event": "shipment.delivered",
"data": { }
}The request also carries an X-Terminal-Signature header, an HMAC-SHA512 of the raw body keyed with your secret key. Always verify it before acting on a payload — see Handling Webhook Events.
What data contains
It depends on the event, and the difference matters:
Resource events —
address.*,packaging.*,insurance.*,claim.*,transaction.*— carry the resource itself, in the same shape the correspondingGETendpoint returns.Shipment status events —
shipment.in-transit,shipment.delivered,shipment.updated,shipment.cancelled,shipment.returned,shipment.awaiting-clearance,shipment.pending-cancellation— carry a lean tracking snapshot, not the whole shipment. Addresses and the parcel appear as ids rather than embedded objects. If you need the full shipment, call Get Shipment.shipment.createdcarries a fuller shipment object than the status events.shipment.customs_eventand theregulatory_document.*events carry a small purpose-built object rather than a resource.
Delivery behaviour
The payload is snapshotted at dispatch time and stored. Replaying a webhook resends that stored snapshot — it is not rebuilt from the resource as it stands now, so a replay shows you what was originally sent.
Keys whose value is undefined are omitted rather than sent as
null. Treat every field below as optional and code defensively.Label bytes, internal storage keys and carrier blobs are never included. Documents appear as URLs.
Payloads by resource
address.created, address.updated, address.deleted
packaging.created, packaging.updated
shipment.created, shipment.updated, shipment.in-transit, shipment.delivered, shipment.cancelled, shipment.returned, shipment.awaiting-clearance, shipment.pending-cancellation, shipment.customs_event
insurance.pending, insurance.success, insurance.failed
claim.success, claim.failed
transaction.success, transaction.failed
reconciliation.flagged, reconciliation.billed
regulatory_document.pending, regulatory_document.uploaded, regulatory_document.complete
Was this helpful?