Mix and match bundles on Shopify: "any 3 for $60" done right (2026)

Last updated: · 7 min read

Mix & match is the offer where the customer builds the set: any three tees for $60, any four coffees with 20% off, pick two from this collection and the cheaper one is half price. Fashion, socks, candles, coffee, tea, cosmetics, snacks and anything sold in flavours or colours lives on it.

Shopify has no native way to do it. This guide explains why, what the pricing must do so the offer is fair, and how to set it up.

Why Shopify cannot do it natively

Shopify's discounts know products, collections, quantities and amounts, but not sets. "Buy 3 from collection A, get 15% off" can be built as an automatic discount and gets you a percentage version of the offer. A set price ("any 3 for $60") cannot: the discount needed depends on which three items the customer picked, and the fair way to compute it is to discount the cheapest units in the set so that each full set costs exactly $60. No native discount does that calculation, and nothing on the product or collection page counts progress ("2 of 3, add one more").

The free Shopify Bundles app builds fixed bundles and multipacks; its documentation and third-party reviews agree it does not do mix & match.

The three pricing modes

ModeExampleHow a fair app must compute it
Set priceAny 3 for $60Within each full set, discount the cheapest units so the set totals $60; units beyond a full set stay at regular price
Percent per setAny 4, 20% offEvery unit in the full sets is discounted; a fifth unit is not
Amount per setAny 2, $10 offA fixed amount per complete set

"Cheapest units are the discounted ones" is the sentence to look for in any app's documentation. Without it, a customer who adds two $15 tees and one $40 hoodie to an "any 3 for $45" offer either gets a loss-making price or a confusing one.

Also required: the highest set size the cart reaches is the one applied (sets = count ÷ N, rounded down), and different products and variants in the collection all count toward one set.

Setting it up in MixMaxer

  1. Offers › Create offer › Mix & match (templates "Any 3 for a price" and "Mix any 2 / any 4").
  2. Applies to: a collection works best, because it keeps following the collection as you add products. A product list or a tag also works.
  3. Set sizes: rows of "Any N" with a set price, a percent off or an amount off per set. Sizes must increase: any 3 for $60, any 5 for $90.
  4. Audience and exclusions (optional): new or returning customers only, a customer tag, exclude a collection, skip items already on sale.
  5. Test at checkout: build a sample cart with three cheap items and one expensive one, press Run test, and check that the cheapest units carry the discount and the total equals the set price.
  6. Publish. Optionally add the Mix & match block to the collection template (theme editor › Add block › Apps › MixMaxer mix & match): a builder with a live counter on the collection page.

What the customer sees: on the product page, the set sizes and, once items are in the cart, "2 of 3 in your cart · add 1 more". In the cart bar: "Add 1 more to complete the set: any 3 for $60" and "Set complete". At checkout, one discount line with the offer's name. The discount is a Shopify Function, so it applies in Shop Pay, accelerated checkouts and POS. Help article: Mix & match.

Choosing the numbers

  • Set size: the quantity the customer already buys plus one. If most tee orders are two, run "any 3".
  • Set price: price the set so the discount per unit stays below a third of the gross margin of the cheapest item in the collection, because that is the item the discount will land on.
  • Two sizes maximum to start (any 3, any 5). A third size rarely changes behaviour and makes the widget busy.
  • Exclude new arrivals or a "full price" collection if you do not want the offer on them, rather than narrowing the collection by hand.

Whether "any 3 for $60" beats "any 3, 20% off" is a question for a test, not a meeting: in MixMaxer one click creates variant B of the live offer, visitors are split 50/50, each pays what they saw, and the read-out is profit per visitor. Fixed prices often win below the $50 mark; percentages above.

Known limits worth knowing

  • The cart bar counts the first 250 products of a collection; checkout is not limited, the Function checks collection membership directly.
  • Tags cannot be read by the cart script, so a tag-based set shows progress only at checkout; use a collection where possible.
  • If a set price is higher than the actual prices of the cheapest N items, nothing is discounted; keep set prices realistic.
  • An item already priced by a higher-priority offer (a volume tier, a gift) is not counted in the set. The Offers list order decides.

FAQ

Can Shopify do "any 3 for $60" without an app?
No. A collection discount can give a percentage off from a quantity, but not a set price, and nothing counts progress toward the set on the storefront.

Does the Shopify Bundles app support mix and match?
No. It builds fixed bundles and multipacks. Build-your-own sets from a collection need a third-party app.

How should the discount be split across the items in a set?
On the cheapest units of each full set, so that each set costs exactly the set price and items beyond a full set stay at regular price. That is what MixMaxer's checkout Function does.

Can customers mix variants (sizes, colours) in a set?
Yes. Only the total count from the set matters, so different products and variants add up to one set.

Does the mix & match discount apply in Shop Pay and POS?
In MixMaxer yes, because it is a Shopify Function. Apps that recalculate the cart in the theme can lose the discount in accelerated checkouts.


MixMaxer: mix & match sets with fair pricing at checkout, a builder block for collection pages, A/B tests and profit per offer, from $0. Install from the Shopify App Store · Mix & match help article. Last checked 1 November 2026.

More guides and comparisons