Events & webhooks
The status timeline for a parcel, and the outbound webhook contract.
Timeline
/parcels/:id/eventscurl "https://apis.cloud.feeef.org/v1/parcels/pcl_8Xw…/events" \
-H "Authorization: Bearer $FEEEF_CLOUD_KEY"{ "data": [
{ "type": "created", "source": "api", "at": "2026-08-13T08:01:22Z" },
{ "type": "submitted", "source": "api", "at": "…", "toStatus": "submitted" },
{ "type": "status_changed", "source": "webhook:yalidine", "at": "…",
"fromStatus": "submitted", "toStatus": "out_for_delivery",
"payload": { "carrierStatus": "Sorti en livraison" } }
] }source tells you whether a transition came from a carrier webhook, the
platform's poller, or a direct API call — the field to check first when a
status looks wrong and you need to know whether it's your integration, the
platform, or the carrier that's out of sync. payload.carrierStatus
preserves the carrier's own raw status string alongside the platform's
unified vocabulary, useful when a carrier support ticket needs the exact
wording they use internally.
Outbound webhooks
Register an endpoint through POST /webhook-endpoints with webhooks:manage. Parcel subscriptions include parcel.created, parcel.status_changed, parcel.delivered, parcel.deleted and batch.completed. Cancellation and returns are represented by status changes rather than separate parcel.cancelled or parcel.returned event types.
See Webhooks for registration, signature verification and delivery deduplication. Keep timeline polling available when diagnosing delayed or failed deliveries.