October 3, 2026 · Muhammad Umar · More by Muhammad Umar
Shopify Plus Discount Stacking: The Tag Match Rule
Shopify Plus merchants can now stack two product discounts on one cart line, but only if each discount's tags mutually match the other's combination settings.
One Discount Per Line, By Default
Shopify's checkout has a standing rule: only one product discount applies per cart line. That's true even when a merchant has several active discounts that could technically match the same product. For most stores that's fine, but it breaks down the moment a merchant wants to stack a loyalty discount on top of a seasonal promotion for the same item.
Shopify Plus merchants can turn this off, but only through the GraphQL Admin API, and only with a specific setting: productDiscountsWithTagsOnSameCartLine, configured on a discount's combinesWith input. It requires combinesWith.productDiscounts to already be set to true, and it's gated to Shopify Plus — there's no equivalent on other plans.
The Match Has to Run Both Ways
The mechanic is stricter than simply turning stacking on. Every discount carries two separate tag sets: its own identity tags, set through the discount's tags field, and its combination tags, set through productDiscountsWithTagsOnSameCartLine. Two discounts only stack on the same line if each one's combination tags include at least one tag the other discount actually carries — in both directions.
Shopify's own documentation gives the clean version: Discount A is tagged LOYALTY and allows SEASONAL; Discount B is tagged SEASONAL and allows LOYALTY. Because each discount names a tag the other actually carries, they combine. If Discount A allowed SEASONAL but Discount B didn't reciprocally allow LOYALTY, nothing stacks — a one-way match doesn't count. This isn't capped at two discounts either: any number can share a line as long as every pair in the group satisfies the two-way match. Add a third discount, and it needs to clear the same mutual check against both of the others, not just one.
It's worth keeping the two tag fields mentally separate. Changing a discount's own tags doesn't touch what it allows to combine with, and vice versa — they're set independently, through different fields on the discount input.
Buy X Get Y Only Stacks Half the Order
There's a documented exception for Buy X Get Y discounts: they can only combine on the customer-gets side, never on the customer-buys side, even when the tag match is satisfied in both directions. A merchant building a stacked Buy X Get Y promotion needs to plan for that split rather than assume tag matching alone governs the whole order.
Why Now
This stacking capability landed in the GraphQL Admin API specifically to give merchants a migration path off Shopify Scripts, which Shopify is sunsetting on June 30, 2026. Anyone currently running line-level discount logic through Scripts has a concrete reason to look at this mechanic now rather than after the deadline.