API reference · Webhooks
Inventory adjusted
inventory.adjustedSnapcaster sends inventory.adjusted whenever an order moves stock: a sale (negative), a cancellation or a restocking refund (positive), and an accepted substitution (one of each). Each line contains a signed delta; apply it as on_hand += delta. Use seller_id to route the event to the right store.
Verify and deduplicate by event_id before applying the adjustment. Deliveries may repeat, and applying the same delta twice changes stock twice. Signing and delivery behavior match order.created; see https://developers.snapcaster.ca/guide/webhook-signing. The data body differs.
Return 2xx only after applying the stock change to durable stock state. Acknowledgement permits a newer accepted stock snapshot to release the corresponding committed hold. Merely queueing the event does not acknowledge the stock change. If you cannot save the change, return non-2xx so Snapcaster retries. Fields are marked STABLE or PROVISIONAL. Ignore unknown fields.
Example
{
"event_id": "evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV",
"type": "inventory.adjusted",
"created_at": "2026-09-04T18:42:18.000Z",
"data": {
"seller_id": 42,
"lines": [
{
"sku_id": 14602,
"external_ref": "platform-listing-1042",
"delta": -1
}
],
"reason": "sale",
"order_ref": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW"
},
"api_version": "2026-10"
}Signature headers
Snapcaster sends a POST to your webhook endpoint with these headers. Webhook signing shows how to verify them.
X-Snapcaster-Timestampstring requiredUnix seconds when the request was signed; reject if outside a ±5 minute window.
X-Snapcaster-Signaturestring requiredsha256=+ lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).
Delivery payload
The signed inventory.adjusted event.
Payload type: Inventory
Envelope fields
event_idstring requiredA globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).
Example
evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NVtypestring requiredThe event type. Future inventory events use the same envelope (STABLE).
Constraints: allowed values:
inventory.adjustedExampleinventory.adjustedcreated_atstring requiredISO-8601 UTC instant the event was generated; unchanged across retries (STABLE).
Example
2026-09-04T18:42:18.000ZdataInventoryrequiredAdjusted Data The operation or event payload.
api_versionstring requiredThe dated API version used for this payload, frozen when Snapcaster queued the delivery. Changing the platform pin does not change queued events or retries; they keep the same version. See https://developers.snapcaster.ca/guide/api-versioning (STABLE).
Constraints: allowed values:
2026-10Example2026-10
Payload fields
data.integer requiredseller_id The seller that owns the API key. Use this id to route the event to the right store (STABLE).
Example
42data.lines InventoryrequiredAdjusted Line[] The adjustment lines for one order. Each sale has one event and one
event_id(STABLE).Constraints: minimum items: 1
Show child fieldsHide child fields
data.integer requiredlines[]. sku_id Canonical TCGplayer SKU id, the same id the listing push uses (STABLE).
Example
14602data.string or null requiredlines[]. external_ref The seller's listing reference, returned unchanged so you can match the adjustment to your own record. Null if none was supplied (STABLE).
Example
platform-listing-1042data.integer requiredlines[]. delta The stock adjustment in units. A negative value deducts a sale; a positive value restores a cancellation or restocked refund. Deduplicate the event, then apply
on_hand += delta(STABLE).Example
-1
data.stringreason Why stock changed. You can apply the delta without using this field. Handle unknown values because the enum may expand (PROVISIONAL).
Constraints: allowed values:
sale,cancellation,refund,correctionExamplesaledata.stringorder_ref An order reference for support and debugging. A POS that only manages inventory can ignore it (PROVISIONAL).
Example
ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW
Receiver response
200 - Return 2xx only after applying the stock adjustment to durable stock state; queueing it does not acknowledge it. After this acknowledgement, a newer accepted stock snapshot releases the matching committed hold.