Skip to content

product/updated ​

Overview ​

PropertyValue
Webhook typeproduct/updated
Kafka topicproduct.updated
DirectionPlatform → Your endpoint

Description ​

Fired when any field on an existing product is updated. This includes changes to title, description, pricing, handling attributes, and assignments.

Trigger Conditions ​

  • A product's title, description, or slug is edited
  • Pricing (price, vatRate, currency) is changed
  • Handling attributes (fragile, heatSensitive, parcels) are modified
  • A vendor or supplier is assigned or changed
  • The preparation profile is updated

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/updated",
    "date": "2024-03-15T10:23:45.000Z"
  },
  "body": { ... }
}

The body field contains the full updated product object.

Body — Property Table ​

Product Object ​

FieldTypeNullableDescription
idstring (uuid)NoUnique product identifier
organizationIdstring (uuid)NoOrganization that owns this product
titlestringYesProduct display name
descriptionstringYesProduct description text
slugstringYesURL-friendly identifier (unique per organization)
statusenumYesDRAFT, 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 as decimal
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/updated",
    "date": "2024-03-15T14:45:00.000Z"
  },
  "body": {
    "id": "d4e5f6a7-b8c9-0123-defa-234567890123",
    "organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "title": "Classic White T-Shirt — Summer Edition",
    "description": "100% organic cotton unisex t-shirt, available in multiple sizes.",
    "slug": "classic-white-t-shirt",
    "status": "ACTIVE",
    "scope": "GLOBAL",
    "model": "PRODUCT",
    "fragile": false,
    "suspended": false,
    "heatSensitive": false,
    "parcels": 1,
    "price": 27.50,
    "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-15T14:45:00.000Z"
  }
}

Notes ​

  • The payload always contains the full current state of the product, not a diff.
  • The organizationId is read directly from data.organizationId.
  • Status changes also emit a dedicated product/status_updated event in addition to this product/updated event.

HappyColis API Documentation