Skip to main content
product.updated is an incremental event. The products in the payload are added or updated in each target downstream system — existing products not included in the payload are left untouched. To remove a product, send a menu.updated event with the full menu excluding that product. When a product change affects multiple stores, Fire emits a single event with all affected stores listed in targets. Your system iterates the targets and applies the same product data to each one.

Payload

{
  "event": "product.updated",
  "id": "evt_ghi789",
  "created_at": "2025-01-15T14:32:00Z",
  "data": {
    "account": "1",
    "country": "6",
    "targets": [
      {
        "storeId": "805",
        "channelId": "0E049503-85CF-E511-80C6-000D3A3261F3",
        "listName": "Menu App"
      },
      {
        "storeId": "806",
        "channelId": "0E049503-85CF-E511-80C6-000D3A3261F3",
        "listName": "Menu App"
      }
    ],
    "products": [
      {
        "productId": "prod_001",
        "name": "Classic Burger",
        "description": "Beef patty, lettuce, tomato, pickles",
        "standardTime": true,
        "featured": false,
        "type": "PRODUCT",
        "priceInfo": {
          "price": 1200,
          "salePrice": 1000,
          "suggestedPrice": 1200,
          "suggestedPointPrice": 0
        },
        "taxesInfo": [
          {
            "vatRatePercentage": 12,
            "name": "VAT",
            "type": "VAT"
          }
        ],
        "productModifiers": [
          {
            "modifierId": "mod_001",
            "position": 1
          }
        ],
        "schedules": [
          {
            "day": "FRIDAY",
            "startDate": "2025-01-01",
            "endDate": "2025-12-31",
            "startTime": "10:00",
            "endTime": "22:30"
          }
        ],
        "images": [
          {
            "imageCategoryId": "img_prod_001",
            "fileUrl": "https://cdn.example.com/products/classic-burger.jpg"
          }
        ],
        "upselling": ["prod_002"],
        "crossSelling": ["prod_003"],
        "tags": ["bestseller"],
        "additionalInfo": {}
      }
    ],
    "modifierGroups": [
      {
        "modifierId": "mod_001",
        "modifier": "Choose your size",
        "minOptions": 1,
        "maxOptions": 1,
        "visible": true,
        "position": 1,
        "type": "single",
        "modifierOptions": [
          {
            "optionId": "opt_001",
            "productId": "prod_size_small",
            "default": true,
            "position": 1
          }
        ]
      }
    ],
    "categories": [
      {
        "categoryId": "cat_001",
        "categoryName": "Burgers",
        "displayInList": true,
        "featured": false,
        "crossSellingCategory": false,
        "position": 1,
        "images": [],
        "childCategories": [],
        "productListing": [
          {
            "productId": "prod_001",
            "position": 1
          }
        ],
        "schedules": []
      }
    ]
  }
}

Fields

data

FieldTypeDescription
accountstringAccount identifier — required by downstream systems
countrystringCountry identifier — required by downstream systems
targetsobject[]Stores where the products must be updated
productsobject[]Products to add or update
modifierGroupsobject[]Modifier groups referenced by the products
categoriesobject[]Categories affected by the product changes

data.targets[n]

FieldTypeDescription
storeIdstringStore where the products must be updated
channelIdstringSales channel UUID
listNamestringDisplay name of the menu in that store

data.products[n]

FieldTypeDescription
productIdstringProduct identifier
namestringProduct name
descriptionstringProduct description
standardTimebooleanWhether standard preparation time applies
featuredbooleanWhether the product is featured
typestringPRODUCT, MODIFIER, or COMPLEMENT
priceInfoobjectPricing information
priceInfo.pricenumberRegular price
priceInfo.salePricenumberDiscounted price
priceInfo.suggestedPricenumberSuggested regular price
priceInfo.suggestedPointPricenumberSuggested points price
taxesInfoobject[]Tax configuration
productModifiersobject[]Modifier group references with positions
schedulesobject[]Time-based availability
imagesobject[]Product images
upsellingstring[]Product IDs suggested as upsells
crossSellingstring[]Product IDs suggested as cross-sells
tagsstring[]Product tags
additionalInfoobjectExtra metadata

data.modifierGroups[n]

Same structure as in menu.updated.

data.categories[n]

Same structure as in menu.updated.

Incremental behavior

SituationResult
Product in payload, exists downstreamUpdated
Product in payload, doesn’t exist downstreamCreated
Product not in payload, exists downstreamLeft untouched
Remove a productSend a full menu.updated without it

Usage

See Product publication for the full handling guide.