Skip to main content

Introduction

This section defines the complete schemas for every event related to SKUs (Stock Keeping Units) on Webround Commerce. The SKU represents the minimum sellable and traceable unit in the warehouse, uniquely linked to a product variant. This is where critical information regarding pricing, stock availability, and sales logic is managed.

Why Listen to SKU Events

Integrating SKU events allows you to manage the following in real-time:

  • Multi-Warehouse Stock Synchronization: Immediate update of available quantities between Webround and your management systems (ERP/WMS).
  • Price and Currency Management: Monitoring of price lists, comparison prices (sales), and different payment cadences.
  • Sales Logic and Backorders: Automation of processes based on product availability, including backorder days and order quantity limits.
  • Tax Integration (Stripe): Alignment of external tax codes for automatic tax calculation at checkout.

Complete Events and Payload Table

Below is the complete table with all links to the respective JSON examples:

EventPayload SchemaJSON Example
product-sku.createdSKU SchemaLink
product-sku.updatedSKU SchemaLink
product-sku.deletedSKU Deleted SchemaLink
product-sku.stock.replacedSKU Stock SchemaLink
product-sku.prices.replacedSKU Prices SchemaLink

SKU Schema (productSkuCreatedSchema)

FieldTypeNotes
iduuidRequired. Unique SKU ID
storeIduuidRequired. Associated store ID
productIduuidRequired. Parent product ID
variantIduuidRequired. Linked variant ID
skustringRequired. Identification code (Stock Keeping Unit)
isFavouritebooleanRequired. Favorite flag
externalIdstring - nullReference ID in external systems (e.g., ERP)
useStripeTaxbooleanAutomatic tax calculation via Stripe Tax
taxCodeExternalIdstring - nullExternal tax code (Stripe Tax Code)
purchaseRestockbooleanEnable stock replenishment on purchase
allowBackorderbooleanAllow purchase even if out of stock
allowFreeShippingbooleanEnable free shipping eligibility
forceFreeShippingbooleanAlways force free shipping for this SKU
backorderDaysnumberEstimated days for backorder replenishment
maxOrderQuantitynumberMaximum purchasable quantity per single order
createdAtisoDateRequired
updatedAtisoDateRequired

SKU Example

{
"envelopeId": "a1b2c3d4-e5f6-4a5b-b6c7-d8e9f0a1b2c3",
"eventType": "product-sku.created",
"initiatedBy": "[email protected]",
"storeId": "7292a83e-967b-4861-80a5-2964e52003c4",
"occurredAt": "2026-02-22T23:10:00.000Z",
"data": {
"id": "c1d2e3f4-g5h6-4a5b-b6c7-d8e9f0a1b2c3",
"storeId": "7292a83e-967b-4861-80a5-2964e52003c4",
"productId": "5a90f5ed-2785-44df-958b-841d0148a711",
"variantId": "b2c3d4e5-f6g7-4a5b-b6c7-d8e9f0a1b2c3",
"sku": "WR-TSHIRT-BLU-XL",
"isFavourite": true,
"externalId": "SKU-9988-EXT",
"useStripeTax": true,
"taxCodeExternalId": "txcd_99999999",
"purchaseRestock": true,
"allowBackorder": false,
"allowFreeShipping": true,
"forceFreeShipping": false,
"backorderDays": 0,
"maxOrderQuantity": 10,
"createdAt": "2026-02-22T23:10:00.000Z",
"updatedAt": "2026-02-22T23:10:00.000Z"
},
"eventId": "e4f5g6h7-i8j9-4a5b-b6c7-d8e9f0a1b2c3"
}


SKU Deleted Schema (productSkuDeletedSchema)

FieldTypeNotes
productIduuidRequired
variantIduuidRequired
skuIduuidRequired

SKU Deleted Example

{
"envelopeId": "b2c3d4e5-f6g7-4a5b-b6c7-d8e9f0a1b2c3",
"eventType": "product-sku.deleted",
"storeId": "7292a83e-967b-4861-80a5-2964e52003c4",
"occurredAt": "2026-02-22T23:15:00.000Z",
"data": {
"productId": "5a90f5ed-2785-44df-958b-841d0148a711",
"variantId": "b2c3d4e5-f6g7-4a5b-b6c7-d8e9f0a1b2c3",
"skuId": "c1d2e3f4-g5h6-4a5b-b6c7-d8e9f0a1b2c3"
},
"eventId": "f5g6h7i8-j9k0-4a5b-b6c7-d8e9f0a1b2c3"
}


SKU Stock Schema (productSkuStockReplacedSchema)

FieldTypeNotes
productIduuidRequired
variantIduuidRequired
skuIduuidRequired
stockobject[]Required. Array of stock levels per warehouse
stock[].warehouseIduuidRequired. Warehouse ID
stock[].quantitynumberRequired. Available integer quantity

SKU Stock Example

{
"envelopeId": "c3d4e5f6-g7h8-4a5b-b6c7-d8e9f0a1b2c3",
"eventType": "product-sku.stock.replaced",
"initiatedBy": "[email protected]",
"storeId": "7292a83e-967b-4861-80a5-2964e52003c4",
"occurredAt": "2026-02-22T23:20:00.000Z",
"data": {
"productId": "5a90f5ed-2785-44df-958b-841d0148a711",
"variantId": "b2c3d4e5-f6g7-4a5b-b6c7-d8e9f0a1b2c3",
"skuId": "c1d2e3f4-g5h6-4a5b-b6c7-d8e9f0a1b2c3",
"stock": [
{
"warehouseId": "w1z2x3c4-v5b6-4n7m-8a9s-d0f1g2h3j4k5",
"quantity": 150
},
{
"warehouseId": "w9z8x7c6-v5b4-4n3m-2a1s-d0f9g8h7j6k5",
"quantity": 45
}
]
},
"eventId": "g6h7i8j9-k0l1-4a5b-b6c7-d8e9f0a1b2c3"
}


SKU Prices Schema (productSkuPricesReplacedSchema)

FieldTypeNotes
productIduuidRequired
variantIduuidRequired
skuIduuidRequired
pricesobject[]Required. List of applied price lists
prices[].currencyCodestringRequired. ISO currency code (e.g., "EUR")
prices[].cadencestringRequired. Payment frequency (e.g., "once", "month")
prices[].amountstringRequired. Price in decimal string format
prices[].comparePricestring - nullOriginal price for discount display
prices[].externalIdstring - nullExternal price system ID (e.g., Stripe Price ID)
prices[].isDefaultbooleanRequired. Identifies the primary price
prices[].quantityTableany - nullTable for quantity discounts (Tiered Pricing)

SKU Prices Example

{
"envelopeId": "d4e5f6g7-h8i9-4a5b-b6c7-d8e9f0a1b2c3",
"eventType": "product-sku.prices.replaced",
"storeId": "7292a83e-967b-4861-80a5-2964e52003c4",
"occurredAt": "2026-02-22T23:25:00.000Z",
"data": {
"productId": "5a90f5ed-2785-44df-958b-841d0148a711",
"variantId": "b2c3d4e5-f6g7-4a5b-b6c7-d8e9f0a1b2c3",
"skuId": "c1d2e3f4-g5h6-4a5b-b6c7-d8e9f0a1b2c3",
"prices": [
{
"currencyCode": "EUR",
"cadence": "once",
"amount": "29.90",
"comparePrice": "39.90",
"externalId": "price_1Gs9X2L...",
"isDefault": true,
"quantityTable": null
}
]
},
"eventId": "h7i8j9k0-l1m2-4a5b-b6c7-d8e9f0a1b2c3"
}