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