Configurations
A webhook configuration is your registered endpoint. It tells Carriyo where to POST events, which events should fire it, what conditions narrow when it fires, and how to authenticate the call.
Configurations are managed in the Dashboard under Settings → Webhooks. See the Configure a webhook how-to for a step-by-step walkthrough.
What a configuration includes
Every configuration carries:
- Name. A descriptive label.
- URL. Your endpoint.
- Entity type. The entity whose events the webhook listens for: shipment, order, or return request.
- Triggers. The specific events on the entity that fire the webhook.
- Conditions. Optional filters that narrow when the webhook fires.
- Authentication. Optional, configured per webhook. See Authentication.
- Active flag. Toggle the webhook on or off without deleting it.
Triggers
A trigger is the specific event on the entity that fires the
webhook. The trigger HTTP header on every delivery tells you
which one fired. For shipment configurations the triggers
are:
- Status change — the shipment reaching a given status. The
triggerheader carries the status name itself (booked,error,in_transit,delivered, and so on). Subscribe toerrorto learn about failed bookings; the delivered Shipment'serror_details[].sourcetells you whether Carriyo or the carrier rejected it (see Booking flow). - Reason-code change — certain reason codes are available as
triggers, such as
customs_clearedorcustoms_clearance_issue. When one fires, thetriggerheader carries the reason code. - Default label generated (
default_label_update) — the shipment's default label is ready. This is the trigger to use for label-printing automation, notbooked: the label isn't guaranteed to exist the instant the shipment books. - Carriyo label generated (
carriyo_label_update) — the Carriyo-generated label specifically is ready. - Promised delivery date changed (
promised_delivery_update). - Scheduled collection date changed
(
scheduled_collection_update). - Scheduled delivery date changed
(
scheduled_delivery_update).
For order and return-request configurations, triggers cover the lifecycle changes for that entity type.
The full set available for each entity type is shown in the Dashboard when configuring a webhook. See Authentication → headers Carriyo sends.
Conditions
Conditions narrow when a webhook fires within its triggers. A common use is "only fire for shipments going to the UK": the trigger is a status change, the condition narrows it to a specific destination.
Examples of conditions you can apply:
- Pickup or dropoff country.
- Pickup or dropoff postcode.
- Delivery type or order type.
- Custom conditions on tenant-defined attributes.
The Dashboard shows the full set of conditions available for the entity type when you're editing a webhook. Conditions on a single configuration are AND-combined; for OR-style logic across very different filter sets, create separate configurations.
Order webhook payload note
For shipment and return-request webhooks, the body of the delivery is the full entity object (Shipment or ReturnRequest). For order webhooks, the body is an envelope:
{
"oldImage": { /* Order before the change */ },
"newImage": { /* Order after the change */ },
"trigger": "...",
"operation": "..."
}
This is the only entity type that includes the before-and-after state in the payload.
Per-tenant cap
A per-tenant limit on the number of active webhook configurations may apply. If you're configuring many endpoints, check with your Carriyo contact.
If you need fan-out beyond your tenant cap, register one Carriyo webhook pointing at your own ingestion service. Fan out from there internally (queue or pub-sub) to as many downstream consumers as you need.
Visibility and history
The Dashboard shows each webhook's recent delivery history under Settings → Integration Monitor:
- Recent events delivered.
- Recent failures with HTTP status / response body.
- Retry status for in-flight failed deliveries.
- Replay actions for failed events.
This is the right place to investigate "my system stopped seeing events". The answer is usually a 5xx or timeout pattern visible in the delivery history.
How it fits with other modules
- Webhooks. The parent module.
- Authentication. Configured per webhook.
- Retry and idempotency. How delivery handles failures.