This webhook is triggered when a SKU’s inventory quantity changes in a shop. Each notification identifies the affected shop, product, and SKU, and includes an inventory snapshot after the change together with the individual change details. Prerequisite: The “Product Basic” API scope is enabled in Partner Center. For more information, refer to Access Scope. The following events trigger this webhook when they cause an inventory quantity change:
| Trigger source | Description |
|---|---|
order_created |
An order is successfully placed, and inventory is committed to the order. |
order_canceled |
A buyer or seller cancels an order, and the committed inventory is released back to available stock. |
order_shipped |
An order is shipped, and the committed inventory is deducted. |
manual_adjustment |
A seller manually adjusts inventory in Seller Center. |
api_sync |
A developer updates inventory through an inventory-related OpenAPI. |
campaign_lock |
A seller joins a platform marketing campaign, and inventory is locked for the campaign. |
campaign_unlock |
A marketing campaign ends or a seller withdraws, and the locked inventory is released. |
creator_lock |
A seller allocates exclusive inventory to a creator collaboration. |
creator_unlock |
A creator collaboration ends, and the locked inventory is released. |
system_auto_replenish |
The system automatically replenishes inventory, such as after an order fails due to an exception. |
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
The ID of the webhook type.
The notification ID.
The shop ID.
The time when the webhook is triggered, expressed as a Unix timestamp.
The inventory change event data.
object
An identifier for the inventory event; use it to deduplicate events.
The event time in UTC, formatted as ISO 8601.
The ID of the shop whose inventory changed.
The ID of the affected product.
The ID of the affected SKU.
The SKU inventory quantities after the change.
object
Total inventory: total_available_quantity + total_committed_quantity.
Available inventory, including quantities reserved for campaigns and creator collaborations.
Inventory committed to orders that have not yet shipped.
Available shop inventory: total_available_quantity - campaign_locked_quantity - creator_locked_quantity.
Inventory reserved for marketing campaigns.
Inventory reserved for creator collaborations.
The individual inventory changes associated with the event.
object
An identifier for an individual change; use it to deduplicate change details.
The cause of the change. See the trigger sources in Section 1.
The UTC time of the individual change.
The change in total_quantity.
The change in total_available_quantity.
The change in total_committed_quantity.
The change in in_shop_quantity.
The change in campaign_locked_quantity.
The change in creator_locked_quantity.
Example
{ "type": 71, "tts_notification_id": "7327112393057371910", "shop_id": "7494049642642441621", "timestamp": 1775122114, "data": { "event_id": "inventory_event_001", "occurred_at": "2026-04-02T09:28:34Z", "shop_id": 7494049642642441000, "product_id": 1891234567890123500, "sku_id": 1729507467923261400, "quantity_snapshot_after_change": { "total_quantity": 100, "total_available_quantity": 80, "total_committed_quantity": 20, "in_shop_quantity": 65, "campaign_locked_quantity": 10, "creator_locked_quantity": 5 }, "change_detail": [ { "idempotency_key": "inventory_change_001", "trigger_source": "manual_adjustment", "occurred_at": "2026-04-02T09:28:34Z", "total_quantity_delta": 4, "available_quantity_delta": 4, "committed_quantity_delta": 0, "in_shop_quantity_delta": 4, "campaign_locked_quantity_delta": 0, "creator_locked_quantity_delta": 0 } ] }}Responses
Section titled “Responses”Return HTTP 200 to acknowledge receipt.