Skip to main content

Webhook Payload Format

Every webhook delivery is an HTTP POST request with a JSON body. The structure is always the same regardless of the event type.

Top-Level Fields​

FieldTypeDescription
eventstringThe event type: order.created, order.confirmed, order.canceled, or order.failed
timestampstringISO 8601 datetime when the event was dispatched
dataobjectThe event payload containing full order data

Order Data Fields​

FieldTypeDescription
idstringEasyConfirm order ID (UUID)
externalOrderIdstringYour external order ID (the one you sent when creating the order)
statusstringCurrent order status: pending, confirmed, canceled, or failed
customerActionstring | nullCustomer's action: approved, canceled, or null if no action yet
deliveryStatusstring | nullWhatsApp message delivery status: sent, delivered, read, failed, or null
customerNamestringCustomer's name
customerPhonestringCustomer's phone number
customerAddressstring | nullCustomer's delivery address
subtotalnumberSubtotal before shipping
shippingCostnumberShipping cost
totalCostnumberTotal order cost
currencystringCurrency code (e.g., EGP)
failureReasonstring | nullHuman-readable failure text from Meta. Present only when status is failed. Display only — do not match on the text
errorCodeinteger | nullNumeric error code from Meta (e.g. 131026). Present only when status is failed and Meta returned a code. Use for programmatic handling. See order.failed for common codes
itemsarrayOrder items array
createdAtstringISO 8601 datetime when the order was created
updatedAtstringISO 8601 datetime of the last update

Item Fields​

FieldTypeDescription
idstringItem ID
productNamestringProduct name
variantNamestringVariant description
quantitynumberQuantity ordered
unitPricenumberPrice per unit
totalPricenumberTotal price for this item

Example Structure​

{
"event": "order.confirmed",
"timestamp": "2026-01-15T10:05:30.000Z",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"externalOrderId": "EO-12345",
"status": "confirmed",
"customerAction": "approved",
"deliveryStatus": "read",
"customerName": "Ahmed Mohamed",
"customerPhone": "201234567890",
"customerAddress": "15 Tahrir St, Cairo",
"subtotal": 150,
"shippingCost": 25,
"totalCost": 175,
"currency": "EGP",
"failureReason": null,
"errorCode": null,
"items": [
{
"id": "item-uuid-1",
"productName": "iPhone Case",
"variantName": "Black / Large",
"quantity": 2,
"unitPrice": 75,
"totalPrice": 150
}
],
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:05:30.000Z"
}
}