· 7 min read
How to Create Conditional Discounts in Shopify (Buy From Two Collections, Save on Both)
Set up a Shopify discount that only applies when customers buy from multiple collections — and discounts exactly the items that qualify, nothing else.

Here’s a promotion every cross-sell dreams of: buy something from Bike Racks, add something from Panniers, and both items get 15% off.
Simple to say. Impossible to build with Shopify’s native discounts.
Not because it’s exotic — because a native discount can’t check what else is in the cart before it applies. In this guide I’ll build a conditional discount in Shopify that requires purchases from multiple collections, keeps it to full-price items, and discounts exactly the items that qualify — nothing else.
- Why native Shopify discounts can’t check your cart
- Building a discount that requires multiple collections
- Which items get the discount (and which don’t)
- Bonus #1: Conditions ride on everything else Super Discount does
- Bonus #2: Native checkout speed, and what’s coming next
Why native Shopify discounts can’t check your cart
Shopify ships 3 discount types — Product, Order and Shipping — and exactly one of them can ask for something before it applies: Buy X Get Y.
So let’s try to build “buy from Bike Racks AND Panniers, get 15% off both” with native Buy X Get Y. You hit two separate walls:
- The “buys” side is one pooled list. Native BXGY takes a single list of products or collections and a single minimum quantity, counted across all of them together. Set it to “buy 2 items from Bike Racks or Panniers” and a shopper with 2 bike racks and no panniers qualifies. There is no way to say one from each.
- The discount is one-way. Whatever the shopper buys on the X side stays at full price — the discount only ever lands on the Y side. “Both get 15% off” isn’t a configuration you can express; the qualifying items and the discounted items are different lists by design. (We covered the rest of native BXGY’s walls in our Buy X Get Y guide.)
And the plain Amount off products type? Its only prerequisite is a single minimum purchase amount or quantity. It can’t see collections in the cart at all — if the code is valid, it discounts its whole “applies to” list no matter what else is in the basket. (Order-wide discounts have the same limitation — see creating and using sitewide order discounts.)
Merchants ask for this constantly in the Shopify community — “discount if the customer buys from two different collections” — and the accepted answer is always the same: not natively.
Building a discount that requires multiple collections
Discount Bot’s Super Discount type now takes conditions on every rule: statements about what must be in the cart, combined with Match all or Match any.
Three scenarios, from the classic to the fancy.
Scenario 1: Buy from two collections, both get 15% off
The cross-sell from the top of this post. In your Super Discount, create a product rule worth 15% and give it two conditions:
- Condition 1 — items from Bike Racks, minimum quantity at least 1
- Condition 2 — items from Panniers, minimum quantity at least 1
Set the section to Match all, and you’re done:

Now the discount reads the cart:
- A bike rack and a pannier in the cart → both get 15% off
- A lone bike rack (or a lone pannier) → no discount at all
- One bike rack and two panniers → the discount pairs them up: the rack and one pannier get 15% off, the second pannier stays at full price
That pairing is the point. With minimum quantities set, items are matched into complete sets across your conditions, so the discount scales with pairs in the cart — two racks and two panniers means two full sets, all four items discounted.
Prefer generosity over pairing? Set both conditions to No minimum instead. Then the rule just requires at least one item from each collection to be present — and once it is, every item from both collections gets the 15%.

And this two-condition setup isn’t just for cross-sells. Swap the collections and it becomes an inventory tool: buy from New Arrivals AND from Outlet, get 20% off both uses your high-demand products to pull slow-moving stock through the warehouse — clearing dead inventory with a targeted offer instead of a store-wide clearance event that dents how shoppers perceive your brand.
Scenario 2: Full-price items only
Cross-sells and clearance don’t mix. If the panniers are already 40% off, you probably don’t want them earning another 15% — or qualifying the cart in the first place.
Each condition takes exclusions, and one of them is on-sale items. Add it to both conditions and marked-down products stop counting entirely: they can’t satisfy the condition, and they can’t receive the discount.

Like every sale-item rule in Discount Bot, “on sale” is checked in real time, against the compare-at price, at the moment the shopper’s cart is evaluated. Put products on sale, take them off again — the discount keeps up, and you never edit it.
You can also exclude specific collections or products per condition, the same scope-then-subtract idea our exclusions guide is built on.
Scenario 3: Cap how many items get the discount
Say the promotion works a little too well and someone shows up with four racks and four panniers. Happy day — but maybe 15% off all eight items is more generosity than you budgeted.
Open the rule’s Discount limits section:
- Maximum discounted items — the discount applies to at most this many items, no matter how many qualify
- Discount order — when there’s a choice, discount the most expensive first (the default) or the cheapest first
Set the two-collection rule from Scenario 1 to No minimum with a maximum of 2 discounted items, and that eight-item cart still qualifies — but exactly the 2 most expensive qualifying items get the 15%.

Which items get the discount (and which don’t)
The thread through all three scenarios: the items that satisfy the conditions are the items that get discounted. Not the whole cart, not a separate reward list — the qualifying items themselves.
That gives you three guarantees worth spelling out:
- Lone extras get nothing. An item that didn’t help satisfy the conditions isn’t discounted, even if it belongs to one of the collections.
- You choose the tiebreak. When more items qualify than the discount will cover, Discount order decides — most expensive first or cheapest first, deterministically.
- It’s all live. Conditions are evaluated against the cart as it stands at checkout. Cart changes, collection changes, price changes — the discount re-evaluates every time, and a cart that stops qualifying simply doesn’t get the discount.
Bonus #1: Conditions ride on everything else Super Discount does
Conditions didn’t arrive as a separate discount type — they’re a new power on the Super Discount rules you may already be running.
That means the usual Super Discount tricks still hold:
- One code, several rules — stack product, order and shipping savings on a single code — or on thousands of unique bulk codes — and now the product discounts can require the cart to qualify first
- Code or automatic — conditional rules work in both
- Native discounts unaffected — Discount Bot discounts and native Shopify discounts continue to live side by side
Bonus #2: Native checkout speed, and what’s coming next
Conditions run inside Shopify Functions — the same native discount machinery Shopify itself uses. Nothing loads in your storefront, nothing slows your theme, and there are no cloned or hidden products propping anything up.
And in the spirit of telling you what the app doesn’t do yet: conditions apply to product and order rules — and a condition’s minimum can now be an amount (“at least $200 of these items”), not just a quantity. That’s the machinery behind tiered discounts by order total: spend $100, save $10. Shipping rules don’t take conditions yet — if that’s what your promotion needs, tell us and you’ll likely move it up the queue.
Conclusion
“Buy from these two collections, save on both” went from unbuildable to a two-condition setup.
What’s the pairing your store would promote first?
Install Discount Bot from the app store and set it up — there’s a 7 day trial.



