delivery_order/completed
Overview
| Property | Value |
|---|---|
| Webhook type | delivery_order/completed |
| Kafka topic | delivery-order.completed |
| Direction | Platform → Your endpoint |
Description
Fired when a delivery order is fully fulfilled. This is the terminal success state — all lines have been shipped or delivered and the warehouse has confirmed completion.
Trigger Conditions
- All delivery order lines reach
FULFILLEDorDELIVEREDstatus - The warehouse or fulfillment service reports completion
- The status transitions from
OPENEDtoCOMPLETED - A
COMPLETEDfulfillment event is added
Message Envelope
json
{
"header": {
"organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "delivery_order/completed",
"date": "2024-03-16T09:00:00.000Z"
},
"body": { ... }
}Body — Property Table
The body has the same shape as delivery_order/created. See delivery-order-created.md for the full property table.
When this event fires:
| Field | Expected value |
|---|---|
status | COMPLETED |
lines[].status | FULFILLED or DELIVERED for all lines |
lines[].fulfilledQuantity | Equal to quantity for all lines |
Full JSON Payload Sample
json
{
"header": {
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"messageId": "c9d0e1f2-a3b4-5678-cdef-345678901234",
"webhookId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"type": "delivery_order/completed",
"date": "2024-03-16T09:00:00.000Z"
},
"body": {
"id": "e5f6a7b8-c9d0-1234-efab-890123456789",
"orderIds": ["d4e5f6a7-b8c9-0123-defa-234567890123"],
"locationId": "f0a1b2c3-d4e5-6789-f0ab-123456789012",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"shippingMethodId": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"shippingMethodName": "Colissimo Domicile",
"collectPointId": null,
"collectPointCountry": null,
"collectPointZipCode": null,
"type": "B2C",
"priority": "NORMAL",
"issuedAt": "2024-03-15T09:00:00.000Z",
"status": "COMPLETED",
"fulfillmentType": "WAREHOUSE",
"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",
"orderNumber": "ORD-2024-001234",
"gift": false,
"inventoryPolicy": "DENY",
"createdAt": "2024-03-15T10:30:00.000Z",
"prepareAt": null,
"comment": null,
"meta": null,
"incoterms": null,
"virtual": false,
"deliveryAddress": {
"id": "a1b2c3d4-e5f6-7890-abcd-901234567890",
"type": "PERSON",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"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
},
"events": [
{
"id": "f6a7b8c9-d0e1-2345-fabc-012345678901",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"type": "FULFILLMENT_ACCEPTED",
"level": "NORMAL",
"message": "Fulfillment accepted",
"date": "2024-03-15T11:00:00.000Z"
},
{
"id": "a7b8c9d0-e1f2-3456-abcd-456789012345",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"type": "PACKED",
"level": "NORMAL",
"message": "Items packed and ready for carrier",
"date": "2024-03-15T15:00:00.000Z"
},
{
"id": "b8c9d0e1-f2a3-4567-bcde-567890123456",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"type": "SHIPPED",
"level": "NORMAL",
"message": "Handed over to Colissimo",
"date": "2024-03-15T16:00:00.000Z"
},
{
"id": "c9d0e1f2-a3b4-5678-cdef-678901234567",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"type": "COMPLETED",
"level": "NORMAL",
"message": "Delivery order completed",
"date": "2024-03-16T09:00:00.000Z"
}
],
"lines": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-012345678901",
"deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
"orderLineId": "c9d0e1f2-a3b4-5678-cdef-789012345678",
"stockReferenceId": "d0e1f2a3-b4c5-6789-defa-123456789012",
"status": "FULFILLED",
"label": "T-Shirt Blanc Taille M",
"sku": "TSHIRT-WHITE-M",
"quantity": 2,
"price": 25.00,
"vatRate": 0.20,
"total": 50.00,
"totalTaxInclusive": 60.00,
"meta": null,
"fulfilledQuantity": 2
}
]
}
}Related Events
delivery_order/created— initial creationdelivery_order/updated— also fired on this transitionshipment/created— created when carrier label is generatedorder/completed— may follow if this was the last delivery order
Notes
delivery_order/completedis a terminal event. No further delivery order events are emitted for this DO.- When completion occurs, the parent order's progress is updated. If all delivery orders for the parent order are complete, an
order/completedevent follows. - The
eventsarray on the completed delivery order contains the full history of fulfillment events. - Completion is often preceded by a
shipment/createdevent when a carrier label is generated.