> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Product publication

> Handle product update events from Fire.

When one or more products change in Fire, Fire emits two types of product events:

| Event                                                                                | When                                                         |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
| [`product.updated`](/en/webhook-reference/product-updated)                           | Product data changed (name, price, images, modifiers, etc.)  |
| [`product.availability_changed`](/en/webhook-reference/product-availability-changed) | A product was activated or deactivated in one or more stores |

Both events use the same `targets[]` pattern — a single event covers all stores where the product appears.

**Product updates are incremental** — products in the payload are added or updated, never deleted. To remove a product from a menu, Fire sends a full [`menu.updated`](/en/guides/menu-publication) event without that product.

## Comparison with store and menu events

| Event                            | Behavior                                          |
| -------------------------------- | ------------------------------------------------- |
| `store.updated` / `menu.updated` | Full replacement                                  |
| `product.updated`                | Incremental — only products in the payload change |

## Handling the event

```json theme={null}
{
  "event": "product.updated",
  "data": {
    "targets": [
      { "storeId": "805", "channelId": "...", "listName": "Menu App" },
      { "storeId": "806", "channelId": "...", "listName": "Menu App" }
    ],
    "products": [ ... ],
    "modifierGroups": [ ... ],
    "categories": [ ... ]
  }
}
```

`targets` lists every store and menu that must receive the update. The product data is the same for all targets.

See [`product.updated`](/en/webhook-reference/product-updated) for the full schema.

<Steps>
  <Step title="Verify the signature">
    Validate `X-Fire-Signature`. See [Authentication](/en/authentication).
  </Step>

  <Step title="Acknowledge immediately">
    Return `200 OK` before processing.
  </Step>

  <Step title="Iterate targets">
    For each entry in `targets`, identify the store and menu in your downstream system.
  </Step>

  <Step title="Add or update products">
    Apply `products`, `modifierGroups`, and `categories` to each target. Do not remove any existing products not present in the payload.
  </Step>
</Steps>
