Bundle types: quantity breaks, Buy X Get Y, fixed bundles, and build-a-box
Supr Bundles & Subscriptions offers four different bundle types, and picking the right one is the key to setting up offers like Buy 1 Get 1 Free, buy-more-save-more volume discounts, a set of different products sold together, or a build your own bundle (BYOB) where customers choose their own items (also called mix & match or build-a-box). This guide explains each type, when to use it, and every setting available on a bundle option. Every type can be bought one-time or on subscription.
Table of contents
- How bundles are built
- Do I need a dedicated bundle product?
- Which bundle type should I use?
- Bundling different products together
- Quantity break
- Buying more than your largest option
- Buy X, get Y
- Fixed bundle
- Build your own bundle (BYOB)
- Tiered discounts on a build your own bundle
- The single option
- One choice instead of two
- Bundle options and your stock
- Bundle option settings
- Setting a bundle as the default
- Rounding prices and savings
- Additional bundle option settings
- Free gifts and add-ons
- Discount codes and bundle prices
- Stacking discount codes with bundle prices on Shopify Plus
- Publishing and targeting
- Using bundle discounts with a custom add to cart
- Troubleshooting
- Common questions
- Related guides
How bundles are built
Everything lives on one page: Supr Bundles & Subscriptions > Offers. Click Create offer and choose what you want to offer:
- Bundle gives shoppers a better price for buying more, or for buying a set of products together. Bought one-time.
- Subscription sells a product on a recurring basis, with no bundle options.
- Bundle + Subscription does both, so shoppers can pick a quantity or a set and subscribe.
For a bundle, the next step is Choose a bundle type: a gallery of ready-made starting points you can filter by Quantity breaks, Buy X, get Y, Fixed bundle, Build your own, and Gifts & add-ons (for example "Buy one, get one free", "Multipacks", or "Free gift on bigger orders"). Pick one and the offer opens with those options already set up, or click Start from scratch at the top of the page for a single option plus one discounted Double quantity break option. The Colors and Layout buttons on that step change the design of every widget in your store. You can change the offer type and every setting later.
Inside a bundle offer you have one or more options. An option is a single selectable choice the customer sees on the product page ("1 bottle", "3 bottles, save 15%", "Build your box"). Each option has its own type, so a single offer can mix a quantity break with a build your own bundle option if that is what you want. Click Add bundle option to add one and pick its type.
The heading above the options is the offer's Bundle name, at the top of the Bundle options section ("Bundle & Save" unless you change it). Whether the heading shows, and how it looks, is set under Design > Elements > Bundle options > Heading.
Do I need a dedicated bundle product?
No. Bundles are built as options inside an offer and appear on the product pages the offer targets, so there is nothing extra to create. You do not need the Shopify Bundles app either.
If you would rather market the bundle on one page of its own (a "Gift set" page, say, instead of showing bundle options on each component's page), you do that with a normal Shopify product:
- Create an ordinary Shopify product for the bundle, with its own title, images, and description.
- In Supr Bundles & Subscriptions > Offers, build the bundle offer, usually with a Fixed bundle or Build your own bundle option holding the real products.
- Under Applies to, target the offer at that product, so the bundle options render on its page.
Customers get one clean product page, which can also sit in your collections, and stock is still drawn from the real component products.
Which bundle type should I use?
Goal | Option type |
|---|---|
Buy more of one product and save (e.g. "Buy 3, save 15%") | Quantity break |
Buy X get Y free or discounted (e.g. "Buy 1 Get 1 Free") | Buy X, get Y |
Sell a fixed set of different products together | Fixed bundle |
Let customers choose their own items from pools you define (mix & match, build-a-box) | Build your own bundle (BYOB) |
Let shoppers buy a single unit at the normal price | The single option, see below |
Let each option decide one-time or subscription, so shoppers make one choice | Subscription only and One-time purchase only on your options, see One choice instead of two |
Sell a subscription only in fixed pack sizes (e.g. packs of 3) | Sell in fixed quantities on the subscription option |
All four option types work for one-time purchases and subscriptions.
Bundling different products together
Yes, one bundle can contain different products, and it can be bought one-time or on subscription. Two option types do it:
- Fixed bundle: you choose the products and how many of each ("1 shampoo + 1 conditioner + 1 brush"). Customers pick a variant of each product where you allow it.
- Build your own bundle (BYOB): you choose the products customers can pick from, they choose the mix ("any 6 flavours", "2 coffees and 1 filter pack"), and you can give a bigger discount as the box fills.
Both show on the product pages your offer applies to, and the order contains the real products. Add a subscription option to the same offer (type Bundle + Subscription) to let customers subscribe to the set.
A quantity break cannot do this: it counts each product on its own, so buying three different products never reaches a 3 pack. Bundles made with other bundle apps usually cannot be combined with our subscriptions, see Using Supr Bundles & Subscriptions with other apps and tools.
Quantity break
Buy more, save more. The classic volume discount, applied to the product the widget is shown on.
For each option, set:
- Quantity: how many units this option buys.
- Price: Full price, Percentage off, Amount off, or Fixed price.
- Amount off comes off each unit, which is why the field reads Amount off per product. Set $5 on a 3 unit option and the customer saves $15.
- A Fixed price is the price of the whole option, not of one unit. Set $30 on a 3 unit option and the customer pays $30 for all three.
A typical setup is the single option for one unit, then 3 units at 10% off and 6 units at 20% off. A full-price 1 unit quantity break option does the same job if you would rather have it sit in the list with the others.
A quantity break counts one product at a time. The units are counted per product, so a 3 pack means three units of the same product. Buying three different products the offer covers does not add up to the 3 pack tier, even on an offer that targets a whole collection or your whole catalogue. For a deal across different products, see Bundling different products together.
Mixing variants in one pack. Variants of one product do count together, so a customer building a 3 pack out of three different flavours still gets the 3 pack price. The option's variant picker does this for you. If your add to cart is custom-built, see Using bundle discounts with a custom add to cart.
In the cart. A quantity break adds that many units of the product, so an 8 pack shows in the cart as the product with a quantity of 8. Shopify shows quantities this way for every app, and a pack cannot be shown as one single item.
If your theme keeps its own quantity picker. The options set the quantity for you, and on most themes the theme's own quantity picker is hidden while bundle options are shown. Where it stays visible, the two move together: a shopper who changes the picker gets the quantity break option that quantity has earned selected for them, always the best one it reaches, so 4 lands on your 3 unit option and going back down to 1 lands on your 1 unit option. Their own number is kept, so asking for 4 buys 4 rather than dropping to the size of the option. Options that are not quantity breaks are left alone on purpose, because a fixed bundle, a build your own bundle, or a Buy X Get Y option is a set of items the picker does not describe, and so is the single option.
Buying more than your largest option
On an offer whose bundle options are all quantity breaks, buying more than your largest option keeps its discount. Each option works as a threshold: any quantity at or above an option's size earns that option's price on every unit, and the customer always gets the best option they have reached. With options for 2 and 3 units, 4 or 10 units get the 3 unit discount on all of them. This holds however the quantity is reached, on the product page or by changing the quantity in the cart.
Two things to know:
- An offer that mixes option types is stricter. As soon as the offer also has a Buy X Get Y, fixed bundle, or build your own bundle option, a quantity break is priced at its own size or an exact multiple of it (3, 6, 9 for a 3 pack), so other quantities may be charged at full price. If you want "buy more, save more" at any quantity, keep that offer's options to quantity breaks.
- Different purchases count separately. Units bought on different delivery frequencies, or one-time next to a subscription, are counted as separate purchases, not added together.
Buy X, get Y
Buy X items, get Y free or discounted.
- Buy quantity: how many the customer must buy, at full price.
- Reward quantity: how many they get as the reward.
- Reward discount: Free, Percentage off, Amount off, or Fixed price.
- Reward products: where the reward comes from.
- Same product they buy, the classic same-SKU offer with no picker.
- The offer's products, so the customer chooses their reward from everything the offer covers.
- Specific products you pick, so the reward comes from a set you control.
That covers "Buy 1, Get 1 Free", "Buy 2, Get 1 at 50% off", and "Buy 3, get a free product of your choice" with the same option type.
The items being bought are always full price. A Buy X Get Y option's entire discount is its reward, so there is no percentage or amount off the buy side the way there is on a quantity break. A "Buy 2 get 1 FREE" option on a $43.99 product charges $87.98 and ships three units.
With a subscription. On a Bundle + Subscription offer, the subscription discount is taken off each unit first and the reward is worked out on that price. So "Subscribe and save 10%" plus "Buy 2 get 1 FREE" charges 2 x $39.59 = $79.18 rather than $87.98. If you want the Buy X Get Y deal on one-time orders only, click One-time purchase only on the option and turn it on. Every option lists its other settings as small chips under its main fields, each naming a setting and, once it is on, showing On or its value. Clicking a chip opens the option's Additional settings section with that setting expanded, and its switch turns it on.
At checkout on a subscription. A Buy X Get Y option bought on a subscription goes into the cart as two lines, the items bought and the items rewarded, so Shopify shows "This order has a recurring charge for multiple items" where it would otherwise print a recurring subtotal. That is deliberate. Shopify works its recurring subtotal out itself, without the option's discount, so on these offers it quoted a renewal price nobody is ever charged. The customer still sees the full breakdown on the page, and the first order and every renewal are charged exactly what the option says.
Every unit is its own choice. On an option rewarding the same product, the customer gets a variant picker for each unit in the set, so a "Buy 2 Get 1 Free" option on a t-shirt lets them take a medium, a large, and a free small. The picker is always shown on Buy X Get Y options (whenever the product has more than one variant), because otherwise the free item is just another copy of whatever the product page happens to have selected. Each row carries its own price, with the price that unit would cost on its own struck through beside it, so the reward reads as a saving.
Which unit is the free one. When the units are not all the same price, the reward goes to the cheapest unit in the set, the same way Shopify's own Buy X Get Y discount works. That is both what the option strikes through and what the customer is charged, so nobody can drop their most expensive variant into the free slot.
Rewards chosen from a pool. When the reward comes from the offer's products or specific products, the option has two halves and both are pickable. The items being bought sit at the top with a variant picker per unit, so a "Buy 2" option can be one medium and one large rather than two of whatever the product page has selected. The reward is chosen from the cards underneath, each showing the reward's normal price struck through beneath its deal price, and taking the same reward more than once gives a variant dropdown per unit, so two free items can be two different sizes. When the reward comes from a list of more than six products, the cards open in a picker behind a Choose items button rather than printing down the option.
The word shown in place of a price on a free item is yours to change under Design > Labels, and it is translatable like every other label.
Fixed bundle
Sell a fixed set of different products together. You decide exactly what is in the box; the customer buys it as one thing.
Open the option, set the Bundle price (Full price, Percentage off, Amount off, or Fixed price), then use Add a product under Bundle products. For each product you can set:
- Quantity: how many of that product the bundle includes.
- Allowed variants: every variant is offered unless you narrow it. Click the "X of Y variants" link under the product to restrict the option to a subset.
- Default variant: which variant is pre-selected. The customer can still change it wherever a variant dropdown is shown.
In the cart each product in the bundle is its own line, and the bundle stays whole: raising the quantity of any item adds a whole second bundle, lowering it takes one bundle off, and removing an item removes the whole bundle. If a cart is edited some other way, only complete bundles get the bundle price and any extra items are charged at their normal price.
Products added one by one. Turn on Bundle these products in the cart on the option and the bundle price also applies when a shopper adds every product of the bundle separately, for example from each product's own page, a collection page or a custom add to cart. The products have to be bought the same way (all one-time, or all on a subscription), and only complete sets get the price. Items already priced by another bundle option keep that price, so a cart is never discounted twice. Without the setting, only bundles added from the bundle option get the bundle price.
Stock. A fixed bundle can only be bought as a complete set, so while any product in it is sold out the option reads Sold out in place of its price and cannot be selected. Restock the product or take it out of the bundle before promoting it. See Bundle options and your stock.
Build your own bundle (BYOB)
Let customers pick their own items from your pools. Also known as mix & match or build-a-box, this is a full build your own bundle experience. When you add an option, pick Build your own bundle (BYOB) as its type, then set its Box price.
An option can have one or more groups (click Add another group for another), and each group has:
- Group name: the label the customer sees for that step.
- Group subtitle (optional): a short line under the group's name, such as "Silky and long-lasting". Translate it under Settings > Translations > Offers.
- Minimum to pick and Maximum to pick: setting both to the same number means "exactly N". The box has one slot for each item up to the maximum.
- Products customers can choose from: the pool for that group. Each product must be Active in Shopify and available on your Online Store sales channel, or shoppers cannot pick it.
- Let customers pick the same product more than once: on, one product can fill more than one slot, so a customer can put three of it in the box. Off, each product goes in once, so a box of six means six different products.
- Starting items: what the box holds when the page loads. The editor fills these with the first products in the group when you add them.
- A box with no more slots than products has one row per slot (Item 1, Item 2, and so on). Pick a different product from any row's dropdown, or untick an item to leave that slot empty for customers to choose. Every item is ticked unless you untick it.
- A box with more slots than products, for example a box of 25 from 5 meals, has one row per product instead, where you set how many of it the box starts with. Anything you leave unfilled starts empty for customers to choose. If each product can only go in once, each product is a checkbox.
One group is a simple "pick 4 from this pool". Several groups make a stepped box ("pick 2 coffees, then 1 filter pack"). To sell several box sizes, add one option per size, or use tiered discounts so one option covers every size.
The box opens full. On the product page the box is already filled with your starting items and the option shows its price straight away, so a customer who likes your selection adds it to the cart in one tap. How a group looks depends on how many products it has:
- Six products or fewer: every product is a card on the option, with your starting items already picked. A customer taps a card to add it or take it out, and when Let customers pick the same product more than once is on, uses the plus and minus buttons on a picked card to choose how many.
- More than six products: one row per item with its picture and name. Every row has a Change button that opens a short product list: each product with its picture, its price with the bundle discount already applied beside the normal price struck through, a choice of variant, and a Choose button that swaps the item in and closes the list. A slot you unticked shows Choose an item with a Choose button. Because the products only appear in that list, a long pool never pushes your price and add to cart button down the page.
Either way, a box that is not full yet has to be filled before it can go in the cart. A product your store cannot sell right now (a draft, archived, not on the Online Store, or sold out in every variant) reads Unavailable and cannot be picked. If your stock of the products in a group adds up to less than the box needs, the whole option reads Sold out, and if a customer picks more of one item than you have, the buy buttons stay off until they change their picks. See Bundle options and your stock.
When each product can go in only once, a product already in the box cannot be added a second time, and the product list marks it as In your box. In the editor a product used for one starting item is marked used in another slot in the other rows.
The Change and Choose buttons, the Select product heading, the Choose an item and In your box wording, and every other word the box prints are yours to change under Design > Labels (in the Build-a-box group), and they translate into your other languages under Settings > Translations > Widgets. Every one of them ships already translated into the languages the app supports.
You can also tick Always include the current product in every box, so the product the widget is shown on is always part of the box. Above a group of cards it reads as an Includes line; above rows it is listed as the first item, with no Change button.
A build your own bundle offers what the box can hold, not a step-by-step wizard: there is no separate "choose a box size, then choose by category" flow, and the app does not schedule different box contents for each month. Customers choose the contents, and subscribers can change them later from the customer portal (see below).
Tiered discounts on a build your own bundle
Give a bigger discount the more items go in the box. A build your own bundle option can carry up to 10 discount steps, so one option covers every box size instead of one option per size.
- Open the option and set Box price to Full price, or to Percentage off for a discount that applies before the first step.
- Set Minimum to pick and Maximum to pick to the smallest and largest box you sell.
- Under Tiered discounts, click Add a discount step, then set Items in box and the Discount (% off) for each step, for example 2 or more at 10%, 4 or more at 20%, and 6 or more at 25%.
- Click Save.
Every item in the box counts toward a step, whatever product or variant it is, so a shopper who picks 5 of one flavour and 1 of another reaches the 6 item step without choosing a box size first. The box always takes the biggest discount it has reached, and the option's own box price applies until the first step.
Shoppers see it as they build: the option reads Save up to 25% before anything is picked, the price updates with every item added, and a line under the box says how many more items unlock the next discount. Both of those lines are yours to reword under Design > Labels, and they translate under Settings > Translations > Widgets.
Checkout charges the step the box reached, on one-time orders and on subscriptions, and renewals keep that price. A box a customer edits in the customer portal is repriced at the step its new contents reach.
The single option
Every bundle offer also carries a single option: one unit of the product at its normal price, with no discount, for shoppers who do not want a bundle at all. It is the bundle equivalent of the one-time purchase row on a subscription offer, and it sits in the Bundle options list alongside the options you built, titled Single unless you rename it.
A new offer starts with it shown, at the top of the options (the Multipacks starting point is the exception and leaves it hidden), so shoppers land on buying one and trade up from there. Offers you created before the single option existed keep what you gave them: the option stays hidden until you turn it on, so nothing you already run grows an option it never asked for.
- Go to Supr Bundles & Subscriptions > Offers and open the offer.
- Find the Single row in the Bundle options list. A Hidden badge means it is currently turned off.
- Click the eye to show it on your product pages, or to hide it again.
- Click the row open to set its Title, a Subtitle, and an image. Leave the title empty and it uses the store-wide wording from Design > Labels.
- Use the arrows to put it above or below your bundle options, and click Save.
The single option does not drag with the others, because it only ever sits at the top or the bottom of the list, which is where it can appear on the storefront. The arrows work whether it is shown or hidden, so you can decide where it goes before you turn it on.
Because it belongs to the offer rather than the store, you can run it on one bundle and not another. Its title and subtitle are translatable under Settings > Translations > Offers, in the group for that offer, so it reads correctly in every language you sell in.
Which subscription options it offers. Like any bundle option, the single option offers every subscription option on the offer. To keep one off it, open that subscription option, click Restrict to specific bundle options and turn it on, and leave the single option unticked: it is listed there alongside the options you built. Keep every subscription option off it and the single unit is sold one-time only. See One choice instead of two.
One choice instead of two
On a Bundle + Subscription offer a shopper usually makes two choices: a bundle option, then one-time or a subscription in the widget underneath it. If each of your options already says how it is bought, for example 1 unit, 1 unit every month and 3-pack, you can make that a single choice.
- Go to Supr Bundles & Subscriptions > Offers and open the offer.
- Show the single option for one unit bought once.
- Add a Quantity break option with a quantity of 1 for the subscription, then click Subscription only on it and turn it on.
- Add your pack, for example a 3 unit Quantity break option, then click One-time purchase only on it and turn it on.
- Open your subscription option, click Restrict to specific bundle options and turn it on, then tick only the 1 unit quantity break option. Leave the single option unticked so it stays one-time.
- Click Save.
- Go to Supr Bundles & Subscriptions > Design and turn on Hide when single option in the Add-on settings card.
Every option now leaves exactly one way to buy, so the subscription widget steps aside and the option the shopper picks is the whole decision. The subscription only option shows its subscription price from the start, and each option goes into the cart the way it says: once, or on the subscription.
A different frequency for each pack works the same way: add one subscription option per frequency (every month, every 2 months, every 3 months), and on each one click Restrict to specific bundle options, turn it on, and tick only its pack. The 2 pack is then offered every 2 months, the 3 pack every 3 months, and so on.
Bundle options and your stock
Bundle options follow your Shopify inventory for products that Track quantity with Continue selling when out of stock turned off.
- An option your stock cannot fill reads Sold out in place of its price, is greyed out, and cannot be selected. For example, a pack of 6 when only 4 are left, or a box of 60 when the products it is built from add up to fewer than 60. It becomes available again as soon as there is enough stock, or when the customer switches to a variant that has it.
- If the option selected by default is sold out, the next option that can be filled is selected instead when the page loads.
- In a build your own bundle, picks are checked against stock. If a customer picks more of one item than you have, the add to cart, Buy it now and express checkout buttons turn off, and a message under the option says how many are left, until they change their picks.
A sold-out free gift follows the offer's When a gift is out of stock setting: the option reads Sold out, or it sells without the gift. See Free gifts and add-ons.
The product page reads the stock of the product it shows. For other products in a fixed bundle or a build your own bundle it knows only whether they are sold out, so Shopify's own stock check still applies to them: if Shopify cannot add the whole bundle, none of it is added and the customer sees Shopify's message under the option.
Both messages are yours to reword under Design > Labels (Option sold out and Not enough stock), and they translate under Settings > Translations > Widgets.
Bundle option settings
Every option, whatever its type, has these core settings:
- Title: the option's main text.
- Default: which option is pre-selected on the product page. Click Make default on the option you want highlighted. See Setting a bundle as the default.
- Variant selector: let customers pick a variant for each item in the option (click Variant selector on the option and turn it on). Always on for a Buy X, get Y option rewarding the same product, where the reward is a separate item the customer is choosing.
- Drag options to reorder them, or click Duplicate on one to build a similar tier quickly.
In the editor each option row is labelled with its type above its title, for example "Quantity break (x3)", so bundle options and subscription options are easy to tell apart at a glance.
The order the two widgets stack on the product page is set under Design > Elements > Page layout: Bundle on top puts the bundle options first, and turning it off puts the subscription widget first.
Setting a bundle as the default
The default is the option that is already selected when the product page loads. Making your best-value tier the default, a three-pack rather than a single, is one of the quickest ways to lift average order value.
- Go to Supr Bundles & Subscriptions > Offers and open the offer.
- Click Make default on the bundle option you want pre-selected.
- Click Save.
Only one option can be the default at a time, so setting a new one clears the previous default. Reordering options by dragging does not change which is default.
An offer you start from scratch makes none of its bundle options the default, which leaves the single option selected, and its row shows the Default badge. Most ready-made starting points make one bundle option the default instead. Click Make default on an option to move the opening selection onto it, and Make default on the single option to move it back. A hidden single option is never shown, so it cannot be the default: if you hide it without choosing another option, the page opens on your first bundle option.
On a Bundle + Subscription offer there are two independent choices. The bundle option default decides which pack size the shopper starts on, and the subscription option default decides whether that pack starts as a subscription or as a one-time purchase. Set both if you want something like "3-pack, delivered monthly" pre-selected.
Rounding prices and savings
Two settings on the offer tidy up odd cents. Each applies to every option in the offer.
Round prices is the checkbox under Bundle name at the top of Bundle options. It charges a whole amount on quantity break and Buy X Get Y options: a "Buy 2 get 1 FREE" option that would come to $79.92 is charged $80.00 instead. Checkout, the cart, the widget on the product page and the renewals of a subscription all use the rounded price, so what the customer sees is what they pay.
- How it rounds. Each set of an option is rounded to the nearest whole amount, so two sets in the cart cost twice one set. The rounding works by adjusting the option's discount by the few cents needed, so it never charges more than the items cost without the option, and a free option stays free.
- What it leaves alone. An option with no discount of its own, such as the single option, has nothing to adjust and keeps its price. If you want those whole as well, set the product's own price to a whole amount. Fixed bundles, build your own bundles and Buy X Get Y options with a reward chosen from a pool are not rounded.
- Prepaid subscription options. The total charged is rounded, but the per-delivery price shown beside it is that total split across the deliveries, so it is not always a whole amount.
Round the saved amount is a checkbox in an option's Savings chip section. It shows the saving on the chip as a whole number, so "Save $69.93" reads "Save $70". It changes the wording only and never a price, so use Round prices as well if you want the prices whole too.
Additional bundle option settings
Subtitle, Text below, Badge and Image are main fields, shown whenever the option is open. Everything else is a chip under them: click it to open the option's Additional settings with that setting expanded, and use its switch to turn it on.
Text and display
- Button labels (Buy X, get Y options only): override the reward buttons on this option (the Choose button and the Add item prompt).
- Subtitle: a line of supporting text under the title.
- Text below: a line of text shown beneath the option.
- Savings chip: show how much the customer saves. Turn it off to show no saving on this option.
- Automatic works the saving out for you, counting both the money off the products and the value of any free gifts the option adds. It appears only on options that actually save the customer something. On a Buy X, get Y option it reads as an amount, because the saving is the value of the reward; to show a percentage, use a quantity break with a Percentage off price.
- On a build your own bundle option the chip shows straight away, before the customer has changed anything, whenever the option takes a percentage off or an amount off: the saving reads the same whatever ends up in the box, so there is no reason to hide it. An option set to a fixed box price is the exception, since its saving is the gap between that price and whatever is in the box, so its chip appears once there is something in the box.
- Manual lets you write the wording yourself. Put
{value}where you want the calculated amount to appear, for exampleYou save {value} today. Leave{value}out and the chip reads exactly what you typed, and stays on the option even when that option has no discount to calculate, which is handy for a fixed line such as calling out the value of a free gift. - Tick Round the saved amount to show the saving as a whole number. See Rounding prices and savings.
- The chip text is translatable, so it reads correctly in every language you sell in.
- Badge: highlight the option with a badge, for example "Most popular" or "Best seller". Pairs well with making that same option the default. Badges are a bundle option setting; subscription options do not have one. The badge's shape, position, colours and size are on Design > Elements > Message badge, and the automatic discount badge is Design > Elements > Discount badge.
- Image: show an image next to this option on the storefront.
Pricing and cart behaviour
- Free shipping: include free shipping when a customer selects this option. The "Includes free shipping" line is shown at the bottom of the option, under any add-ons, so it reads as a summary of everything that option earns. Like a quantity break's discount, it is earned by the units of one product.
Subscription behaviour
- Apply discount to subscriptions: apply this option's discount to subscription orders too. Turn this off if you do not want the bundle discount to stack with the subscription discount: the option's discount then applies to one-time purchases only. For a Buy X Get Y option, use One-time purchase only instead.
- Subscription only: hide the one-time purchase row when this option is selected, so the option can only be bought on a subscription.
- One-time purchase only: the opposite. Hide the subscription options when this option is selected, so it can only be bought once. Useful for a gift set, a trial size, or a big stock-up pack you do not want going out on repeat.
- Hide for B2B customers: hide this option from customers buying for a company (Shopify B2B) and keep its discount off their orders, since they already buy at their company's catalog price.
Subscription only and One-time purchase only are two ends of the same choice, so turning one on turns the other off.
Which subscription options a bundle option offers is set the other way round, on the subscription option itself: open it and click Restrict to specific bundle options. The single option is in that list too. See Additional settings.
Extras
- Add-ons and Free gifts, described in the next section.
Free gifts and add-ons
Both are switched on per option, from the Free gifts and Add-ons chips, and apply while that option is selected.
Free gifts add products at no charge.
- Click Free gifts on the option, turn it on, and click Add a gift to pick the product, then set its Quantity.
- Set Gift applies to: First order only or Every order (ongoing).
- Set How gifts are given: Give every gift adds each one automatically, Let the customer choose turns the gifts into a pool the customer picks from, and Gifts the customer picks sets how many (for example 2 free gifts from 3 products).
- Set When a gift is out of stock. This applies to every option in the offer, whichever option you set it on (see below).
- Click Save.
When a gift is out of stock. A gift product that tracks its quantity, is at zero and has Continue selling when out of stock turned off cannot be added to a cart, so you choose what the offer does instead:
- Show this option as sold out (the default): the option reads Sold out and cannot be selected until the gift is back in stock. Use it when the gift is part of the deal.
- Skip the gift and still sell: customers can still buy the option. The gift row reads Unavailable in place of Free, the gift is left out of the cart, and the option's saving stops counting the gift's value. Use it when you would rather keep selling than wait for the gift to restock.
On an option where customers choose their gifts, a gift that is out of stock reads Unavailable and cannot be picked either way. With Skip the gift and still sell, customers pick from the gifts that are left; with Show this option as sold out, the option is sold out once too few gifts are left to make up the number customers pick. A gift set to continue selling when out of stock is still added as normal. The word Unavailable is the Unavailable product label under Design > Labels.
A gift row with only a name typed under Gift product, and no product picked, shows on the option without adding anything to the cart. That suits a gift you send outside Shopify, such as a handwritten card.
On the storefront each gift is its own row at the bottom of the option: the product's image and name on the left, and a price column on the right showing the gift's normal price struck through over the word Free, so the customer can see what the gift is worth. The gift's name comes from the product itself and follows your Shopify translations. The word Free is yours to change under Design > Labels, and it is translatable like every other label.
On a subscription the gift goes into the cart on the subscription, alongside the item it came with, so checkout shows "This order has a recurring charge for multiple items" rather than a recurring subtotal that Shopify works out without the option's discount. A gift set to First order only is taken off the subscription once that first order is placed, so your customer keeps the gift you promised without it arriving free on every renewal. A product you only ever give away does not start offering a subscription on its own product page.
Add-ons are optional extras a customer ticks on, the closest thing to "frequently bought together" or an order bump on the product page ("Add a brush for $5").
- Click Add-ons on the option, turn it on, and click Add an add-on.
- Pick the product (and Variant), and optionally a Name to show instead of the product's own name.
- Set its Price: Full price, Percentage off, Amount off, Fixed price, or Free. Tick Include free shipping when this add-on is selected if the add-on should earn free shipping.
- Click Save.
Add-ons show as tickboxes under the selected option, without a heading of their own. Each add-on goes into the cart as a one-time item, even when the option is bought on subscription, so it ships with the first order and does not repeat on renewals. To offer extras to people who already subscribe, use Upsells.
Discount codes and bundle prices
Bundle prices are charged by an automatic Shopify discount the app creates for you, named Supr Bundle Block Pricing (stores that installed the app before September 2026 may still see an older name until the app updates it). Leave it in place: deleting or deactivating it in Shopify admin > Discounts stops every bundle option from discounting at checkout.
That discount is set to combine with product, order, and shipping discounts, so whether a customer's discount code also applies is decided by the code's own settings:
- In Shopify admin > Discounts, open the code and find Combinations. Tick Product discounts to let the code apply to an order that already has a bundle price. Leave it unticked to keep the code off bundles: Shopify then applies only one of the two, not both.
- An order discount code (for example 10% off the order) or a free shipping code applies on top of bundle prices when it is set to combine with product discounts.
- A product discount code does not add to a bundle price on the same item: Shopify gives each cart line one product discount, the bigger one. On Shopify Plus you can change that, see Stacking discount codes with bundle prices on Shopify Plus. The same rule is why another app's automatic discount can replace your bundle price, see When another discount app overrides your prices.
For codes aimed at subscribers (first order only, a set number of renewals), see Shopify discounts and discount codes.
Stacking discount codes with bundle prices on Shopify Plus
On the Shopify Plus plan, a product discount code can apply to the same item as a bundle price, so customers keep their bundle price or free gift and still get your code. Shopify allows this when the two discounts carry tags that allow each other.
- Go to Supr Bundles & Subscriptions > Settings > Discount combinations. The page only shows on Shopify Plus stores.
- Turn on Let tagged discounts stack with bundle pricing.
- Tags on bundle pricing is the tag the app adds to its bundle discounts (supr-bundle unless you change it). In Stack with discounts tagged, enter the tag you will put on your own codes, for example coupon. Separate several tags with commas.
- Click Save.
- In Shopify admin > Discounts, open each code that should stack. Add the tag coupon, and under Combinations tick Product discounts and allow discounts tagged supr-bundle to apply to the same product. Save the code.
Two discounts stack only when each one allows a tag on the other. If COUPON10 and COUPON15 are both tagged coupon and each allows only supr-bundle, either code stacks with your bundle prices, but the two codes never stack with each other.
Shopify works out how stacked discounts add up. A 10% code on a Buy X, get Y option, for example, can take 10% of the full price on top of the free item, rather than 10% of the bundle price. Add a bundle and your code to a cart and check the total before you promote the code. On a subscription, the code's own Recurring payments setting decides how many renewals it applies to.
Publishing and targeting
- Every offer has a Status in the side card of its page. New offers start as Published; choose Draft to take the offer off every product it applies to (existing subscribers keep renewing). Only Published offers appear on your storefront.
- Choose which products the offer applies to under Offer details > Applies to: All products, Specific collections, or Specific products. With specific products you can narrow a product to some of its variants.
- A product shows the bundle options of one offer. If two bundle offers apply to the same product, only one of them shows, so keep one bundle offer per product (offers limited to different variants of the same product are fine).
- Offers that target a collection use the products that were in it when you last saved. After changing a collection, click Refresh in the Collection products card on the Offers page.
Using bundle discounts with a custom add to cart
This section is for developers. Skip it unless someone has built a custom add to cart on your store.
Normally the bundle option adds items to the cart itself and everything below is handled for you. But some stores have a landing page, page-builder section, or headless front end that builds its own add to cart. The bundle discount still runs in that case, because it is a Shopify discount rather than part of the widget, but it can only count what the cart tells it. A custom add to cart must tag its lines, or the discount will misprice mixed carts.
How the discount counts units
Units are counted per product, across the cart lines that belong to the same bundle. Lines are grouped by their _bundle_block_id property, their product, and how they are bought (one-time, or on which subscription option), and that group's total is what the option's quantity is matched against. Different products never pool with each other, even when one offer covers them all.
That is why the same 3 pack can behave two different ways:
- Three of the same variant arrive as one line of quantity 3. Even untagged, the discount sees 3 units and the 3 pack price applies. This works by accident.
- Two of one variant and one of another arrive as two lines, of quantity 2 and quantity 1. Untagged, each line is priced on its own, so the customer gets the 2 pack price plus one unit at full price. On a store with a $16.99 product, a $31.99 two pack, and a $44.99 three pack, that is $48.98 instead of $44.99.
Tag both lines with the same _bundle_block_id and the discount sees one group of 3 units, and charges $44.99.
Properties for a quantity break or Buy X Get Y option
Send these in properties on every line of the bundle:
Property | Value |
|---|---|
| The bundle's id. The same value on every line, never one per option. |
| The total units in the selected pack, as a string, for example |
| The option's position in the offer, 0-based, as a string. Leave it off for the single option. |
| Optional. The option's title. |
Only _bundle_block_id affects the price on an offer whose options are all quantity breaks. Send the others anyway: as soon as the offer gains a Buy X Get Y, fixed bundle, or build your own bundle option, the matching becomes stricter. _ssBundleBar then names the option the shopper picked, so a 2 pack and a "buy 1, get 1" (both two units) are never confused, and _bundle_block_quantity is checked against that option's pack size.
Do not add _ssBundleGroup to these lines. A line carrying it is treated as part of a fixed bundle or build your own bundle box, below. A Buy X Get Y option whose reward the customer picks from other products uses a different set of properties that is not covered here; contact support if you need it.
Properties for a fixed bundle or build your own bundle option
These are grouped differently, and they are the ones to use when a single deal spans different products. Send one line per variant, tagged with:
Property | Value |
|---|---|
| The bundle's id. The same on every line of the box. |
| The option's position in the offer, 0-based, as a string. |
| A value you make up for this box, identical on every line of the box and new for each box you add. |
| Build your own bundle only: the 0-based index of the group the item was picked from, so each group's minimum and maximum are checked against the right group. |
| Optional. The option's title, shown as the box's name in the customer portal. |
The three values _ssBundleGroup, _ssBundleBar and _ssBundleKey together are what make lines one box. Get _ssBundleKey wrong and the box is not recognised:
- A different key on each line splits the box into boxes of one item each. None of them is complete, so every line is charged full price.
- The same key on two build your own bundle boxes merges them into one box, priced as one box: items past a group's maximum pay full price.
The discount checks the box before it prices anything:
- A fixed bundle is priced in whole sets: every product in the option, in its quantity. A set that is missing a product earns nothing, and extra units beyond whole sets pay full price.
- A build your own bundle box needs at least each group's minimum. Items beyond a group's maximum pay full price.
- Only the option's own products count: the fixed bundle's products (and the variants you allowed), or the products customers can choose from in a build your own bundle (plus the product itself when the option always includes it). Any other product with the same tags is charged full price.
A line may have a quantity above 1. Two of the same variant can be one line of quantity 2, or two lines with identical properties, which Shopify merges into one anyway.
Subscription lines
To sell the bundle on subscription, add these to every line, on any option type:
selling_plan(next toidandquantity, not insideproperties): the numeric id of the subscription option. Shopify refuses the line if that subscription option does not cover the variant._ssPlanBase(insideproperties): the variant's normal one-time price for one unit, as a plain amount in the cart's currency, for example"18.99". Not cents, and not the line total. Take it from the variant's price.
_ssPlanBase matters on an option priced with Fixed price or Amount off. Those amounts are one-time prices, and a subscription line reaches the discount already reduced by the subscription option, so without _ssPlanBase the subscription discount is lost: a $50 box with a 5% subscription option charges $50 instead of $47.50, with no error. A Percentage off option prices the same either way.
The option's own settings still apply: with Apply discount to subscriptions off, a box bought on subscription gets no bundle discount, and a Subscription only option gives none to a one-time purchase.
Example
A build your own bundle box of three items, on a subscription, sent to /cart/add.js in one request. For a one-time box, leave out selling_plan and _ssPlanBase.
{
"items": [
{
"id": 44000000000001,
"quantity": 2,
"selling_plan": 700000000001,
"properties": {
"_ssBundleGroup": "BUNDLE_ID",
"_ssBundleBar": "0",
"_ssBundleKey": "box-lq3k9x-1",
"_ssMixGroup": "0",
"_ssPlanBase": "18.99",
"_bundle_block_name": "Build your box"
}
},
{
"id": 44000000000002,
"quantity": 1,
"selling_plan": 700000000001,
"properties": {
"_ssBundleGroup": "BUNDLE_ID",
"_ssBundleBar": "0",
"_ssBundleKey": "box-lq3k9x-1",
"_ssMixGroup": "0",
"_ssPlanBase": "21.50",
"_bundle_block_name": "Build your box"
}
}
]
}Finding the ids
With the widget switched on, load a product page the offer targets and read them off the rendered option: the bundle id is the data-bundle-block-id attribute on the bundle block, and each option's index is its data-tier-index. The subscription option's id is the product's selling plan id, available in your theme's Liquid as selling_plan.id. If the widget is not switched on in your theme, contact support and we will look the ids up for you.
Things worth checking
- Use the exact property names above. A near miss such as
_bundle_nameis ignored, and the line stays at full price. - Tagging groups units of the same product. Two different products tagged with the same
_bundle_block_idare still counted separately, so a quantity break is never earned by buying one each of two products. Use a fixed bundle or build your own bundle option for a deal that spans products. _bundle_block_idonly counts on a product the offer applies to. On any other product it is ignored.- Add all the lines of one box in a single request, so the cart never holds half a box.
- Group your items by variant before posting, so three of one flavour is one line of quantity 3 rather than three lines of 1. Shopify merges identical lines anyway, and grouping keeps the cart tidy.
- An option priced above what the cart already costs is correctly ignored. A $31.99 two pack does nothing once a 10% subscription discount has already taken two units to $30.58, and that is intended: the discount will not raise a price.
Troubleshooting
- Nothing happens on the product page after creating a bundle: work through Bundle options are not showing on the product page. The usual causes are an offer of type Subscription (no bundle options), an offer set to Draft, a product that is not in Applies to, or the widget not switched on under Design.
- Selecting a pack puts only one unit in the cart: check the widget is switched on (Design shows no Enable widget button) and that you clicked Save in the theme editor. If it is on, your theme's add to cart is bypassing the options: contact support and we will adapt it for your theme.
- A bundle option reads Sold out: there is not enough stock to fill it. Restock the products, or for a fixed bundle take the sold-out product out. See Bundle options and your stock.
- A bundle option with a free gift reads Sold out, or its gift reads Unavailable: the gift product is out of stock. Restock it, or pick what the offer does under When a gift is out of stock in the option's Free gifts settings. See Free gifts and add-ons.
- A fixed bundle cannot be added to the cart: a product in it is sold out, or is not Active on your Online Store. Restock it or take it out of the bundle. See Fixed bundle.
- A build your own bundle box opens empty, or with empty slots: those slots have no starting item, or their item is unticked. Boxes set up before starting items existed start this way. Open the offer and, under Starting items in the group, pick a product for each row and make sure each one is ticked, or set how many of each product the box starts with, then save. Leave room only where you want customers to pick. See Build your own bundle (BYOB).
- Shoppers cannot pick products in a build your own bundle box, or a product reads Unavailable: every product in a group must be Active in Shopify and available on your Online Store sales channel, or your store cannot sell it. A product you duplicate in Shopify starts out as a Draft, so a box built from copies has nothing to pick until you set them to Active. Open each product in Shopify, set its Status to Active, make sure it is available on the Online Store sales channel, and reload the product page. A starting item your store cannot sell right now leaves its slot empty rather than putting something unbuyable in the box.
- A build your own bundle product shows no subscription options on its own page: that is intended. The products customers choose from are sold on subscription inside the box only. To sell one on its own too, add it to the products the offer targets, or to another offer. See Additional bundle option settings.
- A build your own bundle bought on subscription checked out as a one-time order: the products customers choose from join the offer's subscription when the offer is saved, so a box set up before that changed may be missing them. Make any change to the offer and save it, or contact support and we will add them for you.
- A customer cannot add two of the same product to a box: check Let customers pick the same product more than once on that group. With it off, each product goes in once and the product list marks the ones already in the box as In your box. See Build your own bundle (BYOB).
- A build your own bundle product shows no picture, or an old one: each item shows the chosen variant's image if it has one, otherwise the product's first image in Shopify. To change the picture, drag the image you want to the first position on the product in Shopify and reload the product page.
- The wrong option is pre-selected on the storefront: only one option can be the default, so setting a new one clears the old. Re-open the offer, click Make default on the option you want, save, and reload the product page. See Setting a bundle as the default.
- The single option is not on the product page: new offers show it, but an offer created before it existed keeps it hidden until you turn it on. Open the offer, find the Single row in Bundle options, click the eye, and save. See The single option.
- The bundle options sit at the bottom of the page, show twice, or look unstyled: see The subscription widget appears twice or at the bottom of the page. On page builders the placement may need a small adjustment from us; contact support.
- The price on an option shows as code, such as
<span class=money>: your theme's price format is clashing with the option. Contact support and we will fix it on your store. - An option's image will not upload: contact support and send us the image in the chat, and we will add it to the option for you.
- The subscription widget disappears on one bundle option: that option offers nothing to pick, because it is One-time purchase only or no subscription option applies to it, and the one-time row is hidden on the offer. Show the one-time row, or apply a subscription option to that bundle option. It also steps aside when Hide when single option is on and the option leaves only one way to buy, which is intended: see One choice instead of two.
- The single option no longer offers a subscription: a subscription option on the offer has Restrict to specific bundle options turned on and the single option is not ticked. Tick it to offer that subscription on the single option too.
- No variant pickers on a Buy X Get Y option: they only appear when the product has more than one variant, and a product whose only product option is Shopify's default "Title" counts as one variant. Check the product has real product options, such as size or colour.
- A Buy X Get Y price looks lower than expected: with a subscription selected, the subscription discount comes off first and the reward is worked out on that lower price, so the total is below "buy quantity x full price". See Buy X, get Y.
- A gift row shows Free but no struck-through price: the price is read live from your storefront, so it is left off rather than guessed when the gift product is not available in the customer's market. Check the gift product is published to that market.
- A different unit went free than the customer expected on a Buy X Get Y option: the reward always goes to the cheapest unit in the set, so a customer mixing a $30 and a $20 variant gets the $20 one free. Pricing every variant the same removes the question.
- A customer expected a discount for buying two different products: a quantity break counts one product at a time, so two different products bought once each are two singles, not a 2 pack. If you want a deal across different products, use a fixed bundle or a build your own bundle option.
- Changing the theme's quantity picker does not move the selected option: the selection only follows the picker between quantity break options. While a fixed bundle, build your own bundle, Buy X Get Y, or single option is selected the shopper's choice is left where it is, because those options are a set of items rather than a number of units. See Quantity break.
- One flavour gets the pack price but a mixed pack does not: the units are landing on separate cart lines and are not being counted together. On the app's own bundle option this is handled for you. On a custom-built add to cart it means the lines are missing the
_bundle_block_idproperty. See Using bundle discounts with a custom add to cart. - The discount is named "Volume discount" instead of the option's title: the checkout name comes from the option's Title, or the offer's Bundle name when the option has none, as they were when the offer was last saved. Give the option a title, save the offer, and try a new cart.
- A box from a custom-built add to cart charges full price: the lines are not being recognised as one box. Check that every line of the box carries the same
_ssBundleGroup,_ssBundleBarand_ssBundleKey. If it charges the one-time box price on a subscription, the lines are missing_ssPlanBase. See Using bundle discounts with a custom add to cart. - The cart charges a different price than the option shows: most often another app's automatic discount is replacing your bundle price. See When another discount app overrides your prices.
- Checkout says "This order has a recurring charge for multiple items" instead of a price: that is Shopify's own wording, and it appears whenever a subscription order has more than one item, which is the case on an option carrying a free gift or a Buy X Get Y reward. Shopify works its recurring subtotal out without the bundle discount, so the figure it would have shown in its place is not what anyone pays. The full breakdown is still on the page and the charge is exactly what the option says.
- Checkout's "Recurring subtotal" is higher than the bundle price: Shopify works that line out before discounts, and it cannot be changed outside Shopify Plus. The first order is charged the bundle price, and the app keeps that price on the subscription, so renewals are charged it too.
- A free gift keeps arriving on every renewal: check the gift's setting on the option. Every order (ongoing) repeats by design. First order only is taken off the subscription once the first order is placed, so if a gift set that way is still repeating on a subscription created before this changed, edit the subscription and remove the gift line. See Free gifts and add-ons.
- The struck-through "was" price is missing in the cart or at checkout: Shopify does not display compare-at prices there. This is platform behaviour and affects every app, not just this one.
Common questions
What happens if a customer buys more than my largest bundle?
On an offer whose options are all quantity breaks, they keep the largest option's discount on every unit: with a 3 pack as your top option, 4 or 10 units all get the 3 pack rate. See Buying more than your largest option.
Can I bundle different products, like 3 or 4 products at a discount, and let customers subscribe?
Yes. Add a Fixed bundle or Build your own bundle option to a Bundle + Subscription offer. See Bundling different products together.
If a customer adds the bundle's products separately, do they get the bundle price?
Fixed bundles, build your own bundles, and Buy X Get Y deals are priced only when bought through their option. A quantity break counts units of the same product in the cart, so on an offer whose options are all quantity breaks, raising the quantity in the cart still earns the pack price.
How do I change the "Bundle & Save" heading above the options?
Open the offer and edit Bundle name at the top of the Bundle options section. The Design page only turns the heading on or off and styles it. For other languages, use Settings > Translations > Offers.
How do I add a "Best seller" badge, or change "Save 10%" to my own wording?
Open the option, type your text in Badge, then click Savings chip on the option and choose Manual for the saving. See Additional bundle option settings.
Can customers add an extra product, such as a brush, while buying a bundle?
Yes, with Add-ons on the option. They are optional tickboxes with their own price, and they are one-time items that do not repeat on renewals. See Free gifts and add-ons.
Can I give a free gift with the first subscription order only?
Yes. Add a gift to an option and set Gift applies to to First order only. See Free gifts and add-ons.
Do discount codes work on top of bundle prices?
It depends on the code's Combinations setting in Shopify. See Discount codes and bundle prices.
Why doesn't the cart show my compare-at ("was") price?
Shopify shows compare-at prices only on product pages. If you want the saving to show in the cart and at checkout, set the product's regular price to the full price, remove the compare-at price, and let the bundle option or subscription option give the discount: it then shows as a discount line. The tradeoff is that places such as the Shop app and Google Shopping show the full price.
Related guides
- A Beginner's Guide to Bundles
- Bundle options are not showing on the product page
- A Beginner's Guide to Subscription Offers
- Setting the default option
- How subscription discounts work
- The Subscription Widget
- Customer Portal Settings
- Upsells
Updated on: 10/03/2026
Thank you!
