Skip to content
Merchant guide
HTTPS · Signed events

order.status_changed — first-generation event (flat fields + envelope)

It pushes every order status change — confirmation, preparation, shipping, cancellation — with a before/after snapshot and a sequence number that uniquely identifies each transition.

Reviewed against implementation
YOUR INTEGRATION, AT A GLANCE
order.status_changed — full payload example
{
  "order_id": "3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa",
  "receipt_number": "RCP-20261020-1482",
  "order_type": "DELIVERY",
  "order_source": "WEBSITE",
  "status": "SHIPPED",
  "customer_name": "Ahmed Mahmoud",
  "customer_phone": "+201001234567",
  "delivery_address": "15 El-Tahrir St., Dokki, Giza",
  "table_number": null,
  "branch_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "payment_method": "COD",
  "coupon_code": "WELCOME10",
  "total_amount": 624,
  "tax_amount": 62,
  "shipping_fee": 50,
  "discount_amount": 50,
  "created_at": "2026-10-20T12:34:56.789147+00:00",
  "items": [
    {
      "product_id": "7a2b9c4e-8f31-4d5a-b6c2-1e9f8a7b6c5d",
      "variant_id": "2c4e6f8a-0b1d-4e2f-8a3b-5c6d7e8f9a0b",
      "name": "Cotton T-shirt - Blue / L",
      "price": 225,
      "quantity": 2
    },
    {
      "product_id": "9d8c7b6a-5f4e-4d3c-2b1a-0f9e8d7c6b5a",
      "variant_id": null,
      "name": "Summer cap",
      "price": 112,
      "quantity": 1
    }
  ],
  "items_truncated": false,
  "previous_status": "CONFIRMED",
  "changed_at": "2026-10-20T13:05:11.402318+00:00",
  "id": "mwh:order-status:9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b:3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa:2",
  "type": "order.status_changed",
  "api_version": "v2",
  "tenant_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b"
}
See the implementation
On this page

01When does it fire?

  • On every real status transition of an existing order — from any path (dashboard, POS, API, payment confirmations).
  • A same-value write generates no event — the transition must be real.
  • The transition system legally allows returning to an old status (CONFIRMED then PENDING then CONFIRMED again) — the sequence number, not the status pair, is what makes each transition unique.

02Full payload example

order.status_changed — full payload example
{
  "order_id": "3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa",
  "receipt_number": "RCP-20261020-1482",
  "order_type": "DELIVERY",
  "order_source": "WEBSITE",
  "status": "SHIPPED",
  "customer_name": "Ahmed Mahmoud",
  "customer_phone": "+201001234567",
  "delivery_address": "15 El-Tahrir St., Dokki, Giza",
  "table_number": null,
  "branch_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "payment_method": "COD",
  "coupon_code": "WELCOME10",
  "total_amount": 624,
  "tax_amount": 62,
  "shipping_fee": 50,
  "discount_amount": 50,
  "created_at": "2026-10-20T12:34:56.789147+00:00",
  "items": [
    {
      "product_id": "7a2b9c4e-8f31-4d5a-b6c2-1e9f8a7b6c5d",
      "variant_id": "2c4e6f8a-0b1d-4e2f-8a3b-5c6d7e8f9a0b",
      "name": "Cotton T-shirt - Blue / L",
      "price": 225,
      "quantity": 2
    },
    {
      "product_id": "9d8c7b6a-5f4e-4d3c-2b1a-0f9e8d7c6b5a",
      "variant_id": null,
      "name": "Summer cap",
      "price": 112,
      "quantity": 1
    }
  ],
  "items_truncated": false,
  "previous_status": "CONFIRMED",
  "changed_at": "2026-10-20T13:05:11.402318+00:00",
  "id": "mwh:order-status:9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b:3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa:2",
  "type": "order.status_changed",
  "api_version": "v2",
  "tenant_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b"
}

03Payload fields

FieldCan be null?Meaning
previous_statusNoThe order status before the transition.
statusNoThe order status after the transition.
changed_atNoThe change time, ISO 8601.

04Event identity

Pattern: mwh:order-status:<tenant_id>:<order_id>:<seq> — note the historical order-status prefix (NOT order-status-changed), kept as-is because working consumers build dedupe on it. <seq> is the per-order status-transition ordinal (1, 2, 3…). The emitter serializes same-order writes on the order row lock — the count is a stable monotonic identity.