Selling a multi-pack on Shopify is easy until each unit needs to be different. A 3-pack of tees where the customer wants a Small, a Medium and a Large. A 6-pack of drinks in three flavours. The storefront makes this awkward, and most merchants solve it the worst possible way: by building a separate “bundle SKU” for every combination. Here is how to sell a multi-pack with mixed variants on Shopify without doing that — one product, a variant picker per unit, discount held across the mix.
The problem: combination SKUs don’t scale
The instinct is to create a bundle product and add a variant for each valid combination. It works for a 2-pack of a product with two colours. It falls apart fast.
A 3-pack of a tee that comes in 5 sizes is 5 × 5 × 5 = 125 combinations. Add colour and you are in the thousands. Every one of those is a product option you have to name, price, photograph and — the real killer — keep in stock as its own inventory item. Shopify also caps you at 100 variants per product (and, historically, 3 option types), so most of those combinations simply cannot exist.
Even where the math fits, you have split one product’s demand across dozens of dead SKUs, buried the real product under a wall of dropdowns, and created an inventory-sync nightmare where “Small/Medium/ Large” can be out of stock while every underlying tee is fully in stock.
The fix: one product, a picker per unit
The clean approach flips it around. Keep a single product with its normal size/flavour/colour variants — the ones you already manage stock for. Then, on the product page, sell the pack as a quantity offer and render one variant dropdown per unit.
Pick the “3-pack” tier and three dropdowns appear — unit 1, unit 2, unit 3 — each listing the real variants. The shopper chooses Small, Medium, Large (or Cola, Lemon, Orange), and each selection is added to the cart as its own line item pointing at the actual variant. No combination SKU is ever created. Inventory decrements against the real variants, so your stock stays honest.
This is exactly what the per-unit variant picker in Profit Flow AOV Bundle does. You set the pack size and tiers once; the picker builds itself from the product’s variants. Adding a size next season means editing the product — not rebuilding a matrix of bundle SKUs.
Why the discount survives the mix
The obvious worry: if each unit is a separate cart line, does the multi-pack price still apply? It does — but how it is enforced is the whole game.
If the discount lives in storefront JavaScript, it looks right in the cart and then quietly evaporates at checkout, because checkout re-reads the cart server-side and the JS math never made it there. The correct mechanism is a Shopify Discount Function: it runs at checkout, sums the product’s total quantity across every variant line, and applies the tier discount whenever the count qualifies.
Because it counts total quantity and not “three of the same variant,” a cart holding one Small, one Medium and one Large reads as three units — and unlocks the 3-pack price. The customer pays exactly what the product page promised. That is the same engine behind ordinary quantity breaks on Shopify; the picker just lets the units differ. If you want the deeper walkthrough of choosing a variant per unit, see how to mix variants in a bundle.
The short version
- Don’t pre-build a combination SKU per size/flavour mix — it explodes, hits variant caps and wrecks inventory.
- Do keep one product and add a variant picker per unit on a quantity offer.
- Enforce the discount with a Discount Function so mixed variants still hit the tier at checkout.
Profit Flow AOV Bundle runs per-unit variant packs (plus quantity breaks, bundles, BOGO, gifts and mix & match) on any Online Store 2.0 theme, free. Add it to your store →