Skip to content

product/status_updated

Overview

PropertyValue
Webhook typeproduct/status_updated
Kafka topicproduct.status-updated
DirectionPlatform → 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 DRAFT status)

Status Values

StatusDescription
DRAFTNewly created, not yet published
ACTIVEPublished and available in the catalog
ARCHIVEDRemoved from the active catalog but retained for history
DISABLEDTemporarily disabled
HOLDOn 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

FieldTypeNullableDescription
idstring (uuid)NoUnique product identifier
organizationIdstring (uuid)NoOrganization that owns this product
titlestringYesProduct display name
descriptionstringYesProduct description
slugstringYesURL-friendly identifier
statusenumYesUpdated status: DRAFT, ACTIVE, ARCHIVED, DISABLED, HOLD
scopeenumNoGLOBAL or LOCAL
modelenumNoPRODUCT or BUNDLE
fragilebooleanNoFragile handling flag
suspendedbooleanNoSuspension flag
heatSensitivebooleanNoCold-chain requirement flag
parcelsintegerNoNumber of shipping parcels
pricefloatYesBase price (tax-exclusive)
vatRatefloatYesVAT rate
currencystringYesISO 4217 currency code
supplierIdstring (uuid)YesSupplier identifier
vendorIdstring (uuid)YesVendor identifier
preparationProfileIdstring (uuid)YesPreparation profile
createdAtstring (ISO 8601)NoCreation timestamp
updatedAtstring (ISO 8601)NoLast 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"
  }
}

Notes

  • The organizationId is read directly from data.organizationId.
  • Both product/status_updated and product/updated are fired when a status changes.
  • Archiving a product does not automatically archive its variants.

HappyColis API Documentation