Webhooks
SEND can POST webhook notifications to your URL for package and tracking events. Configure the URL and rotate secrets from API Settings in the dashboard.
Security headers
Every delivery includes:
X-Webhook-Signature— HMAC-SHA256 of the payload body using your webhook secretX-Timestamp— Unix time (seconds) when the webhook was sent
Verify by recomputing the HMAC over the raw JSON body (same canonicalization your stack uses when comparing signatures).
JavaScript
Ruby
Python
Request shape
Headers
Body
Events
parcel.created
Sent when a new package is created for your business.
tracking.{step_name}
Sent when a tracking step changes. Step names are lowercased with underscores, for example:
tracking.booking_initiatedtracking.arrived_warehousetracking.departed_warehousetracking.arrived_origin_porttracking.export_clearancetracking.departed_origin_porttracking.arrived_destination_porttracking.customs_clearancetracking.delivery_in_progresstracking.delivered
Example payload:
Step status values: complete, processing, pending
Endpoint requirements
- Respond with
200 OKwithin ~10 seconds - Verify the signature before trusting the body
- Treat deliveries as at-least-once — use idempotency (event + timestamp / ids)
- Non-2xx responses may be retried per SEND policy
Local testing
Tools such as ngrok, localtunnel, or webhook.site help receive webhooks during development.