product/status_updated
Overview
| Property | Value |
|---|---|
| Webhook type | product/status_updated |
| Kafka topic | product.status-updated |
| Direction | Platform → Your endpoint |
Description
Fired when the status of a product changes. Product status controls catalog visibility and eligibility for order creation.
Trigger Conditions
- A product is published and transitions to
ACTIVE - A product is archived (
ARCHIVED) - A product is disabled (
DISABLED) - A product is placed on hold (
HOLD) - A draft product is created (initial
DRAFTstatus)
Status Values
| Status | Description |
|---|---|
DRAFT | Newly created, not yet published |
ACTIVE | Published and available in the catalog |
ARCHIVED | Removed from the active catalog but retained for history |
DISABLED | Temporarily disabled |
HOLD | On hold pending review or action |
Message Envelope
json
{
"header": {
"organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "product/status_updated",
"date": "2024-03-15T10:23:45.000Z"
},
"body": { ... }
}The body field contains the full product object with the updated status.
Body — Property Table
Product Object
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string (uuid) | No | Unique product identifier |
organizationId | string (uuid) | No | Organization that owns this product |
title | string | Yes | Product display name |
description | string | Yes | Product description |
slug | string | Yes | URL-friendly identifier |
status | enum | Yes | Updated status: DRAFT, ACTIVE, ARCHIVED, DISABLED, HOLD |
scope | enum | No | GLOBAL or LOCAL |
model | enum | No | PRODUCT or BUNDLE |
fragile | boolean | No | Fragile handling flag |
suspended | boolean | No | Suspension flag |
heatSensitive | boolean | No | Cold-chain requirement flag |
parcels | integer | No | Number of shipping parcels |
price | float | Yes | Base price (tax-exclusive) |
vatRate | float | Yes | VAT rate |
currency | string | Yes | ISO 4217 currency code |
supplierId | string (uuid) | Yes | Supplier identifier |
vendorId | string (uuid) | Yes | Vendor identifier |
preparationProfileId | string (uuid) | Yes | Preparation profile |
createdAt | string (ISO 8601) | No | Creation timestamp |
updatedAt | string (ISO 8601) | No | Last update timestamp |
Full JSON Payload Sample
json
{
"header": {
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"messageId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"webhookId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"type": "product/status_updated",
"date": "2024-03-15T10:23:45.000Z"
},
"body": {
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Classic White T-Shirt",
"description": "100% cotton unisex t-shirt.",
"slug": "classic-white-t-shirt",
"status": "ARCHIVED",
"scope": "GLOBAL",
"model": "PRODUCT",
"fragile": false,
"suspended": false,
"heatSensitive": false,
"parcels": 1,
"price": 25.00,
"vatRate": 0.20,
"currency": "EUR",
"supplierId": null,
"vendorId": "e5f6a7b8-c9d0-1234-efab-345678901234",
"preparationProfileId": null,
"createdAt": "2024-03-15T10:23:45.000Z",
"updatedAt": "2024-03-20T09:00:00.000Z"
}
}Related Events
product/updated— also fired when the product is updatedvariant/status_updated— variants may also have their status updated independently
Notes
- The
organizationIdis read directly fromdata.organizationId. - Both
product/status_updatedandproduct/updatedare fired when a status changes. - Archiving a product does not automatically archive its variants.