Our current promotion is an Extra 20% Off Sale Items. In Shopify, we set the discount to apply to a specific collection: “All Sale Items.” Our “All Sale Items” collection was created with the condition that compare at price is greater than 0. We bulk-edit to add compare-at prices to any discounted variants of an item. Typically, these discounted items are in the same listing as regular-priced items. We just discovered that the discount is being applied to regular-priced items that share a listing with a discounted variant. These regular-priced variants DO NOT have a compare-at price. Is there something we’re missing here? It seemed to us that only products with a compare-at price would be put on sale.
There is no such thing as variant specific collection.
This should be apparent when reviewing the products in the collections products list
Collections contain products and products contain variants.
So EVERYTHING in a collection get a discount in a collection based discount.
Either duplicate the variants to be their own stand alone products and those special products go in the collection.
Keeping mind to use an automation app like mechanic to sync inventory by sku or or other sync apps.
e.g. https://tasks.mechanic.dev/?q=sku%20sync
Otherwise trying to have granular compounding conditions moves into the territory requiring a discount apps / shopify-functions.
Or custom draft order procees, e.g. with mechanic see: https://tasks.mechanic.dev/create-a-draft-order-from-the-cart
If you need custom script automations or custom shopify functions you can reach out to me for services.
To create a sale collection, you can tag the relevant products and then set up a collection that filters based on that tag.
There is no easy way to get all items that are on sale unless there you are using “Compare at price”
This is the difference being variant-level and product-level. Your compare-at price is variant-level, but collections are product-level. The standard collection has products not individual variants. So of course a discount applied to the collection is going to apply to the products as a whole not just the variants on sale.
You could apply the discount differently. Instead of to the whole collection, you can apply to specific products, where you can select the individual variants. You could also disconnect the variants from the parent, make them individual products, then the collection discount would work just fine. Or… just accept the discount applying to non sale items in the collection ![]()
I’m not sure what you mean by this.
We would love any solution that doesn’t involve duplicating the product. We prefer to keep sale variants and regular-priced variants in the listing.
When you create a discount, you can apply the discount either to Specific Collections, or to Specific Products:
Then click Browse to select the individual variants:
So, you have a collection of “sale products”, assuming with price is From $__. You click on the product, go to the variant, it’s on sale, but also has the discount on top. This is completely manual, meaning you have to manually select every variant you want the discount to apply to. Automation of this would require extensive work to set up in Flow.
OMGGG THANK YOU! Solved ![]()

