order/updated
Overview
| Property | Value |
|---|---|
| Webhook type | order/updated |
| Kafka topic | order.updated |
| Direction | Platform → Your endpoint |
Description
Fired whenever an order is modified after creation. This includes changes to order metadata, contact information, line statuses, financial totals, or any other mutable order field.
Trigger Conditions
- An order field is updated via the GraphQL API or internal command
- An order line status transitions (e.g.
PENDING→ACCEPTED) - Contacts (buyer, billing, delivery, seller) are updated
- Order priority, state, or dispatching type changes
fulfillmentRequestedAtis set when fulfillment is triggered
Message Envelope
json
{
"header": {
"organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "order/updated",
"date": "2024-03-15T11:05:00.000Z"
},
"body": { ... }
}Body — Property Table
The body has the same shape as order/created. See order-created.md for the full property table.
Key fields that commonly change in update events:
| Field | Change scenario |
|---|---|
state | DRAFT → OPENED when order is confirmed; OPENED → COMPLETED when fulfilled |
locked | Set to true when fulfillment is in progress |
fulfillmentRequestedAt | Set when dispatch to warehouse is triggered |
lines[].status | Transitions as items are processed |
lines[].fulfilledQuantity | Increases as items are shipped |
priority | Manual escalation by operator |
Full JSON Payload Sample
json
{
"header": {
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"messageId": "e5f6a7b8-c9d0-1234-efab-456789012345",
"webhookId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"type": "order/updated",
"date": "2024-03-15T11:05:00.000Z"
},
"body": {
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"externalReference": "SHOP-12345",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tpAppId": "e5f6a7b8-c9d0-1234-efab-345678901234",
"shippingMethodId": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"shippingMethodName": "Colissimo Domicile",
"collectPointId": null,
"collectPointCountry": null,
"collectPointZipCode": null,
"type": "B2C",
"dispatchingType": "AUTOMATIC",
"total": 85.00,
"totalTaxInclusive": 102.00,
"totalShipping": 5.99,
"totalDiscount": 0.00,
"totalVat": 17.00,
"totalInsurance": null,
"currency": "EUR",
"invoiceNumber": "INV-2024-001234",
"invoiceUrl": "https://cdn.example.com/invoices/INV-2024-001234.pdf",
"gift": false,
"inventoryPolicy": "DENY",
"issuedAt": "2024-03-15T09:00:00.000Z",
"prepareAt": null,
"receivedAt": "2024-03-15T10:23:45.000Z",
"fulfillmentRequestedAt": "2024-03-15T11:00:00.000Z",
"buyer": {
"id": "a7b8c9d0-e1f2-3456-abcd-567890123456",
"type": "PERSON",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fullname": "Alice Dupont",
"email": "alice.dupont@example.com",
"address": "12 Rue de la Paix",
"addressComplement": "Apt 4B",
"zipcode": "75001",
"country": "FR",
"city": "Paris",
"state": null,
"phone": "+33612345678",
"comments": null,
"metadata": null,
"taxId": null,
"eori": null,
"form": null,
"capital": null,
"companyId": null,
"registration": null
},
"billingContact": {
"id": "a7b8c9d0-e1f2-3456-abcd-567890123456",
"type": "PERSON",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fullname": "Alice Dupont",
"email": "alice.dupont@example.com",
"address": "12 Rue de la Paix",
"addressComplement": "Apt 4B",
"zipcode": "75001",
"country": "FR",
"city": "Paris",
"state": null,
"phone": "+33612345678",
"comments": null,
"metadata": null,
"taxId": null,
"eori": null,
"form": null,
"capital": null,
"companyId": null,
"registration": null
},
"deliveryContact": {
"id": "b8c9d0e1-f2a3-4567-bcde-678901234567",
"type": "PERSON",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fullname": "Alice Dupont",
"email": "alice.dupont@example.com",
"address": "12 Rue de la Paix",
"addressComplement": "Apt 4B",
"zipcode": "75001",
"country": "FR",
"city": "Paris",
"state": null,
"phone": "+33612345678",
"comments": null,
"metadata": null,
"taxId": null,
"eori": null,
"form": null,
"capital": null,
"companyId": null,
"registration": null
},
"seller": null,
"comment": null,
"meta": null,
"state": "OPENED",
"priority": "NORMAL",
"locked": true,
"opening": false,
"sourceType": "CMS",
"deliveryType": "HOME",
"lines": [
{
"id": "c9d0e1f2-a3b4-5678-cdef-789012345678",
"orderId": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "IN_PROGRESS",
"label": "T-Shirt Blanc Taille M",
"sku": "TSHIRT-WHITE-M",
"price": 25.00,
"vatRate": 0.20,
"total": 50.00,
"totalTaxInclusive": 60.00,
"fulfillableQuantity": 2,
"quantity": 2,
"fulfilledQuantity": 0,
"meta": null,
"locationId": "f0a1b2c3-d4e5-6789-f0ab-123456789012",
"shippingMethodId": null,
"number": "1"
},
{
"id": "d0e1f2a3-b4c5-6789-defa-890123456789",
"orderId": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "IN_PROGRESS",
"label": "Pantalon Bleu Taille 38",
"sku": "PANTS-BLUE-38",
"price": 35.00,
"vatRate": 0.20,
"total": 35.00,
"totalTaxInclusive": 42.00,
"fulfillableQuantity": 1,
"quantity": 1,
"fulfilledQuantity": 0,
"meta": null,
"locationId": "f0a1b2c3-d4e5-6789-f0ab-123456789012",
"shippingMethodId": null,
"number": "2"
}
]
}
}Related Events
order/created— initial order creationorder/completed— terminal state when all lines fulfilledorder/cancelled— terminal state when order is cancelled
Notes
order/updatedis a full-state snapshot, not a delta. You receive the complete order object on every update.- Updates can be frequent during fulfillment processing (multiple line status transitions may each trigger an update).
- The
lockedflag istruewhile a delivery order is being processed; no modifications should be attempted while locked. - When
dispatchingTypeisMANUAL,fulfillmentRequestedAtis only set when an operator explicitly triggers fulfillment.