Skip to main content
Carrier tracking webhooks are inbound callbacks from a carrier into Zippendo. They are not the endpoints you create under Settings → Webhooks. There is no merchant form to paste a carrier callback URL or rotate a tracking secret — Zippendo registers and verifies those connections when you connect the carrier. App events (your URL, HMAC secret, Tracking Updated) are Webhooks. Journey: Tracking.
Do not create a Settings → Webhooks endpoint expecting GLS, PostNord, or Bring to POST into it. That list is Zippendo → your system. Carrier → Zippendo tracking uses a different URL and token that never appear on Edit your carrier.

Two webhook systems

Settings Webhooks list with Fulfilment notifier subscribed to shipment and tracking eventsSettings Webhooks list with Fulfilment notifier subscribed to shipment and tracking events

Settings → Webhooks is Zippendo notifying you — not a carrier tracking callback

To hear about tracking in your app, Add Webhook and under Tracking enable Tracking Updated. That is still an app webhook.
Create Webhook modal scrolled to the Tracking group and Tracking Updated eventCreate Webhook modal scrolled to the Tracking group and Tracking Updated event

Create Webhook — Tracking group with Tracking Updated

Which carriers push tracking

Zippendo either pulls tracking on a schedule (~hourly) or receives carrier POSTs. Edit your carrier still has only Carrier name, credentials, and Sandbox Mode. There is no Webhook URL or Tracking callback row.
Edit your carrier for GLS Denmark showing Login Name, Password, and Sandbox Mode without a webhook URL fieldEdit your carrier for GLS Denmark showing Login Name, Password, and Sandbox Mode without a webhook URL field

Edit your carrier for GLS Denmark — credentials and Sandbox Mode, no tracking webhook fields

What you see on the shipment

After Send Shipment, open Tracking (?tab=tracking). The tab exists only when the shipment has a tracking number, tracking URL, label-free code, or QR code. The timeline looks the same for pull and push carriers: status badge, newest-first events, Tracking Information (Tracking Number, Tracking Link, optional Label-Free Code / QR Code). Helper: Tracking information is provided by the carrier. Use the tracking number or link above to check the current status of your shipment.
Shipment Tracking tab with In Transit badge, event timeline, and tracking numberShipment Tracking tab with In Transit badge, event timeline, and tracking number

Tracking Timeline and Tracking Information after carrier events arrive

Right after send, the list is often empty: No tracking events yet. Tracking information is polled hourly from the carrier. Push carriers (Bring Event Cast, Instabee) fill the same list when the carrier POSTs; there is no separate “webhook received” badge.
Tracking Timeline showing no tracking events yet, polled hourly from the carrierTracking Timeline showing no tracking events yet, polled hourly from the carrier

Empty timeline immediately after dispatch, before the first scan

There is no Refresh tracking button. Do not recreate the shipment to force a number.

Failures

If Bring auto-registration fails at dispatch, the send can surface Failed to register the carrier tracking webhook. (CARRIER_TRACKING_WEBHOOK_REGISTRATION_FAILED). Tracking numbers may still exist; events then wait until registration succeeds or you use a pull carrier. Invalid inbound payloads are The webhook payload is invalid. / The webhook signature is invalid. Those codes are for carrier → Zippendo verification, not for your Settings endpoint (your endpoint verifies Zippendo’s HMAC — Webhooks). When the carrier site is ahead of Zippendo, use Tracking not updating.