> For the complete documentation index, see [llms.txt](https://modutheme.gitbook.io/helix/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://modutheme.gitbook.io/helix/how-to-guides/how-to-set-up-a-product-bundle.md).

# How to set up a product bundle

The **Product bundle** section shows a fixed set of products beside one image, and adds them all to the cart with a single button. Turn on **Pricing** and it also shows the bundle total and how much the customer saves.

![Product bundle overview](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-8718f86f1ad68a66eed55fdc0f0c9d1bf42c5a4b%2Fhow-to-product-bundle-overview.png?alt=media)

{% hint style="warning" %}
Helix only **displays** the total and the savings. The real discount is applied by a native **Shopify automatic discount** that you create separately. The block settings must mirror that discount exactly, or the total will not match the checkout total.
{% endhint %}

The Product bundle pairs with an **Amount off products** automatic discount, scoped to the products in the bundle. This guide walks through one worked example: **10% off when a customer buys all three products in the bundle.** An **Amount off order** discount works too, but it comes off the whole cart — so a customer carrying anything else saves more than this section advertises.

***

## Step 1 — Create the Shopify discount

In Shopify admin, go to [**Discounts → Create discount**](https://help.shopify.com/en/manual/discounts/discount-types/percentage-fixed-amount) and choose **Amount off products**, then set the **Method** to **Automatic**. For our example, enter:

* **Discount value** — `10%` off
* **Applies to** — the three products in the bundle, or a collection that holds exactly those products
* **Minimum requirement** — Minimum quantity of items → `3`

Save it, and note the values — you re-enter them in the theme so the total matches.

![Creating a 10%-off automatic discount in Shopify admin](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-fd73f54b0039bc67bf8a49364a8214dff0563f58%2Fhow-to-product-bundle-discount.png?alt=media)

{% hint style="info" %}
A Shopify automatic discount applies to **any** cart that meets its conditions, not only carts filled from this section. To keep the saving exclusive to this bundle, point **Applies to** at a collection that contains nothing else.
{% endhint %}

***

## Step 2 — Add the products to the section

Add the **Product bundle** section, then add one **Product** block per item and pick the product for each. These are the products the **Add all to cart** button adds in one go.

Keep this list and the discount's **Applies to** in sync — a product here that the discount does not cover inflates the advertised saving.

![Adding a Product block per item in the section](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-63f20b23b1c283d077ef0b021dc0f549a7aad29f%2Fhow-to-product-bundle-products.png?alt=media)

***

## Step 3 — Match the discount in the Product list block

Open the **Product list** block → **Pricing**, and enter the same numbers as the discount above:

* **Show total** — On
* **Show discount** — On
* **Discount method** — Percentage
* **Discount percentage** — `10`

Each setting reveals the next, so work down the list in order.

![Matching the discount in the Pricing settings](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-ea5a2ec8741bd425100dad8a0bea2ebabc191923%2Fhow-to-product-bundle-pricing.png?alt=media)

{% hint style="info" %}
For a money-off discount instead, set **Discount method** to **Fixed amount** and enter the amount in **Discount value** — `10` means 10 of your store's default currency, not 10%. Helix converts it for customers browsing in another currency, and never advertises a saving larger than the bundle total.
{% endhint %}

{% hint style="info" %}
The total leaves out any row whose selected variant is sold out, and any subscription-only product — those cannot go through the one-click bulk add, so they are not advertised in the price either.
{% endhint %}

***

## Result

On the storefront, the section lists the three products with their prices. Below them the total row shows the price **after** the 10% discount, with a **Save $x.xx** pill beside it. Both update live as customers switch variants.

![Storefront product bundle showing the discounted total and saving](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-fdde8588f4c364481be521fb0add97cce5b533e6%2Fhow-to-product-bundle-result.png?alt=media)

When the bundle is added to the cart, the Shopify automatic discount applies the real 10% — matching the previewed saving exactly.

![Cart showing the same 10% discount applied](https://3215967854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlyCMfKbEVTf3hu8uxjSZ%2Fuploads%2Fgit-blob-c92d88ccb1c7960e2eb6c500b8147d89f6247215%2Fhow-to-product-bundle-result-cart.png?alt=media)

{% hint style="info" %}
The Pricing settings only preview the price inside the section. The actual saving is always applied by the Shopify automatic discount at checkout.
{% endhint %}

{% hint style="info" %}
To set the layout, image position, product card styling, and the hotspots on the image, see [Product bundle](/helix/global-sections/products/product-bundle.md).
{% endhint %}

***

{% hint style="info" icon="headset" %}
**Need help?**

Whether you have a question, run into an issue, or just need some guidance, our support team is here to help.

<a href="https://go.crisp.chat/chat/embed/?website_id=6c25581e-794a-41b4-8552-52f3de1dd1f7" class="button secondary" data-icon="comments">Chat with us</a> <a href="https://modutheme.ticksy.com" class="button primary" data-icon="ticket">Submit a ticket</a>
{% endhint %}
