Webhooks
Payload Structure
Every delivery has the same envelope; data depends on the event.
The envelope
| Field | Meaning |
|---|---|
id | The delivery's ID (also X-Rassmi-Delivery). |
event | The event's name. |
timestamp | When this attempt was sent (ISO 8601). |
data | The resource, as saved when the delivery was built. |
order.confirmed
{
"id": "0199a3d4-2e6f-7c10-b3a5-8d9e0f1a2b3c",
"event": "order.confirmed",
"timestamp": "2026-10-30T09:31:05+00:00",
"data": {
"id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"status": "confirmed",
"source": "api",
"customer_name": "Amina Benali",
"customer_phone": "0555123456",
"customer": {
"name": "Amina Benali",
"phone": "0555123456",
"address": "Cité 200 Logements, Bt 4",
"wilaya": "16",
"commune": "Bab Ezzouar"
},
"items": [
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"product_name": "Robe kabyle",
"attributes": {
"Taille": "M"
},
"quantity": 1,
"unit_price": 4500,
"subtotal": 4500
}
],
"total_amount": 5000,
"shipping_fee": 500,
"payment_method": "COD",
"notes": null,
"tracking_number": null,
"shipping_company": null,
"shipping_status": null,
"created_at": "2026-10-30T09:12:44+00:00",
"updated_at": "2026-10-30T09:31:02+00:00"
}
}
The data of each event
Orders send the whole order (with customer and items; customer_name and customer_phone are kept at the top for endpoints written for the first version). order.updated adds changed, the fields that changed; order.status_changed adds previous_status.
data
{
"id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"status": "pending_confirmation",
"source": "api",
"customer_name": "Amina Benali",
"customer_phone": "0555123456",
"customer": {
"name": "Amina Benali",
"phone": "0555123456",
"address": "Cité 200 Logements, Bt 4",
"wilaya": "16",
"commune": "Bab Ezzouar"
},
"items": [
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"product_name": "Robe kabyle",
"attributes": {
"Taille": "M"
},
"quantity": 1,
"unit_price": 4500,
"subtotal": 4500
}
],
"total_amount": 5000,
"shipping_fee": 500,
"payment_method": "COD",
"notes": null,
"tracking_number": null,
"shipping_company": null,
"shipping_status": null,
"created_at": "2026-10-30T09:12:44+00:00",
"updated_at": "2026-10-30T09:31:02+00:00"
}
{
"id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"status": "confirmed",
"source": "api",
"customer_name": "Amina Benali",
"customer_phone": "0555123456",
"customer": {
"name": "Amina Benali",
"phone": "0555123456",
"address": "Cité 200 Logements, Bt 4",
"wilaya": "16",
"commune": "Bab Ezzouar"
},
"items": [
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"product_name": "Robe kabyle",
"attributes": {
"Taille": "M"
},
"quantity": 1,
"unit_price": 4500,
"subtotal": 4500
}
],
"total_amount": 5000,
"shipping_fee": 500,
"payment_method": "COD",
"notes": null,
"tracking_number": null,
"shipping_company": null,
"shipping_status": null,
"created_at": "2026-10-30T09:12:44+00:00",
"updated_at": "2026-10-30T09:31:02+00:00",
"changed": [
"customer_address",
"total_amount"
]
}
{
"id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"status": "confirmed",
"source": "api",
"customer_name": "Amina Benali",
"customer_phone": "0555123456",
"customer": {
"name": "Amina Benali",
"phone": "0555123456",
"address": "Cité 200 Logements, Bt 4",
"wilaya": "16",
"commune": "Bab Ezzouar"
},
"items": [
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"product_name": "Robe kabyle",
"attributes": {
"Taille": "M"
},
"quantity": 1,
"unit_price": 4500,
"subtotal": 4500
}
],
"total_amount": 5000,
"shipping_fee": 500,
"payment_method": "COD",
"notes": null,
"tracking_number": null,
"shipping_company": null,
"shipping_status": null,
"created_at": "2026-10-30T09:12:44+00:00",
"updated_at": "2026-10-30T09:31:02+00:00",
"previous_status": "pending_confirmation"
}
{
"id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"status": "confirmed",
"source": "api",
"customer_name": "Amina Benali",
"customer_phone": "0555123456",
"customer": {
"name": "Amina Benali",
"phone": "0555123456",
"address": "Cité 200 Logements, Bt 4",
"wilaya": "16",
"commune": "Bab Ezzouar"
},
"items": [
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"product_name": "Robe kabyle",
"attributes": {
"Taille": "M"
},
"quantity": 1,
"unit_price": 4500,
"subtotal": 4500
}
],
"total_amount": 5000,
"shipping_fee": 500,
"payment_method": "COD",
"notes": null,
"tracking_number": null,
"shipping_company": null,
"shipping_status": null,
"created_at": "2026-10-30T09:12:44+00:00",
"updated_at": "2026-10-30T09:31:02+00:00"
}
{
"id": 81423,
"order_id": "0199a3c2-6f1e-7d55-9c1a-2b8f6e4d1a07",
"call_status": "answered",
"duration_in_seconds": 74,
"called_at": "2026-10-30T09:30:12+00:00"
}
{
"id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"name": "Robe kabyle",
"sku": "ROBE-KAB-M",
"price": 4500,
"stock_quantity": 12,
"is_active": true,
"attributes": {
"Taille": [
"S",
"M",
"L"
]
},
"updated_at": "2026-10-30T09:31:02+00:00"
}
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"sku": "ROBE-KAB-M",
"old_quantity": 13,
"new_quantity": 12
}
{
"product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
"sku": "ROBE-KAB-M",
"old_quantity": 1,
"new_quantity": 0
}
{
"id": 5521,
"name": "Karim Haddad",
"phone": "0661234567",
"email": null,
"wilaya": "31",
"commune": "Oran",
"source": "api",
"created_at": "2026-10-30T08:02:19+00:00"
}
{
"message": "This is a test delivery from Rassmi."
}
The other order status events send the same data as order.confirmed, with their status; product.updated and product.deleted send the product like product.created.