product.priceChanged

product.priceChanged

⚠️

Deprecated

This event has been superseded by product.updated. Price changes are now reported with product.updated as well, and that event covers every change related to a product, not only the price.

product.priceChanged still works and both events are sent together. We recommend migrating your integration to product.updated; this event will be retired once the migration is complete.

This event is triggered when a product's sales price changes in a restaurant.

Price list updates, direct price changes on a product, branch specific prices being defined or removed, and bulk price imports via Excel all trigger this event. It does not matter whether the change was made from the head office application or from the branch's own Adisyo application; the event is sent in both cases.

The event is produced whenever a price is saved; saving the same amount again also produces an event. No comparison is made.

Payload Structure

The payload carries only the ids of the products whose price changed. Read the current prices from the /Menu endpoint.

A single save operation can affect more than one product (price list update, bulk Excel import), so products are listed in the productIds array. When a single product changes, the array contains one element.

{
  "eventId": "9c1f0a2d-4b7e-4c1a-9f52-1d8e6b3a7c04",
  "webhookEventType": "product.priceChanged",
  "eventTimeUtc": "2025-10-21T11:59:50.1855135Z",
  "data": {
    "productIds": [2230902, 2230903, 2230904]
  },
  "restaurantIdentity": "3edc2d46-bfc0-44d1-b701-f18e56306aed"
}

Data Fields

FieldTypeDescription
productIdsarray(number)Ids of the products whose price changed. Same as productId in the /Menu response

restaurantIdentity identifies the branch the change belongs to; the event is always branch scoped. If an operation affects several branches (for example a price list update from head office), a separate event is sent for each branch.

Usage

When you receive the event, call /Menu for that branch and read the current prices of the products in productIds. The menu returns the branch specific price when one is defined, otherwise the price from the price list the branch is bound to — so you always get the price that is effective in that branch.

The productIds array is used for single product changes too; you do not need separate handling for scalar and bulk cases.

Closing a product for sale does not produce a price event; product.statusChanged is triggered instead.