Skip to main content

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"
}
}
FieldTypeDescription
eventstringThe event type, one of the available events.
timestampstringISO 8601 date of the change that produced the event.
sequenceintegerOrdering and deduplication key, see below.
messageobjectThe 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 sequence to order the events of an order or a parcel: a larger sequence is a more recent state. Do not rely on timestamp for this: two changes made at the same time can carry timestamps in the reverse order of the states they describe.
  • Use sequence to 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 bare id.
  • 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 typeWhen it is sentPayload
order.createdAn order is createdThe order, its recipient and its sales channel
order.updatedAn order changes (anything but creation and cancel)The order
order.cancelledAn order is cancelledThe order
order.recipientUpdatedThe recipient of an order changesThe recipient
order.collectsUpdatedThe collects an order belongs to changeThe full list of the order's collects
order.fulfillmentOrderUpdatedOne of the fulfillment orders of an order changesThe fulfillment order
order.packedAn order (or one of its fulfillment orders) is packedThe lifecycle step and its date
order.shippedAn order is shippedThe lifecycle step and its date
order.dispatchedAn order is dispatchedThe lifecycle step and its date
order.receivedAn order is receivedThe lifecycle step and its date
order.putInCollectAn order is put in a collectThe lifecycle step and its date
order.deliveredAn order is deliveredThe lifecycle step and its date

Parcels​

Event typeWhen it is sentPayload
parcel.createdA parcel is createdThe parcel
parcel.updatedThe status of a parcel advancesThe parcel
parcel.cancelledA parcel is cancelledThe 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.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
…Order fieldsref, status, service…
recipientRecipientThe recipient of the order
channelOrderSales channel | nullThe 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.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
…Order fieldsEvery 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.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
recipientRecipientThe current recipient

order.collectsUpdated​

Sent when the collects an order belongs to change: the order is added to a collect or removed from one.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
collectsCollect[]Every collect the order belongs to
Replace the list

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.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
fulfillmentOrderIdstringThe fulfillment order this event is about
…Fulfillment order fieldsEvery field of that fulfillment order
Which 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.

FieldTypeDescription
…Order anchororderId, fulfillmentOrderIds
fulfillmentOrderIdstring | nullThe fulfillment order the step concerns, or null when it concerns the whole order
eventDatestringISO 8601 date of the step
{
"orderId": "…",
"fulfillmentOrderIds": ["…", "…"],
"fulfillmentOrderId": "…",
"eventDate": "2026-10-08T12:55:24.195Z"
}

Unlike the other events, these describe a step that happened, not the current state of the order: an order is not "packed" forever, it was packed at eventDate.

Parcel Events​

parcel.created, parcel.updated and parcel.cancelled share the same payload: the parcel as it is now. One event is sent per parcel.

FieldTypeDescription
…Order anchorThe order the parcel belongs to
parcelIdstringThe parcel
trackingIdstringThe carrier tracking number
statusstringThe parcel status
isReturnbooleantrue for a return parcel
{
"orderId": "…",
"fulfillmentOrderIds": ["…"],
"parcelId": "…",
"trackingId": "6A12345678901",
"status": "SHIPPED",
"isReturn": false
}

A cancelled parcel keeps its place: parcel.cancelled carries its new status, and later events about the order still know it.

Payload Objects​

Order anchor​

Carried by every event, to tell which order it is about.

FieldTypeDescription
orderIdstringThe order
fulfillmentOrderIdsstring[]Every fulfillment order of the order. Not the one the event is about, when there is one.

Order fields​

FieldTypeDescription
refstringOrder reference number
statusstringCurrent order status
progressstringProgress of the order: OPENED, IN_PROGRESS, COMPLETED…
servicestringWing service
organizationServicestringOrganization-specific service
organizationIdstringYour organization
tagsstring[]Tags for organizing and filtering orders
isSignatureEnabledbooleanDelivery against signature
isSaturdayDeliveryEnabledbooleanSaturday delivery
isInsuranceEnabledbooleanInsurance
isExternalOrderbooleantrue for an order shipped with a label produced outside Wing
carrierPickupIdstring | nullCarrier pickup point (relay point) ID, if applicable
carrierPickupNamestring | nullName of that pickup point
invoiceUrlstring | nullURL to access the order invoice
customLocationstring | nullCustom location information for delivery
warehouseAnomalyToProcessStatusstringStatus of anomalies to be processed
cachedWingWarehouseIdstring | nullThe Wing warehouse handling the order
cachedOrganizationExpeditorIdstring | nullThe sender address of your organization used for the order
createdAtstringISO 8601 date the order was created in Wing
orderedAtstringISO 8601 date the order was placed

Recipient​

The recipient as it is now.

FieldTypeDescription
cmsIdstring | nullThe recipient in your e-commerce platform
fullNamestringFull name
firstNamestring | nullFirst name
lastNamestringLast name
companystring | nullCompany
phonestringPhone number
emailstring | nullEmail address
line1stringAddress, first line
line2string | nullAddress, second line
additionalstring | nullAdditional address information
citystringCity
zipstringPostal code
countryCodestringISO 3166-1 alpha-2 country code
anonymizedAtstring | nullSet once the recipient has been anonymized: the fields above are then placeholders

Sales channel​

FieldTypeDescription
channelIdstringYour sales channel in Wing
customerCMSIdstringThe order in your e-commerce platform
cmsPartnerstringThe e-commerce platform
locationstring | nullThe platform location the order came from
amazonMarketplaceIdstring | nullThe Amazon marketplace, for an Amazon order

Collect​

A collect the order belongs to.

FieldTypeDescription
collectIdstringThe collect
statusstringThe collect status
organizationPickupIdstringThe pickup address of the collect
shouldStartAtstringISO 8601 start of the collect time slot
shouldEndAtstringISO 8601 end of the collect time slot

Fulfillment order fields​

FieldTypeDescription
wingRefstringWing's reference for the fulfillment order
externalRefstring | nullYour reference for the fulfillment order
statusstringThe fulfillment order status
isReturnbooleantrue for a return
isSignatureEnabledbooleanDelivery against signature
isSaturdayDeliveryEnabledbooleanSaturday delivery
isInsuranceEnabledbooleanInsurance
warehouseAnomalyToProcessStatusstringStatus of anomalies to be processed
servicestringThe Wing delivery service
carrierPickupIdstring | nullThe relay point, for a relay delivery
carrierPickupNamestring | nullThe name of that relay point
invoiceUrlstring | nullThe invoice attached to the fulfillment order
customLocationstring | nullCustom location information for delivery
cachedWingWarehouseIdstring | nullThe Wing warehouse handling the fulfillment order
cachedOrganizationExpeditorIdstring | nullThe sender address of your organization used for the fulfillment order
linkedFulfillmentOrderIdstring | nullThe outbound fulfillment order of a return, and the reverse
createdAtstringISO 8601 date the fulfillment order was created