Audience, exclusions and items already on sale
Show an offer only to new, returning or tagged customers; keep some products or sale items out of it.
Every offer's Products step has three controls under the scope: Exclusions, Skip items already on sale, and Who gets this offer. All three are enforced twice: on the storefront (widget, cart bar, badges, mix & match) and at checkout by the discount Function, so what the visitor sees is what they pay.
Who gets this offer (audience)
- All customers: the default.
- New customers only: guests and logged-in customers without a previous order. Good for a welcome offer that should not keep giving discounts to regulars.
- Returning customers only: logged-in customers with at least one order. Guests never see it, so pair it with an account prompt or a logged-in campaign.
- Customers with a tag: logged-in customers carrying any of the tags you list (vip, wholesale, staff). Tags are the ones set on the customer in Shopify Admin, matched exactly.
The theme passes the customer's login state, order count and tags to the app blocks; checkout reads the same facts from the cart's buyer identity. A returning customer who is not logged in counts as a guest, and therefore as new. POS and draft orders have no storefront customer, so only “All customers” offers apply there.
Exclusions
Products and collections that the offer must never price, even though the scope covers them. Typical uses: a storewide “Buy 2, save 10%” that excludes gift cards and the Sale collection; a collection offer that excludes one hero product with its own bundle.
- Product page: no widget on an excluded product.
- Cart bar: an excluded item never counts toward a tier, a set or a spend goal.
- Checkout: the Function skips excluded lines; other lines in the cart are still discounted.
- Badges: excluded products get no badge from this offer.
Skip items already on sale
An item is “on sale” when its compare-at price is above its price. With this switched on, the offer ignores such variants: the widget hides its tiers on that variant, the cart bar leaves it out, and checkout keeps the sale price. Use it when a storewide offer runs during a markdown and you do not want the two to stack. Only the compare-at price counts; discount codes and other MixMaxer offers do not make an item “on sale”.
Priority still applies
Audience and exclusions decide whether an offer applies to a visitor and a product at all. When it does, the usual rule holds: the higher offer in the Offers list prices the product. An excluded product can therefore be picked up by a lower offer that does not exclude it.
Common problems
A logged-in customer with the right tag does not see the offer.
Tags are case-sensitive and must match exactly (“VIP” is not “vip”). Check the customer in Shopify Admin › Customers, then reload the product page; the theme reads the tags on every page load.
A returning customer sees the “new customers” offer.
They are browsing as a guest. Guests are treated as new because the storefront cannot know who they are. Checkout applies the same rule, so no wrong discount is given when they log in at checkout: the offer simply disappears.
An excluded product still shows a badge.
Press Re-sync on the dashboard: badges read the product handles stored at the last sync. Collections resolve to at most 250 products for the storefront copy; checkout has no such limit.
A sale item still gets the tier discount at checkout.
The variant has no compare-at price in Shopify, so it is not “on sale” in Shopify's sense; it is merely priced low. Either set a compare-at price or add the product to Exclusions.
More in Checkout & pricing
- Overlapping offers and priority: what the customer pays
- Test at checkout: what will the customer actually pay?
- Combining with discount codes
- Shopify Markets, currencies and taxes
- Using offers in Shopify POS
← All articles · Next: Test at checkout: what will the customer actually pay? · Still stuck? Contact support