Skip to main content
Product Webhooks
P
Written by Product Sticky
Updated over a week ago

This guide explains how to configure and utilize product webhooks to receive real-time notifications about product-related events in your system.

Available Events

Your system will be notified about 3 types of product changes:

  • When a new product is created (product.created)

  • When a product's information is changed (product.updated)

  • When a product is removed (product.deleted)

These notifications work the same way for both regular products and product bundles, making it easier for you to manage your inventory.

Event Details (product.created)

This webhook fires when a new product is successfully created in the system.

How to Trigger the Event

Through the CRM Product UI:

  • Click "Actions" and then "Add" to create a new product

  • Use the "Copy" option from an existing product's menu

Through the APIs:

  • Use the V1 API to create or copy endpoints

  • Use the V2 API to add product endpoints.

  • Use the V2 API to Import products through our product import feature.

What Information Will You Receive?

The notification you receive will depend on what type of product was created. Let's look at each type with their complete examples.

This example shows all the details you'll receive when a regular product is created. Notice how it includes everything from basic product information to detailed variant specifications:

Regular Products -Decrypted JSON Encoded Payload

{
"clientAppKey": "app_key_here",
"type": "product.created",
"time": "2024-12-18 11:17:23",
"data": {
"id": "3116862f-0656-4a07-9bfd-fb32e954d0cf",
"object": {
"id": 49,
"name": "Laptop",
"sku": "9360XPS13I",
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Mag01"
},
"max_quantity": 10,
"description": "product description!",
"images": [
{
"id": 4,
"uuid": "83035138-5ec2-4dca-a8bc-28519d5a310f",
"alias": "20_fondo",
"created_at": "2024-12-18T14:24:26.000000Z",
"updated_at": "2024-12-18T14:24:26.000000Z",
"path": "https://assets.qa1.sticky.io/images/originals/2024-12-18-09-00-00/0yQO0IdV6Qa0euFxtTESgpDb0j7lhWYuViydSbSy.png",
"is_default": 0,
"is_default_email": 0
}
],
"custom_fields": [
{
"id": 1,
"field_type_id": 1,
"name": "custom field name here",
"token_key": "test_product_field",
"is_multi": 0,
"type_id": 3,
"values": [
{
"option_id": 0,
"value": "custom field value here",
"name": "custom field name here"
}
]
}
],
"is_taxable": 1,
"tax_code": "123456ABC",
"digital_download_url": "your_url_here.com",
"is_shippable": 1,
"created_at": "2024-12-17T19:36:56-05:00",
"updated_at": "2024-12-18T09:25:19-05:00",
"type": "product",
"price": "10.0000",
"cost_of_goods": "0.00",
"restocking_fee": "0.00",
"variants": [
{
"id": 7,
"price": "10.0000",
"quantity": 10,
"weight": 4,
"sku_num": "9360XPS13",
"attributes": [
{
"id": 15,
"attribute": {
"id": 8,
"name": "color",
"option": {
"id": 9,
"name": "blue"
}
}
},
{
"id": 16,
"attribute": {
"id": 11,
"name": "size",
"option": {
"id": 12,
"name": "small"
}
}
}
],
"images": []
}
]
},
"created": "2024-12-18 11:17:20",
"triggeringEvent": "",
"correlationId": "f6cb5c1f-9ec8-4211-a00a-5fd06fc01956"
}
}
Pre-built Bundles - Decrypted JSON Encoded Payload
Here's what you'll receive when a pre-built bundle is created. Notice how it includes information about the bundled products and pricing model:
{
"clientAppKey": "app_key_here",
"type": "product.created",
"time": "2024-12-18 11:36:32",
"data": {
"id": "9309e050-9147-4a56-9bd6-ce3af8d8fe85",
"object": {
"id": 21,
"name": "Laptop”,
"sku": "9360XPSI3TB”,
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Mag01"
},
"max_quantity": 10,
"description": "",
"images": [],
"custom_fields": [],
"is_taxable": 0,
"tax_code": null,
"digital_download_url": "",
"is_shippable": 0,
"created_at": "2024-12-18T08:15:28-05:00",
"updated_at": "2024-12-18T08:15:28-05:00",
"type": "bundle",
"bundle_type": "Custom Built",
"use_children_sku": 1,
"price": "10.0000",
"pricing_model_id": 1,
"max_items": 10,
"products": [
{
"id": 12,
"name": ”Mobile",
},
{
"id": 16,
"Name": ”Mobile01",
},
{
"id": 20,
"name": ”Mobile02",
}
]
},
"created": "2024-12-18 11:36:32",
"triggeringEvent": "",
"correlationId": "1469bf2e-db4c-4fc5-94f5-c9c403e8f5c9"
}
}

Custom-built Bundles - Decrypted JSON Encoded Payload

When you create a custom-built bundle, you'll receive information about the customization options and included products. Here's a complete example:

{
"clientAppKey": "app_key_here",
"type": "product.created",
"time": "2024-12-18 11:33:46",
"data": {
"id": "58f8af49-b37e-49f0-8838-e28ccb1d5cfd",
"object": {
"id": 21,
"name": "Laptop”,
"sku": ”93960XPS13",
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Mag01"
},
"max_quantity": 10,
"description": "",
"images": [],
"custom_fields": [],
"is_taxable": 0,
"tax_code": null,
"digital_download_url": "your_url_here.com",
"is_shippable": 0,
"created_at": "2024-12-18T08:15:28-05:00",
"updated_at": "2024-12-18T08:15:28-05:00",
"type": "bundle",
"bundle_type": "Custom Built",
"use_children_sku": 1,
"price": "10.0000",
"pricing_model_id": 1,
"pricing_model": "custom",
"max_items": 10,
"products": [
{
"id": 12,
"name": ”Phone",
},
{
"id": 16,
"name": “Computer”,
},
{
"id": 20,
"name": "Mouse”
}
]
},
"created": "2024-12-18 11:33:46",
"triggeringEvent": "",
"correlationId": "f68679c6-0e48-4ce7-93de-5acab0ea5cb6"
}
}

Event Details(product.updated)

This webhook fires when an existing product is updated, including changes to its details or attributes.

How to Trigger the Event

Through the CRM Product UI:

  • Click the edit option for a product, make your changes, and save

Through the APIs:

  • Use the V1 API's update endpoint for product update.

  • Use any of these V2 API endpoints:

    • Update product endpoint

    • Add product custom field values endpoint

    • Updateproduct custom field values endpoint

    • Delete product custom field values endpoint

What Information Will You Receive?

The update notifications are structured similarly to creation notifications. Let's look at examples for each type:

Regular Products - Decrypted JSON Encoded Payload

When you update a regular product, you'll receive a complete snapshot of the product's current state:

{
"clientAppKey": "app_key_here",
"type": "product.updated",
"time": "2024-12-18 14:35:08",
"data": {
"id": "bd0d5813-4442-40c1-bc68-16172e5ff27c",
"object": {
"id": 20,
"name": "Laptop”,
"sku": "9360XPSI3TB”,
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Mag01"
},
"max_quantity": 10,
"description": "description!",
"images": [
{
"id": 4,
"uuid": "83035138-5ec2-4dca-a8bc-28519d5a310f",
"alias": "20_fondo",
"created_at": "2024-12-18T14:24:26.000000Z",
"updated_at": "2024-12-18T14:24:26.000000Z",
"path": "https://assets.qa1.sticky.io/images/originals/2024-12-18-09-00-00/0yQO0IdV6Qa0euFxtTESgpDb0j7lhWYuViydSbSy.png",
"is_default": 0,
"is_default_email": 0
}
],
"custom_fields": [
{
"id": 1,
"field_type_id": 1,
"name": "test product field",
"token_key": "test_product_field",
"is_multi": 0,
"type_id": 3,
"values": [
{
"option_id": 0,
"value": ""custom field value here",
"name": "custom field name here"
}
]
}
],
"is_taxable": 1,
"tax_code": "123456ABC",
"digital_download_url": "your_url_here.com",
"is_shippable": 1,
"created_at": "2024-12-17T19:36:56-05:00",
"updated_at": "2024-12-18T09:25:19-05:00",
"type": "product",
"price": "10.0000",
"cost_of_goods": "0.00",
"restocking_fee": "0.00",
"variants": [
{
"id": 7,
"price": "10.0000",
"quantity": 10,
"weight": 4,
"sku_num": "9382829AJ1",
"attributes": [
{
"id": 15,
"attribute": {
"id": 8,
"name": "color",
"option": {
"id": 9,
"name": "blue"
}
}
},
{
"id": 16,
"attribute": {
"id": 11,
"name": "size",
"option": {
"id": 12,
"name": "small"
}
}
}
],
"images": []
}
]
},
"created": "2024-12-18 14:35:08",
"triggeringEvent": "",
"correlationId": "8d44d290-3afb-4450-a2a2-96282781e48e"
}
}

Pre-built Bundles - Decrypted JSON Encoded Payload

When updating a pre-built bundle, you'll get information about the updated bundle configuration:

{
"clientAppKey": "app_key_here",
"type": "product.updated",
"time": "2024-12-18 14:35:45",
"data": {
"id": "12cc0080-4624-461a-9359-05a4bec51bb8",
"object": {
"id": 17,
"name": "Laptop",
"sku": "9360XPSI3TB”,
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Mag01"
},
"max_quantity": 10,
"description": "",
"images": [],
"custom_fields": [],
"is_taxable": 0,
"tax_code": null,
"digital_download_url": "your_url_here.com",
"is_shippable": 0,
"created_at": "2024-12-16T08:47:36-05:00",
"updated_at": "2024-12-18T08:22:16-05:00",
"type": "bundle",
"bundle_type": "Pre-built",
"use_children_sku": 1,
"price": "10.0000",
"pricing_model_id": 2,
"cost_of_goods": "0.00",
"restocking_fee": "0.00",
"products": [
{
"quantity": 1,
"id": 15,
"name": "Keyboard”,
},
{
"quantity": 1,
"id": 16,
"name": ”Mouse"
}
]
},
"created": "2024-12-18 14:35:45",
"triggeringEvent": "",
"correlationId": "e2478453-2fdf-4e82-b7f6-27e781696c1b"
}
}

Custom-built Bundles - Decrypted JSON Encoded Payload

Updates to custom-built bundles will return the current state of the bundle configuration:

{
"clientAppKey": "app_key_here",
"type": "product.updated",
"time": "2024-12-18 14:36:43",
"data": {
"id": "90a18e48-40d6-4b09-99e3-10e5a94ccb55",
"object": {
"id": 21,
"name": "Laptop”,
"sku": "9360XPSI3TB”,
"vertical": {
"id": 1,
"name": "Art, Photo & Music"
},
"category": {
"id": 5,
"name": "Magazine",
"description": "Product Description"
},
"max_quantity": 10,
"description": "",
"images": [],
"custom_fields": [],
"is_taxable": 0,
"tax_code": null,
"digital_download_url": "your_url_here.com",
"is_shippable": 0,
"created_at": "2024-12-18T08:15:28-05:00",
"updated_at": "2024-12-18T08:15:28-05:00",
"type": "bundle",
"bundle_type": "Custom Built",
"use_children_sku": 1,
"price": "10.0000",
"pricing_model_id": 1,
"max_items": 10,
"products": [
{
"id": 12,
"name":”Computer"
},
{
"id": 16,
"name": "Mouse”
},
{
"id": 20,
"name": ”Mobile"
}
]
},
"created": "2024-12-18 14:36:43",
"triggeringEvent": "",
"correlationId": "f0dbae6b-1ebf-4306-bec4-ff603c5041eb"
}
}

Event Details(product.deleted)

This webhook fires when a product is permanently deleted from the system.

How to Trigger the Event

Through the CRM Product UI:

  • Select the delete option from the product's menu

Through the APIs:

  • Use the V1 API to delete endpoints.

  • Use the V2 API to delete endpoints.

What Information Will You Receive?

The delete notification is much simpler than the others, as it only needs to tell you which product was removed:

{
"clientAppKey": "app_key_here",
"type": "product.deleted",
"time": "2024-12-18 14:48:11",
"data": {
"id": "77bb7244-bc4b-4a77-b9d4-cd2c8b7e66a5",
"object": {
"id": 20
},
"created": "2024-12-18 14:48:11",
"triggeringEvent": "",
"correlationId": "d586e07b-dadb-46e5-9536-fe5308b6968b"
}
}

Understanding the Payload

Every webhook notification includes these key pieces of information:

  • clientAppKey: This identifies your application

  • type: Tells you what happened (created, updated, or deleted)

  • time: Indicates the exact time the change occurred, recorded in Eastern time.

  • data: Contains all the details about what changed

  • correlationId: A unique identifier to help track this specific change

Best Practices

  • Always check the type field first to determine how to handle the notification

  • For created and updated events, the structure stays the same, which makes processing easier

  • Store the id values - they're essential for linking notifications to your local data

  • Pay attention to timestamps for accurate record-keeping

Did this answer your question?