Shopify mix and match bundle discounts: how they work and how to set one up
How mix-and-match bundle discounts work at Shopify checkout, plus a no-code setup walkthrough.
"Build your own box." "Pick any 3 different scents, save 20%." Mix-and-match bundles let the customer design the offer themselves, which is a big part of their appeal. They're also the format Shopify's free tools don't natively support. This guide explains exactly how a mix-and-match discount works at checkout, then walks through setting one up without touching your theme.
What a mix-and-match bundle actually is
A mix-and-match bundle lets a shopper choose N items from a curated pool and get a discount for hitting the threshold. Examples:
- Pick 3 different candles from our collection → 15% off.
- Build a case of 6 different wines → $12 off.
- Choose 4 different tees → 20% off.
Apps differ in what they count. In Cobundle, the threshold counts different products: three of the same candle count as one. Quantity breaks on a single product ("buy 3 of this candle, save 10%") aren't supported; that's a volume-discount app's job.
The key difference from a fixed bundle is choice. You define the eligible pool and the rule ("any 3 from this collection"); the customer fills in the specifics. That flexibility is the appeal, and it's also why it needs conditional discount logic that a single fixed price can't provide.
Why Shopify's native Bundles app can't do mix-and-match
Shopify's free Bundles app builds fixed bundles and multipacks: you, the merchant, define every component. It has no concept of "let the customer pick any N from this pool," and no tiered/threshold discount engine. Shopify's own documentation frames the app around fixed components, and true mix-and-match isn't part of it.
So if mix-and-match is what you need, the free app can't get you there. This is one of the clearest cases for an alternative to native Bundles. The good news is that Shopify provides the mechanism apps use for it: discount functions.
The mechanic: how a mix-and-match discount applies at checkout
Modern mix-and-match discounts run on a Shopify Discount Function: a small program that executes inside Shopify's checkout. Here's the sequence in plain terms:
- The customer adds items from your eligible pool to their cart as normal, real products.
- At checkout, Shopify hands the cart contents to the discount function.
- The function checks the rule: are there at least N qualifying items? (In Cobundle, N different products.)
- If yes, it returns a discount operation, and Shopify applies it, server-side, in a few milliseconds.
One important detail worth setting expectations on: when a discount applies to a bundle, Shopify distributes it proportionally across the qualifying line items. So a "$12 off, pick 6" bundle doesn't show as a single $12 line: each of the 6 items shows a proportional share of the saving. The customer's total is correct; the presentation is spread across the items. This is normal Shopify behavior, not a bug, and it's worth knowing before a customer emails asking why the discount looks "split up."
Because the whole thing runs in the checkout, there's no theme code, no cart-drawer JavaScript to maintain, and the discount doesn't quietly disappear when a shopper uses a fast-checkout button. (If a bundle discount ever doesn't appear, our checkout troubleshooting guide covers the usual causes.)
Setup walkthrough (no code)
1. Define the pool and the rule
Decide two things up front:
- The pool: which products are eligible (often a collection makes this easy to manage).
- The rule: how many different products qualify and what the reward is.
Example: Pool = your candles. Rule = any 3 different candles → 15% off.
2. Install a function-based bundle app
Choose a bundle app that states it applies discounts at checkout via Shopify Functions, so Shopify calculates the discount in its own checkout rather than code in your cart page. We make one such app (Cobundle); the steps below generalize to most function-based apps.
3. Create a mix-and-match bundle
- Set the bundle type to mix-and-match (sometimes called "pick N" or "build your own").
- Attach your eligible pool (depending on the app, a collection or a hand-picked product list).
- Set the threshold (e.g. "minimum 3 different products").
4. Choose the discount
Pick the reward type that fits the offer:
| Discount type | Best for |
|---|---|
| Percentage (e.g. 15%) | Mixed-price pools where you want the saving to scale |
| Fixed amount (e.g. $12 off) | Concrete, easy-to-communicate savings |
Want a round-number price like "this set for $50"? That's a fixed set (specific products, one set price), not mix and match. In Cobundle, set pricing is available on fixed sets; mix and match uses percentage or amount-off tiers.
You can also layer tiers: "any 3 different products for 15% off, any 5 for 20% off." That's covered in detail in how to add tiered bundle discounts.
5. Configure combinations
Decide whether this discount may combine with other promos. In Shopify, two discounts stack only if each one explicitly allows the other's class (product, order, or shipping). If your mix-and-match discount should coexist with free shipping, enable it; otherwise shoppers get one or the other.
6. Test logged out, in incognito
Add exactly the threshold number of different products, then one fewer, in a private/incognito window while logged out, and confirm the discount fires at N and not at N−1. Testing inside your admin session can give false positives.
When mix-and-match is the wrong choice
Mix-and-match isn't always the move:
- Thin margins: letting customers pick freely can steer them toward your lowest-margin items at a discount. Curate the pool to protect margin.
- You want a specific outcome: if you're pushing a particular hero set, a fixed bundle communicates it more clearly than an open pool.
- Very small catalogs: with only a handful of SKUs, "pick any 3" can feel thin. A fixed bundle may present better.
If a simple fixed set at a fixed price does the job, use that. Don't add choice for its own sake.
Related: what Shopify's free Bundles app can and can't do, with the current product, option and discount limits.
FAQ
Does Shopify's native Bundles app support mix-and-match?
No. The free app creates fixed bundles and multipacks with merchant-defined components. Letting customers pick any N from a pool requires a third-party app with a discount function, or a custom build.
Why does my mix-and-match discount show split across items at checkout?
That's expected. Shopify distributes a bundle discount proportionally across the qualifying line items, so each item shows a share of the total saving. The order total is still correct.
Does mix-and-match require Shopify Plus?
No. It runs on a Shopify Discount Function, and apps from the Shopify App Store that include one work on all plans. Plus is only needed to build your own custom app with Shopify Function APIs.
Can I combine tiers with mix-and-match?
Yes. You can set thresholds like "any 3 different products for 15% off, any 5 for 20% off." That's a tiered mix-and-match discount.
Will it change my theme or product pages?
The discount itself is applied at checkout with no theme code. Some apps also offer an on-page bundle builder widget, which is optional and separate from the discount logic.