variant/model_changed
Overview
| Property | Value |
|---|---|
| Webhook type | variant/model_changed |
| Kafka topic | variant.model-changed |
| Direction | Platform → Your endpoint |
Description
Fired when the model type of a variant changes — for example, from a standard PRODUCT to a BUNDLE.
Trigger Conditions
- A variant's model type is changed via the API
- A product variant is converted to or from a bundle configuration
Model Values
| Model | Description |
|---|---|
PRODUCT | Standard single-item variant |
BUNDLE | Bundle — a composite of multiple items shipped together |
Message Envelope
json
{
"header": {
"organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "variant/model_changed",
"date": "2024-03-15T10:23:45.000Z"
},
"body": { ... }
}The body field contains the full variant with the updated model field.
Body — Property Table
Variant Object
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string (uuid) | No | Unique variant identifier |
organizationId | string (uuid) | No | Organization that owns this variant |
productId | string (uuid) | No | Parent product identifier |
title | string | Yes | Variant display name |
reference | string | No | Internal reference code |
sku | string | No | Stock keeping unit |
model | enum | No | Updated model: PRODUCT or BUNDLE |
status | enum | Yes | DRAFT, ACTIVE, ARCHIVED, DISABLED, HOLD |
sourceType | enum | No | CMS or APP |
virtualProduct | boolean | No | Virtual product flag |
price | float | Yes | Variant price |
vatRate | float | Yes | VAT rate |
currency | string | Yes | ISO 4217 currency code |
weight | float | Yes | Weight |
weightUnit | enum | Yes | Unit for weight |
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": "variant/model_changed",
"date": "2024-03-15T10:23:45.000Z"
},
"body": {
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"productId": "e5f6a7b8-c9d0-1234-efab-345678901234",
"title": "Summer Bundle Pack",
"description": "T-shirt + shorts combo",
"reference": "REF-SUMMER-BUNDLE",
"sku": "SUMMER-BUNDLE-M",
"barcode": null,
"model": "BUNDLE",
"status": "ACTIVE",
"sourceType": "CMS",
"sourceId": null,
"position": 1,
"virtualProduct": false,
"price": 45.00,
"vatRate": 0.20,
"currency": "EUR",
"height": null,
"width": null,
"length": null,
"distanceUnit": null,
"weight": 0.50,
"weightUnit": "KG",
"publishedAt": "2024-03-10T08:00:00.000Z",
"createdAt": "2024-03-15T09:00:00.000Z",
"updatedAt": "2024-03-15T10:23:45.000Z"
}
}Related Events
variant/updated— general update event also fired on model changes
Notes
- The
organizationIdis read directly fromdata.organizationId. - Changing a variant's model from
PRODUCTtoBUNDLEmay require configuring bundle component links separately.