Creating Product Bundles offers

Creating compelling Product Bundles is a powerful strategy to increase your store’s conversion rate and average order value. By grouping complementary products together, you make it easier for customers to discover items they didn’t know they needed—boosting both engagement and revenue.

Let’s walk through how to create high-converting Product Bundle offers using the Vitals Upsell Builder.

💡 Got a question about our Upsell Offers? We have a list of frequently asked questions about our Upsell Offers that you can check here: Upsell Builder FAQs

✅ Why Use Product Bundles?

  • 📈 Boost average order value (AOV)
  • 🛍️ Encourage customers to buy related items together
  • 🔍 Expose lesser-known products in your store
  • 💡 Enhance user experience with relevant product suggestions

✨ Tip: You can use Product Bundles alongside other Vitals upsell offers. If both apply to the same products in the cart, the higher discount will automatically be applied. Learn more.

⚙️ Getting Started with Product Bundles

Step 1: Open the Product Bundles App

  • From your Shopify admin, go to Vitals > Apps > Upsell Builder.
  • Click Create offer, then choose Product Bundles.
  • Pick the layout you want for the bundle widget — Compact or Full size.

🧩 Building your bundle

The bundle editor is a single page. There are no wizard steps to click through, and nothing goes live until you press Save. Working down the page you will find Internal name, Applies to, Bundled products, Discount, Visibility & schedule, Placements and Add to cart redirect. A live preview sits on the right and updates as you make changes.

Applies to: the product that triggers the bundle

The Applies to card holds the product a shopper has to be looking at for the bundle to appear. Set it to All products, or to Specific products or collections to choose exactly which ones.

Bundled products: the rest of the set

The Bundled products card holds everything you are pairing with the trigger product. Each group contributes one product to the bundle, and the groups are numbered Group #1, Group #2 and so on.

  • A bundle holds between 2 and 5 products in total — the Applies to product, plus one to four groups.
  • Use Add another group to add one. Each group's header also has two icons: a copy icon that duplicates the group directly below the original, and a bin icon that removes it (a bundle always keeps at least one group). Once the bundle reaches five products, Add another group and the copy icon both disappear.
  • Once you have two or more groups, drag a group by its handle to change their order. The Applies to product always stays first.
  • A collapsed group shows a short recap of what it holds, such as Smart match or Specific selection.

What a group can hold:

  • Specific products or collections – you pick exactly what goes in
  • Smart match – recommends a product related to the one the shopper is viewing, using Shopify’s Product Recommendation engine.
    • With Shopify's Product Recommendations engine, it recommends products to the customer dynamically, depending on several factors such as (but not limited to):
    • Purchase History - Products that have historically been purchased together.
    • Product description: Products with similar descriptions.
    • Related collections: Products from collections that the current product is part of.- Note: Shopify's Product Recommendations engine can only fetch a maximum of 10 products.
  • Same collection as the product the customer is viewing – adds a product from the collection the shopper is already browsing

The Applies to card is the exception: it offers All products or Specific products or collections only. Smart match and Same collection become available from Group #1 onward.

The preview on the right shows how your bundle will look. Use the tabs above it to switch between placements.

Optional: let customers swap products in the bundle

Each group contributes one product, and the shopper can never add items, remove items or change quantities. What you can let them choose is which product fills a group.

Every group that has more than one product to offer carries its own checkbox, Let customers pick their own discounted product, just below that group's product picker. It is ticked by default on new groups. In a bundle you created before this option existed, each group starts out the way the whole bundle was set up before: ticked if shoppers could already swap products, unticked if they couldn't. Untick it on any group whose product should stay fixed. While it's on, a Pick another button appears under that group's product on your store, letting the shopper replace it with another product from that same group — a shirt for a pair of pants, chocolate for vanilla.

What swapping does not change:

  • The number of items stays the same. A 3-product bundle is always 3 products.
  • Quantities stay at one per group. There is no quantity selector for shoppers.
  • The Applies to product is never swappable. It is the product the shopper is already viewing, so it is always locked in.

The checkbox only appears on a group that actually offers a choice: one set to Smart match or Same collection, one holding a collection, or one holding more than one specific product. A group holding a single specific product has nothing to swap to, so it has no checkbox.

🛑 Note: Swapping works on the product page bundle only. The Add to Cart pop-up, cart page suggestion, checkout pop-up and Thank you page always show the products exactly as you configured them.

Choosing which product pages show the bundle

Every group in Bundled products has a checkbox: Show this bundle on these products' own product pages. It controls whether a shopper who lands on one of that group's products sees the bundle there.

Unticking it does not remove those products from the bundle. They are still bundled, and the bundle still appears on your Applies to products' pages — it only stops that group's own product pages from showing it. A collapsed group's header only shows how that group picks its products — Smart match, Same collection or Specific selection — so expand the group to see whether this box is ticked.

The Applies to card has no such checkbox, because it is the offer's anchor.

Defaults differ between new and existing offers. A new Product Bundle, a group you add with Add another group, and an AI-prefilled group all start unticked. Offers you created before this option existed keep showing the bundle on those pages until you change it.


Discount

Pick a Discount type. There are four:

  • No discount – show the bundle without reducing the price
  • Percentage off (e.g., 10% off)
  • Amount off (e.g., $5 off)
  • Fixed price – set what the whole bundle costs

For Percentage off and Amount off the value field is labelled Discount per bundle. For Fixed price it becomes Total price of the bundle.

💡 You can place 0 (as a discount) if you only like to create a Product Bundle interface, but don't desire to place a discount off the Product Bundle (ex. "Get the set below").

Finally, choose what the discount is calculated from. Calculate discount from sets the starting price your bundle measures its savings against, and it's also the one setting that decides whether shoppers see a crossed-out price on the bundled products:

  • Price – savings are measured from each product's current selling price, and the bundled products show their regular price only.
  • Compare-at price – savings are measured from each product's compare-at price, and that compare-at price appears crossed out next to the current price. This is useful when your products are already on sale and you want the bundle to show the full saving. When you pick it, the note If one of the products doesn't have a compare-at price, the discount will be calculated based on the price. appears underneath.

New bundles start on Compare-at price; bundles you created before this option existed behave as Price until you change them. A crossed-out price only appears on products whose compare-at price in Shopify is higher than their current price.

🔍 Note: The discount is always applied to the current price. Using the initial price only increases the perceived savings.

For example, a product with the current price of $100 and an initial price of $200 with a 10% discount will only have a $10 discount but will show as $110.

In other words, the real discount and the price difference are added up, where $10 is 10% of the $100 current price added up with the difference of $100 between the initial and current price, resulting in a total discount shown to the customer of $110.


Schedule

Decide when the offer runs by choosing Immediately or Schedule at the top of the card:

  • Schedule shows a Timezone field, then a Start date and Start time.
  • Tick Set end date to add an End date and End time. Leave it unticked and the offer keeps running until you turn it off.
  • The Timezone starts on your store’s time zone, so those dates follow your store’s clock. If you publish Immediately and tick Set end date, the Timezone field appears just above the end date instead.

Hide the bundle from certain customers (optional). At the bottom of the same card, under Exclude from this offer:

  • Shopify B2B customers – hides the bundle from customers who are logged in and buying for a company through Shopify B2B, so the deal stays for your direct-to-consumer shoppers.
  • Customers with specific tags – click Add tags and choose the customer tags to exclude. A customer with any of those tags won’t see the bundle on your product pages. Tags have to match a whole tag, and capital letters don’t matter.

Excluded customers don’t get the bundle discount at checkout either. Both options are off by default, and a customer is only recognized once they’re logged in to their account — shoppers browsing as guests always see the bundle.

Placements: where the bundle appears

All five placements live in one Placements card, as rows you can expand. Each row has an On / Off toggle, and a Customize appearance button that opens a full-screen editor for that placement only.

🛑 Note: Pop-up on Add to Cart and Thank you page only work on bundles of two products. As soon as a bundle has three or more, both rows show an Unavailable badge and can no longer be switched on — the tooltip on the toggle reads Remove groups to use this placement.

Product page

  • Customize the offer title, Buy Now button, and color scheme, among others
  • Choose whether the details of the Product Bundle appear only on desktop, mobile, or both

Add a countdown timer. Tick Add countdown timer to put a countdown above the bundle, with your own Title — use Insert timer to drop the countdown into your wording, or generate a title with AI. Alignment, Size, Countdown background and Countdown text colour live in this placement’s appearance editor.

The timer always counts down to the offer’s end date and disappears once it passes, so the checkbox stays disabled until you set one. Until then you will see: To display a countdown timer, set an end date in the Schedule section.

Cart page

  • Customizes the upsell suggestion that appears on the cart page
  • Triggers when only one product is missing to complete the bundle
  • Encourages users to complete the set before checkout

Thank you page

  • Shows inside the Thank You Page if the completed order includes part of a bundle but not the complete set
  • Great for encouraging last-minute purchases
  • Learn more about Thank You Upsells »

Pop-up on Add to Cart

  • Displays the bundle as a pop-up when a customer clicks Add to Cart on any participating product
  • Increases visibility for users who didn’t see the bundle directly

Pop-up on Checkout

  • Displays the remaining product as a pop-up when a customer clicks the Checkout button on the cart page while the cart contains only one of the participating products.

Name it, then save

  • Give the offer an Internal name at the top of the page — only you see it
  • Define a cart label (how the discount will appear on the cart page before checking out)
  • Check the preview on the right

Once you're satisfied, click Publish to put the bundle live on your store, or Save as draft to keep it hidden from shoppers while you work on it.

After the offer has been saved, Duplicate, Translate, Suggest feature and Analytics sit in the More actions menu at the top of the offer page. Duplicate is greyed out while you have unsaved changes, and Translate only appears when your store sells in more than one language.


🛒 What the shopper can and can’t change

Element Who controls it
How many products are in the bundle (2–5) You — fixed
How many units of each product (always one per group) You — fixed, there is no shopper quantity selector
Which product fills a group The shopper, but only ifLet customers pick their own discounted product is on for that group (it is by default), and never for the Applies to product
Which variant of a product (size, colour, flavour) The shopper — a variant dropdown appears automatically on any bundled product with more than one variant. No setting needed, and it works on the Applies to product too.
The discount You — one discount applies to the whole bundle

Pick another vs. the variant dropdown — two different controls, and easy to mix up:

  • Pick another changes which product sits in that group. It's on by default for every group that offers a choice, you can switch it off group by group, and it only lists products from that same group.
  • The variant dropdown changes which variant of the product already in that group. It is always there when that product has more than one variant.

💡 Tip: In a group set to Smart match, Same collection, or a collection, the product shown when the page loads is picked at random and can differ between visits. If you need one specific product to always appear, set that group to Specific products or collections and choose just that one.


📦 Example: selling two of the same product

Say you want a bundle of 1 phone case + 2 screen protectors.

There is no quantity field on a group — the number of groups is the quantity. So you set up three slots:

  • Applies to: Phone case
  • Group #1: Screen protector
  • Group #2: Screen protector

The widget shows three tiles on the product page (the screen protector appears twice, separated by a +). When the shopper adds the bundle, the phone case sits on top in the cart and the screen protectors are grouped underneath it as one line: Screen protector ×2.

The same logic applies to any repeat. If your groups each hold more than one product option and swapping is on, the shopper could swap one of them to something else — but they still get exactly three items, one per group.

🛑 If the shopper picks different variants of the same product in two groups (say a matte protector and a glossy one), those stay as two separate cart lines instead of merging.


🧺 What shoppers see in the cart

When a shopper adds a bundle, its products stay together in the cart. The Applies to product sits on top, and the products from your groups are grouped underneath it, in the same order as your groups. In the Vitals Cart Drawer they appear indented under the main product, with a smaller image and a connecting line, and each one still shows its own price and quantity controls. Shopify Checkout shows the same grouping.

If a shopper removes the Applies to product, the products grouped under it are removed as well.

There’s nothing to set up. If a group holds the exact same variant as the Applies to product, it’s added to the quantity of the Applies to product instead of being grouped under it.


🚦 Your bundle on a sold-out product page

If the product a shopper is looking at has sold out, your bundle still appears on its page. The Add to cart button shows your “Out of stock” wording and cannot be used while a sold-out item is part of the bundle — but the offer itself stays visible, so shoppers can see what you are offering and come back for it.

This applies to the product the shopper is actually viewing. Products you offer alongside it — the ones in your groups, or pulled in from a collection or by smart match — are still only suggested while they are in stock, so a bundle will never propose a partner that cannot be bought.

On a product that is only partly sold out, the bundle selects an available variant automatically. If a shopper picks a sold-out variant themselves, the button stays disabled until they choose another one.

Two things still hide a bundle completely: if a product in the offer has been deleted, or if it is not published to your Online Store sales channel. Stock is no longer one of them.


🌍 Multilingual Support

Selling in multiple languages? The Product Bundles app supports storefront translations.

➡️ Learn how to localize Vitals apps for your store »


💡 Final Thoughts

Creating Product Bundles is one of the most effective ways to increase conversions and drive more value from each customer visit. With Vitals’ single-page bundle editor and flexible settings, you can build irresistible bundles that sell themselves.

Start building smarter upsells today and turn more browsers into loyal buyers.

Your perfect bundle is just a few clicks away! 🚀

Frequently Asked Questions (FAQs)

Why doesn’t my bundle appear on the page of a product I added to it?

Open the offer, expand that group in Bundled products, and tick Show this bundle on these products' own product pages. New offers and new groups start with that box unticked.

Where did "Show compare-at price" go, and how do I show crossed-out prices on my bundle?

Crossed-out prices on a bundle are now controlled in one place: Calculate discount from, in the bundle's Discount card. Choose Compare-at price to show each product's compare-at price crossed out, with the savings measured from it, or Price to show regular prices only. The separate Show compare-at price checkbox in the appearance editor has been removed for bundles, so the crossed-out price and the savings your shoppers see always start from the same price. If a product still shows no crossed-out price, check it in Shopify: it needs a compare-at price that's higher than its current price.

Is this resource helpful? Thanks for the feedback There was a problem submitting your feedback. Please try again later.