Four approaches, what each one actually costs you, and which ones keep your inventory honest.
You sell twelve flavors. You want to sell a six-pack where the customer picks which six. On paper this is the simplest thing in the world. In Shopify it is one of the most awkward, and the reason isn't obvious until you've already built it the wrong way twice.
There are four ways to do it. Three of them are free. Only one keeps your inventory honest, and which one you should use depends on a question most guides never ask: do you need to know how many chocolate ones you have left?
Shopify raised the variant limit from 100 to 2,048 per product in 2024, and every plan gets it — Basic through Plus, nothing to enable.
That sounds like it solves the problem. It doesn't, because the option limit didn't change. It's still three.
Options are the dropdowns on your product page: Size, Colour, Flavour. Three of them, maximum.
Now think about what "pick any six flavors" actually is. It's six independent choices — slot one, slot two, slot three, and so on. That's six options, and Shopify gives you three. You hit that wall long before you get anywhere near 2,048 variants.
And if you model it as combinations instead of slots, the arithmetic turns on you fast. Picking six from twelve, where a customer can take two of the same flavor, is 12,376 possible combinations. The variant ceiling is 2,048. You were never close.
So variants are out for genuine customer choice. They're excellent for something else, which we'll get to.
Use it when: the customer is choosing from a small, fixed set of pre-made combinations.
A "Spicy Six-Pack," a "Mild Six-Pack," a "Best Sellers Six-Pack" — three variants of one product. Clean, free, native, and inventory works properly because each variant is a real SKU you can count.
Also use it when the choice is genuinely one dimension. A single-flavor product in twelve flavors is one option, twelve variants. That's exactly what variants are for, and you should not overthink it.
Where it breaks: the moment the customer makes more than three independent choices. There is no workaround, because the limit is on options, not variants, and no app can raise it.
Two costs worth knowing before you build a high-variant product:
Inventory: accurate. Every variant is a real stock number.
Use it when: you need the customer's choices recorded on the order, and you're willing to track stock yourself.
Line item properties are custom fields attached to a cart item. You add form fields to your product template — six dropdowns, one per slot — and the selections ride along with the item into the cart, through checkout, and onto the order.
It's free. It needs a theme edit, and it's the approach most "do it without an app" tutorials are quietly describing.
Here is the part those tutorials leave out, and it's the whole thing:
Shopify sees one product sold. The flavors are text riding along beside it. They are not stock.
So if you have four chocolate left and eleven customers each pick two chocolate, Shopify will happily take all eleven orders. Nothing stops it. Nothing warns you. You find out when you're packing boxes, and then you're emailing customers to ask whether a substitution is alright.
For some businesses that's fine. If you bake to order every morning and stock isn't really the constraint, line item properties are honest and cheap and you should use them.
If you're shipping from a finite shelf, this approach will eventually cost you a weekend.
One trap worth knowing. If the properties are attached to the add-to-cart form correctly, they survive "Buy it now" and go-to-checkout. If they're bolted on with JavaScript that writes to the cart after the item is added, they can vanish — the cart gets a new token and the data goes with it. Test the Buy-it-now path specifically. That's the one that breaks, and it breaks silently.
Inventory: not tracked. You are the inventory system.
Use it when: you have a small number of combinations and you want stock to be exactly right.
Build "Chocolate ×3 + Vanilla ×3" as its own product. Then build the next one. And the next.
Inventory per combination is perfect. But stock is not shared — selling out of the chocolate-heavy box tells the vanilla-heavy box nothing, because as far as Shopify is concerned they're unrelated products. You're now maintaining stock in two places: the real shelf, and the fiction on your product list.
At six or eight curated combinations this is completely reasonable and costs nothing. At nine hundred it isn't a strategy, it's a second job.
Inventory: accurate per combination, but not shared across them. That distinction is where this approach fails as you grow.
This is where most people end up, so it's worth being precise about what's on offer — including the free first-party option, which is better than most guides admit and worse than its name suggests.
Free, made by Shopify, and it does something genuinely useful: when a bundle sells, it deducts one unit from each component product's inventory. Real bundling, real stock, no monthly fee.
It does not do customer choice. Shopify's Bundles app supports fixed bundles and multipacks only — you decide what's in the box. There is no "pick any six."
Two other things to know before you commit: it's limited to your online store and headless storefronts (not Facebook, Instagram or TikTok), and it is not compatible with subscriptions or the Shopify Subscriptions app.
If you're selling a fixed six-pack, stop here. Install it, it's free, you don't need anything else. That's most stores, and paying a monthly fee for it would be silly.
Once the customer is choosing, you need what Shopify's own documentation calls a customized bundle — built on the Cart Transform Function, Shopify's supported primitive for exactly this. It's the mechanism that lets one thing in the cart resolve into several real components at checkout, so component stock decrements properly.
When you're comparing apps, these are the questions that actually separate them:
Inventory: accurate, if the app uses component references properly. Ask. Don't assume.
| Your situation | Use |
|---|---|
| One flavor per product, twelve flavors | Variants |
| A few fixed pre-made packs | Variants, or Shopify's free Bundles app |
| Customer picks, stock isn't the constraint (made to order) | Line item properties |
| Customer picks, and stock is finite | A bundle app with component inventory |
| Under ten curated combinations, want exact stock | One product per combination |
The honest summary: three of the four are free, and most stores should use a free one. The paid option earns its place in exactly one situation — the customer chooses, and you need to know what's left on the shelf. If that's not you, don't pay for it.
We build Choosebox, a Shopify app for the last row of that table — customers pick their own items, component inventory decrements, and shoppers can take multiples of one item within a minimum and maximum you set. If your situation is any of the other rows, one of the free approaches above will serve you better and we'd rather you used it.
Sources: Shopify developer documentation — product bundles · Shopify variant limit, 2026 · Shopify native Bundles limitations · Shopify official Bundles app review