The Ultimate Guide to Excluding Sale Items from Shopify Discounts (Variant-Level Solutions)
Hey there, fellow store owners! Let's tackle a common head-scratcher in the Shopify world: how to prevent your welcome coupon codes from stacking on top of already discounted sale items. It sounds straightforward, right? Just exclude sale products. But as many of you know, it gets tricky, especially with variant-level sales.
We recently saw a fantastic discussion in the Shopify community about this, sparked by a store owner needing to apply a 15% welcome discount only to full-price items, even when some variants of a product were on sale (e.g., a 12-month t-shirt on sale, but the 18-month one full price). The challenge? Customers should be able to buy both, but the coupon should only apply to the full-price variant.
The Core Challenge: Why Product-Level Exclusions Fall Short
The key insight from the community, highlighted by experts like Ramadan_Alex, is that standard Shopify collection-based exclusions often operate at the product level. If you exclude a product because one of its variants is on sale, you inadvertently block the discount from applying to all its other (full-price) variants too. What you really need is the discount to evaluate each cart line or variant separately.
Two Approaches to Solving Discount Stacking
The community discussion revealed two main outcomes when dealing with this:
- Apply the code selectively: The discount applies only to full-price items in the cart, skipping sale variants. This is often preferred for a smoother customer experience.
- Reject the code entirely: If any protected (sale) item is in the cart, the discount code is blocked with a message, requiring the shopper to adjust their cart or code. This offers stricter control.
Let's explore how to achieve both, leveraging insights from the community.
Path 1: Selective Application (Discount applies only to full-price items)
Option A: Native Shopify Solution (Requires New Collections Model)
A brilliant native solution, detailed by cuongnm_trooix and HBNStudio, is available if your Shopify admin has the new collections model that supports variant-level collections. Here's how:
- Create a New Automated Collection: Go to Shopify Admin > Products > Collections.
- Choose "Variants" as the Source: This is crucial. If you see this, you have the new model.
- Set the Condition: Use
Compare at price > is not set. This collection will then include only full-price variants that lack a compare-at price. - Create/Edit Your Discount: Ensure your welcome code is an "Amount off products" discount, not an order discount.
- Target the New Collection: Set the discount to apply only to the automated collection you just created.
Key Considerations: This requires the new collections model, your full-price variants must have a truly empty compare-at price (not 0.00), and this field must reliably mark your sale items.
Option B: App Solutions for Selective Application
If the native method isn't an option, several apps offer robust variant-level control:
- Deducto: Smarter Promotions: As shared by deducto, their app uses a native "Is On Sale" condition evaluated per cart line. You'd configure your discount to apply only when "Is On Sale is false." They offer a guide and a free plan.
- Regios Automatic Discounts: Noted by LitExtension, this app has a specific "don't apply to items already on sale" setting that checks compare-at pricing directly at the variant level.
- Discount Bot: Sitewide sales: Recommended by LitExtension and Guleria, it allows you to define an exclusion list for products/variants alongside your welcome code.
Path 2: Rejecting the Code Entirely (Code blocked if sale item is present)
For a stricter approach that prevents any partial application, consider apps that block the entire discount if a sale item is present:
- HBN: Discount Floor Guard: The developer, HBNStudio, explained that their app implements a "do not discount sale items again" rule. If a discount code is applied with a sale item in the cart, the checkout is blocked with a message. They offer a free plan for basic rules.
- Alpha Sale: Also mentioned by LitExtension, this app focuses specifically on preventing sale-item stacking and likely offers similar "reject" functionality.
The Golden Rule: Always Test Your Setup!
Every expert in the thread, including HBNStudio, Ramadan_Alex, and cuongnm_trooix, stressed the importance of thorough testing. Before going live, perform a mixed-cart test:
- Add one sale variant (e.g., your 12-month t-shirt) to your cart.
- Add one full-price variant (e.g., your 18-month t-shirt) to the same cart.
- Apply your welcome discount code at checkout.
- Verify the Outcome: Confirm if only the full-price variant receives the discount (selective application) or if the entire code is rejected (code blocking). This crucial step immediately shows if your solution works at the variant level.
Mastering your discount strategy, especially with the nuances of variant-level sales, is a big win for both your store's profitability and customer satisfaction. Whether you use Shopify's native tools or a powerful app, understanding variant-level exclusions and rigorous testing will ensure your promotions hit the mark every time.