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

# Stream Menu Sync

> How Stream publishes menus into storekit: what triggers an import, what gets imported, how variations and modifiers map, and what storekit overwrites.

Stream is the source of truth for a Stream-connected store's menu. Whenever a location's menu is published in Stream, Stream notifies storekit and storekit downloads and imports it. There is no sync button in storekit and no schedule to set — the menu updates when you publish in Stream.

## When the Menu Updates

storekit imports the menu when Stream sends a **publish** event for the location. The import runs in the background: storekit downloads the published menu file, uploads any new images, then rewrites the store's menu to match. Publishing again while an import for the same menu is still running is skipped, so wait for the first import to finish (a lock is held for up to 30 minutes) before re-publishing.

### Requesting a Re-Publish

If the storekit menu looks out of date, [contact storekit support](/docs/getting-started/contact-support). Support clicks **Refresh Menu** on the store's **Stream Integration** page, which asks Stream to re-publish the location's latest menu — the dashboard confirms with *Menu refresh requested* and *Stream will re-publish the latest menu shortly*. The import itself still runs when Stream publishes, so allow a few minutes.

<Note>
  There is no **Sync** button on a Stream-managed menu in the storekit menu editor, and Stream is not shown as a card on **Stores** → your store → **Settings** → **Integrations** for merchant logins. See [POS Menu Sync](/docs/guides/menu/pos-menu-sync) for how this compares with other providers.
</Note>

## What Gets Imported

Each Stream menu becomes one storekit menu on the store, matched by its Stream ID. The first publish creates the menu (named after the Stream menu); later publishes update it and its name.

| Stream                         | storekit                               | Notes                                                                                                                                                            |
| ------------------------------ | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Menu                           | Menu                                   | One storekit menu per Stream menu. The menu's schedule becomes the storekit menu's availability hours.                                                           |
| Category                       | Category                               | Order follows the Stream menu. A category schedule becomes category availability hours and turns off *always open* for that category.                            |
| Item family with one item      | Item                                   | Name, description, price, image, allergens and alcohol flag come from the item family; the item's Stream ID is stored as the storekit SKU.                       |
| Item family with several items | Item with a required *variation* group | The item is priced at 0 and gets a first modifier group (named after the family, min 1 / max 1) with one option per item. Stream's default item is pre-selected. |
| Modifier group                 | Modifier group                         | Minimum, maximum and single/multiple selection rules are kept, as are default quantities.                                                                        |
| Modifier                       | Modifier option                        | Price, active state, image and translations. Modifiers can carry nested modifier groups, which are imported as further groups.                                   |
| Menu-specific price override   | Item price                             | If the item has an active override for this Stream menu, that price is used instead of the base price.                                                           |
| Tax                            | Item tax rate                          | Stream tax rates are stored against each item.                                                                                                                   |
| Translations                   | Name and description translations      | Per locale, for menus, categories, items, variations, modifier groups and modifiers.                                                                             |
| Allergens                      | Item tags                              | Stream allergen codes are mapped to storekit allergen tags. Unknown codes are skipped.                                                                           |
| `is_alcohol`                   | Alcohol tag                            | Adds or removes the alcohol tag on the item.                                                                                                                     |
| Prep time                      | Store prep time                        | If the publish includes a prep time in minutes, it's written to the store's delivery and collection prep times.                                                  |

Images are copied into storekit's image storage on import, so they keep working if the Stream URL changes.

## Stream Overwrites the storekit Menu

Every publish rewrites the menu from Stream:

* Names, descriptions, prices, images, availability, tags and translations are replaced with Stream's values.
* Categories, items, variations and modifier groups that are no longer in the published menu are deleted from the storekit menu.
* Because the menu is POS-managed, categories and items can't be added in the storekit menu editor — trying to add one shows *You can't add a new category here. Please create new items in your POS*. Make menu changes in Stream and publish.

Snoozes and stock counts follow their own rules — see [Stock & Availability](/docs/guides/integrations/pos/stream/stock-and-availability).

## Limitations

* **No subcategories** — Stream categories import as a flat list.
* **No manual or scheduled sync** from storekit; publishing in Stream is the only trigger (support can request a re-publish).
* **Import happens per menu.** If a location publishes several menus, each is imported in turn, and each is locked separately.
* **Items missing from the published file are skipped**, and any Stream IDs storekit can't match are logged rather than failing the import — check the storekit menu after publishing if something looks absent.

## Next Steps

<CardGroup cols={2}>
  <Card title="Stock & Availability" icon="boxes-stacked" href="/docs/guides/integrations/pos/stream/stock-and-availability">
    Availability and stock changes between publishes
  </Card>

  <Card title="Orders" icon="receipt" href="/docs/guides/integrations/pos/stream/orders">
    How imported items and modifiers appear on orders sent to Stream
  </Card>
</CardGroup>


## Related topics

- [Stream](/docs/guides/integrations/pos/stream/overview.md)
- [POS Menu Sync](/docs/guides/menu/pos-menu-sync.md)
- [Stream Troubleshooting](/docs/guides/integrations/pos/stream/troubleshooting.md)
- [Toast Menu Sync](/docs/guides/integrations/pos/toast/menu-sync.md)
- [Lightspeed Menu Sync](/docs/guides/integrations/pos/lightspeed/menu-sync.md)
