> ## 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.

# Deals and Bundles

> Build meal deals and bundles on a storekit menu — like 2 pizzas for £15.99 or a cake with required size and flavour choices — using a product and modifier groups.

A deal — "2 pizzas for £15.99", "any main + side + drink for £12", a cake with a size, flavour and topping to pick — is built from an ordinary product and modifier groups. The product carries the fixed deal price; each choice the customer makes is a required modifier group.

This works on menus you build in storekit. On a POS-synced menu, build the deal in your POS and let it sync — see [POS Menu Sync](https://storekit.com/docs/guides/menu/pos-menu-sync.md).

> [!NOTE]
>
> A deal is a single item the customer adds to their basket. There is no "buy any 2 eligible items and get a cheaper price" engine — if the offer combines items the customer orders separately, use a [discount code](https://storekit.com/docs/guides/discounts/discount-codes.md) instead.

## The Pattern

| Deal | Product | Modifier groups |
| - | - | - |
| 2 pizzas for £15.99 | "2 Pizzas Deal" at £15.99 | "Choose your pizzas" — **Exactly** 2, options Margherita, Pepperoni… at £0 |
| Main + side + drink for £12 | "Lunch Meal Deal" at £12.00 | Three groups: "Choose your main", "Choose your side", "Choose your drink" — each **Exactly** 1 |
| Gelato cake, £25 | "Gelato Cake" at £25.00 | "Choose your size" — **Exactly** 1 with priced options; "Choose your flavour" — **Exactly** 1; "Add toppings" — **Up to** 3 |

Every option inside the deal usually costs £0 — the customer already paid for it in the product's price. Charge for an option only when it costs extra on top of the deal (a premium flavour, a larger size).

## Setting Up a Deal

**1. Create the product at the deal price**

Go to **Menus**, click **Edit** on the menu, and click **Add product** in the category. Give it the deal name and set **Price** to the full deal price (£15.99 for "2 pizzas for £15.99").

**2. Add a modifier group for each choice**

In the product's **Modifiers** tab, under **Add a modifier group**, click **Create a new group**. Name it for the choice ("Choose your pizzas"), then click **+ Add option** inside the group for each option — one per pizza on the deal — and set each **Price** to £0.

**3. Make the group required with the right count**

Under **How many options can customers choose?**, pick **Exactly** and enter the number the deal includes (2 for a two-pizza deal). **Exactly**, **At least** and **Between** make the group required, so the customer cannot buy the deal without completing it.

**4. Allow the same option twice where it makes sense**

Under **Can customers pick the same option more than once?**, choose **Yes** so a customer can pick "2x Margherita" instead of being forced onto two different pizzas. Leave it on **No** when each pick must be different.

**5. Save group, then repeat**

Click **Save group** and repeat for each remaining choice (sides, drinks). Then check the deal on your live menu: the customer should not be able to add it to the basket without completing every required group.

> [!WARNING]
>
> Saving an option creates the group, but clicking **Create a new group** again adds a *second* group — not another option. Options are added inside the group with **+ Add option**. If you end up with several near-empty groups on the product, remove the extras with **Remove group**.

## Included vs Extras

Two ways to price "some choices included, some extra":

* **Separate groups.** Put the included choices in one required group at £0 ("Choose your flavour" — Exactly 1), and chargeable extras in a second, optional group ("Extra toppings" — **Up to** 3, each with a **Price**). This is the simplest structure and covers most deals.
* **Free options on one group.** Where enabled on your account, the **Free options** field (*Included in the price*) makes the first N selections free and charges for the rest — good for "3 toppings included, £1 each after". See [Free Modifiers](https://storekit.com/docs/guides/menu/free-modifiers.md).

## Choices Inside Choices

When a pick leads to a further pick — a sauce choice that only applies to one flavour, or toppings that only apply to one size — nest the second group under the option. On a storekit-built menu a nested group must be attached **both** to the product (like any other group) **and** under the parent option's **Sub-Modifiers** tab (**Edit option** → **Add a sub-modifier group**). Attaching it under the option alone is not enough: if it isn't also on the product, nothing appears on the ordering page. The full walkthrough is in [Nested Modifiers](https://storekit.com/docs/guides/menu/nested-modifiers.md).

## Troubleshooting

> [accordion] My deal shows as several separate modifier groups instead of one list of options
>
> You clicked **Create a new group** for each option. Options belong inside one group: open the group, use **+ Add option** for each choice, and remove the spare groups with **Remove group**.

> [accordion] A nested choice doesn't appear on the ordering page
>
> The sub-modifier group is assigned under the option but not attached to the product. Open the product's **Modifiers** tab and attach it there too with **Use an existing group** → **Add group to product**. See [Nested Modifiers](https://storekit.com/docs/guides/menu/nested-modifiers.md).

> [accordion] Customers can't pick the same flavour twice
>
> The group still has **Can customers pick the same option more than once?** set to **No**. Switch it to **Yes**, or **Up to…** to cap each option — see [Multi Max](https://storekit.com/docs/guides/menu/multi-max.md).

> [accordion] I want the deal to appear only at certain times or on certain days
>
> Deals follow the product's availability like anything else. For a deal that only runs at certain times of day, put it in a category with its own weekly hours — see [Categories](https://storekit.com/docs/guides/menu/categories.md). There is no way to schedule a single product for a time-of-day window.


## Related topics

- [Menu Structure](https://storekit.com/docs/guides/menu-engineering/menu-structure.md)
- [Promotional Banners](https://storekit.com/docs/guides/marketing/promotional-banners.md)
- [Order Limits](https://storekit.com/docs/guides/orders/advanced/order-limits.md)
- [Buy X Get Y Discounts](https://storekit.com/docs/guides/discounts/buy-x-get-y.md)
- [Zonal (Aztec)](https://storekit.com/docs/guides/integrations/pos/zonal.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.