Skip to content
snapcasterDevelopers

Inventory adjusted (Snapcaster → Platform)

Sent when an Order commits units on Snapcaster: one `inventory.adjusted` event per Order, carrying a signed per-sku `delta` for every line, so the Platform moves its on-hand with one handler (`on_hand += delta`). Each event carries `seller_id` so the Platform can route it to the right store. Signing, verification, and delivery semantics are identical to `order.created` (see https://developers.snapcaster.ca/guide/webhook-signing); only the `data` body differs. Dedup on `event_id`: delivery is at-least-once, and an undeduped `on_hand += delta` double-applies on a retry. **Ack = durably applied**: return 2xx only after the stock change is durably written (or durably enqueued). Snapcaster releases its Committed hold on your 2xx; if you cannot apply the delta, return non-2xx so it retries. Fields are tagged STABLE / PROVISIONAL; treat the payload as open and ignore unknown fields.

Delivery payload

The signed `inventory.adjusted` event.

Delivery payload: Signed Inventory Delivery payload
{
"event_id": "evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV",
"type": "inventory.adjusted",
"created_at": "2026-09-04T18:42:18.000Z",
"data": {
"seller_id": 42,
"lines": [
{
"sku_id": 427286,
"external_ref": "platform-listing-1042",
"delta": -1
}
],
"reason": "sale",
"order_ref": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW"
},
"api_version": "2026-07"
}

Signature headers

FieldInTypeConstraintsMeaningExample
X-Snapcaster-TimestamprequiredheaderstringNoneUnix seconds when the request was signed; reject if outside a ±5 minute window.string (generated)
X-Snapcaster-SignaturerequiredheaderstringNone`sha256=` + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).string (generated)

Envelope fields

FieldTypeConstraintsMeaningExample
event_idrequiredstringNoneGlobally unique, stable across retries; the idempotency/dedup key (STABLE).evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV
typerequiredstringallowed values: inventory.adjustedEvent discriminator; future inventory events reuse this envelope (STABLE).inventory.adjusted
created_atrequiredstringNoneISO-8601 UTC instant the event was generated; unchanged across retries (STABLE).2026-09-04T18:42:18.000Z
datarequiredobjectNoneThe operation or event payload.{ "seller_id": 42, "lines": [ { "sku_id": 427286, "external_ref": "platform-listing-1042", "delta": -1 } ], "reason": "sale", "order_ref": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW" }
api_versionrequiredstringallowed values: 2026-07The dated partner API version this payload was serialized at: the version frozen when the delivery was enqueued (never the live pin), so every retry carries the same value and byte-identical bytes. Added additively per the tolerant-reader rule; see https://developers.snapcaster.ca/guide/api-versioning (STABLE).2026-07

Receiver response

200 - Receiver acked: the delta is durably applied (or durably enqueued to apply), not merely received. Snapcaster releases the matching Committed hold against this acknowledgement.