01When does it fire?
- When a receipt (RECEIPT) movement is recorded on a product or variant.
- Sale and return movements generate no inventory events — the per-line order and return events already cover them.
02Full payload example
{
"id": "mwh:inventory-received:9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b:a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"type": "inventory.received",
"api_version": "v2",
"tenant_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b",
"data": {
"movement_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"item_type": "VARIANT",
"item_id": "2c4e6f8a-0b1d-4e2f-8a3b-5c6d7e8f9a0b",
"item_name": "Cotton T-shirt - Blue / L",
"movement_type": "RECEIPT",
"quantity": 50,
"quantity_before": 12,
"quantity_after": 62,
"reason": "Received from supplier",
"reference_type": null,
"reference_id": null,
"created_at": "2026-10-20T14:20:09.960135+00:00"
}
}03data fields
| Field | Meaning |
|---|---|
| movement_id | The inventory movement id (UUID). |
| item_type | The item kind: PRODUCT or VARIANT. |
| item_id / item_name | The item id and name. |
| movement_type | The movement type — RECEIPT for this event. |
| quantity | The movement quantity (positive on receipts). |
| quantity_before / quantity_after | The quantity before and after the movement. |
| reason | The free-form movement reason (capped at 500 chars). |
| reference_type / reference_id | The movement reference when linked to a document — null otherwise. |
| created_at | The movement time, ISO 8601. |
04Event identity
Pattern: mwh:inventory-received:<tenant_id>:<movement_id> — once per movement.
COMPLETE YOUR INTEGRATION
