Skip to content

(71) Inventory Changed By Shop

POST

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.
Media typeapplication/json
object
type
required

The ID of the webhook type.

integer
Allowed value: 71
tts_notification_id
required

The notification ID.

string
shop_id
required

The shop ID.

string
timestamp
required

The time when the webhook is triggered, expressed as a Unix timestamp.

integer format: int64
data
required

The inventory change event data.

object
event_id
required

An identifier for the inventory event; use it to deduplicate events.

string
occurred_at
required

The event time in UTC, formatted as ISO 8601.

string format: date-time
shop_id
required

The ID of the shop whose inventory changed.

integer format: int64
product_id
required

The ID of the affected product.

integer format: int64
sku_id
required

The ID of the affected SKU.

integer format: int64
quantity_snapshot_after_change
required

The SKU inventory quantities after the change.

object
total_quantity
required

Total inventory: total_available_quantity + total_committed_quantity.

integer format: int64
total_available_quantity
required

Available inventory, including quantities reserved for campaigns and creator collaborations.

integer format: int64
total_committed_quantity
required

Inventory committed to orders that have not yet shipped.

integer format: int64
in_shop_quantity
required

Available shop inventory: total_available_quantity - campaign_locked_quantity - creator_locked_quantity.

integer format: int64
campaign_locked_quantity
required

Inventory reserved for marketing campaigns.

integer format: int64
creator_locked_quantity
required

Inventory reserved for creator collaborations.

integer format: int64
change_detail
required

The individual inventory changes associated with the event.

Array<object>
object
idempotency_key
required

An identifier for an individual change; use it to deduplicate change details.

string
trigger_source
required

The cause of the change. See the trigger sources in Section 1.

string
occurred_at
required

The UTC time of the individual change.

string format: date-time
total_quantity_delta
required

The change in total_quantity.

integer format: int64
available_quantity_delta
required

The change in total_available_quantity.

integer format: int64
committed_quantity_delta
required

The change in total_committed_quantity.

integer format: int64
in_shop_quantity_delta
required

The change in in_shop_quantity.

integer format: int64
campaign_locked_quantity_delta
required

The change in campaign_locked_quantity.

integer format: int64
creator_locked_quantity_delta
required

The change in creator_locked_quantity.

integer format: int64
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
}
]
}
}

Return HTTP 200 to acknowledge receipt.