HOOK inventory.adjusted

Snapcaster 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

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": 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-Timestamp string required

Unix seconds when the request was signed; reject if outside a ±5 minute window.

X-Snapcaster-Signature string required

sha256= + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).

Delivery payload

The signed inventory.adjusted event.

Payload type: InventoryAdjustedEvent

Envelope fields

event_id string required

A globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).

Example evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV

type string required

The event type. Future inventory events use the same envelope (STABLE).

Constraints: allowed values: inventory.adjusted Example inventory.adjusted

created_at string required

ISO-8601 UTC instant the event was generated; unchanged across retries (STABLE).

Example 2026-09-04T18:42:18.000Z

data InventoryAdjustedData required

The operation or event payload.

api_version string required

The 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-10 Example 2026-10

Payload fields

data.seller_id integer required

The seller that owns the API key. Use this id to route the event to the right store (STABLE).

Example 42

data.lines InventoryAdjustedLine[] required

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.lines[].sku_id integer required

Canonical TCGplayer SKU id, the same id the listing push uses (STABLE).

Example 14602

data.lines[].external_ref string or null required

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-1042

data.lines[].delta integer required

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.reason string

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, correction Example sale

data.order_ref string

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.