Events & Payloads
This page lists every event type you can subscribe to, when it is sent, and the data it carries.
Request Body
Every event is sent as a POST request with the same envelope: the event type, its timestamp, its
sequence and the event data, in message.
{
"event": "order.packed",
"timestamp": "2026-10-08T12:55:24.206Z",
"sequence": 128734512,
"message": {
"orderId": "…",
"fulfillmentOrderIds": ["…"],
"fulfillmentOrderId": "…",
"eventDate": "2026-10-08T12:55:24.195Z"
}
}
| Field | Type | Description |
|---|---|---|
event | string | The event type, one of the available events. |
timestamp | string | ISO 8601 date of the change that produced the event. |
sequence | integer | Ordering and deduplication key, see below. |
message | object | The event data. Its shape depends on the event type, detailed on this page. |
Ordering and duplicates
Events may arrive out of order, and the same event may be delivered more than once.
- Use
sequenceto order the events of an order or a parcel: a largersequenceis a more recent state. Do not rely ontimestampfor this: two changes made at the same time can carry timestamps in the reverse order of the states they describe. - Use
sequenceto detect a duplicate: it is unique per event and does not change when an event is delivered again.
Reading a payload
- Identifiers are named after what they designate:
orderId,parcelId,fulfillmentOrderId… A payload never carries a bareid. - Most payloads describe the current state, not the change: store them as they are, replacing what you held. The lifecycle events are the exception: they describe a step that happened, with its date.
- Enumerated values travel as strings (
status,service…), and new values may appear. Do not reject an event because of a value you do not know. - Dates are ISO 8601 strings.
- New fields may be added to a payload at any time. Ignore the fields you do not use.
Available Events
Orders
| Event type | When it is sent | Payload |
|---|---|---|
order.created | An order is created | The order, its recipient and its sales channel |
order.updated | An order changes (anything but creation and cancel) | The order |
order.cancelled | An order is cancelled | The order |
order.recipientUpdated | The recipient of an order changes | The recipient |
order.collectsUpdated | The collects an order belongs to change | The full list of the order's collects |
order.fulfillmentOrderUpdated | One of the fulfillment orders of an order changes | The fulfillment order |
order.packed | An order (or one of its fulfillment orders) is packed | The lifecycle step and its date |
order.shipped | An order is shipped | The lifecycle step and its date |
order.dispatched | An order is dispatched | The lifecycle step and its date |
order.received | An order is received | The lifecycle step and its date |
order.putInCollect | An order is put in a collect | The lifecycle step and its date |
order.delivered | An order is delivered | The lifecycle step and its date |
Parcels
| Event type | When it is sent | Payload |
|---|---|---|
parcel.created | A parcel is created | The parcel |
parcel.updated | The status of a parcel advances | The parcel |
parcel.cancelled | A parcel is cancelled | The parcel |
Order Events
Every order payload starts with the order anchor: orderId and
fulfillmentOrderIds.
order.created
Sent once, when an order is created. It carries everything the creation establishes: the order, its recipient and the sales channel it came from.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
| … | Order fields | ref, status, service… |
recipient | Recipient | The recipient of the order |
channelOrder | Sales channel | null | The sales channel the order came from, null for a manual order |
{
"orderId": "…",
"fulfillmentOrderIds": ["…"],
"ref": "CMD-10452",
"status": "CREATED",
"progress": "OPENED",
"service": "…",
"organizationService": "…",
"organizationId": "…",
"tags": [],
"isSignatureEnabled": false,
"isSaturdayDeliveryEnabled": false,
"isInsuranceEnabled": false,
"isExternalOrder": false,
"carrierPickupId": null,
"carrierPickupName": null,
"invoiceUrl": null,
"customLocation": null,
"warehouseAnomalyToProcessStatus": "…",
"cachedWingWarehouseId": "…",
"cachedOrganizationExpeditorId": "…",
"createdAt": "2026-10-08T12:55:24.195Z",
"orderedAt": "2026-10-08T12:50:00.000Z",
"recipient": {
"cmsId": null,
"fullName": "Jane Doe",
"firstName": "Jane",
"lastName": "Doe",
"company": null,
"phone": "+33600000000",
"email": "jane.doe@example.com",
"line1": "1 rue de Rivoli",
"line2": null,
"additional": null,
"city": "Paris",
"zip": "75001",
"countryCode": "FR",
"anonymizedAt": null
},
"channelOrder": null
}
order.updated
Sent when any of the order fields changes, except at creation and cancellation. The payload always carries all the order fields, not only the changed ones: replace the order you hold with it.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
| … | Order fields | Every field of the order |
order.cancelled
Sent when an order is cancelled. Same payload as order.updated, with the order's
status after the cancellation.
order.recipientUpdated
Sent when the recipient of an order changes. The payload carries the recipient as it is now.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
recipient | Recipient | The current recipient |
order.collectsUpdated
Sent when the collects an order belongs to change: the order is added to a collect or removed from one.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
collects | Collect[] | Every collect the order belongs to |
collects is the complete list. A collect missing from it means the order no longer belongs to it:
replace the list you hold, do not merge it entry by entry. The same event may also arrive with a list
identical to the previous one.
{
"orderId": "…",
"fulfillmentOrderIds": ["…"],
"collects": [
{
"collectId": "…",
"status": "INITIATED",
"organizationPickupId": "…",
"shouldStartAt": "2026-10-09T08:00:00.000Z",
"shouldEndAt": "2026-10-09T12:00:00.000Z"
}
]
}
order.fulfillmentOrderUpdated
Sent when one of the fulfillment orders of an order is created, changes, or is deleted. A deleted
fulfillment order is not removed: its status says so.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
fulfillmentOrderId | string | The fulfillment order this event is about |
| … | Fulfillment order fields | Every field of that fulfillment order |
fulfillmentOrderIds lists every fulfillment order of the order. The one this event is about is
fulfillmentOrderId.
Lifecycle events
order.packed, order.shipped, order.dispatched, order.received, order.putInCollect and
order.delivered each mark a step of the order's lifecycle. They share the same payload: the step,
its date, and the fulfillment order it concerns.
| Field | Type | Description |
|---|---|---|
| … | Order anchor | orderId, fulfillmentOrderIds |
fulfillmentOrderId | string | null | The fulfillment order the step concerns, or null when it concerns the whole order |
eventDate | string | ISO 8601 date of the step |
{
"orderId": "…",
"fulfillmentOrderIds": ["…", "…"],
"fulfillmentOrderId": "