{
"id": 987654,
"status": "picking",
"order_number": "ORD-0001",
"updated_at": "2026-10-12T15:04:05Z",
"store_id": 1234,
"products": [
{
"id": 5551,
"sku": "SKU-RED-M",
"quantity": 2
},
{
"id": 5552,
"sku": "SKU-PHONE-128",
"quantity": 1,
"unit_codes": [
"356789012345678"
]
}
],
"channel_name": "openapi",
"channel_order_id": "SHOP-77421"
}Order status changed
Cubbo sends this event to your order webhook URL every time an order’s fulfillment status
changes: when the order is created (initial status), when it starts processing, enters picking
or packing, is put on hold or released, is interrupted, canceled, errored, shipped, and on every
return-related status (returning, return_arrived, returned, reentered). It is also sent when a
picking is sent to review (picking_status: "in_review") and on every consumer-to-consumer (C2C)
lifecycle step.
- The body always carries
id,status,order_number,updated_atandstore_id. products(with the pickedunit_codes) is present only while the order is inpickingorpacking.channel_nameandchannel_order_idare included for every Open API integration created recently; older integrations may not receive them.channel_integration_id,channel_order_idandsubchannel_nameare added when the “include channel details in webhooks” setting is enabled for your store by Cubbo.latest_estimated_time_arrival_rangeis added when that extra field is enabled for your integration by Cubbo.- Retries resend the exact same body, so
(id, status, updated_at)is a safe deduplication key. There is noX-Cubbo-Idempotency-Keyheader on this event.
{
"id": 987654,
"status": "picking",
"order_number": "ORD-0001",
"updated_at": "2026-10-12T15:04:05Z",
"store_id": 1234,
"products": [
{
"id": 5551,
"sku": "SKU-RED-M",
"quantity": 2
},
{
"id": 5552,
"sku": "SKU-PHONE-128",
"quantity": 1,
"unit_codes": [
"356789012345678"
]
}
],
"channel_name": "openapi",
"channel_order_id": "SHOP-77421"
}Authorizations
Headers
Name of the event (orderUpdated, orderFulfilled, shippingUpdated, inventoryMovement,
replenishmentStatus, replenishmentCreated, replenishmentScheduled). Route on this header,
not on the URL: all feeds can share one endpoint. Treat a request without this header as an order
event.
orderUpdated, orderFulfilled, shippingUpdated, inventoryMovement, replenishmentStatus, replenishmentCreated, replenishmentScheduled Body
Payload of the orderUpdated event.
New fulfillment status of the order.
initial, unpaid, empty, pending, error, cancelation_window, entirely_dropshipping, backorder, processing, picking, packing, shipped, canceled, holded, interrupted, returned, return_arrived, returning, reentered, awaiting_fulfillment_request, awaiting_dropoff, arrived_at_warehouse "picking"
Response
Acknowledge receipt with any 2xx status. The response body is ignored. Respond as soon as the event is persisted and process it asynchronously. A 429 or any 5xx response is retried; any other 4xx response is treated as a permanent rejection and is not retried.