Using variants? Your sale pricing won't appear correctly on storefront

Unless you put ALL variants of an item on sale, shopify won’t display your sale pricing correctly on your storefront.

If you only put one or some variants on sale, Shopify will shows the range from the lowest price to the highest price across all variants…which means the strikethrough price and sale price won’t show correctly on your storefront (and the strikethrough price can even be higher than the sale price).

Shopify knows about this and isn’t doing anything to fix it. Support was zero help either.

Only option is to separate the variant(s) on sale into separate, individual item(s), which totally defeats the purpose of variants. It’s like nobody at Shopify has ever used Shopify to sell products online…

oh wait,…actually, it’s even worse: even if you put ALL the variants on sale, it STILL doesn’t show correctly on storefront: Shopify STILL shows the range from the lowest price to the highest price across all variants…so the wrong strikethrough and wrong compare-at prices show (and compare-at is higher than strikethrough)

That functionality is very theme-dependent and can easily be changed either via code edit, or, “Custom liquid” block in Horizon family themes…

It’s not “Shopify problem”

Hi @ooe518

This is usually controlled by the theme logic, not Shopify itself :slightly_smiling_face:

Many themes calculate pricing ranges differently, especially for variants and compare-at prices. In most cases, the storefront pricing display can be corrected with custom Liquid logic or a small theme code adjustment.

Putting items on sale and showing that sale correctly on the storefront is a pretty basic online platform service – super disappointing that shopify can’t deliver correct storefront pricing without custom coding…more merchants need to be aware of this, so hope this post helps spread the word!

@tim_tairli and @devcoders just said its based on the theme your using. Shopify makes it so themes can decide how they want to display it.

Instead of trying to look for ways to fix your issue, all you been doing on the forums is making threads and complaining about Shopify.

How about stop complaining and make a thread like: How do display sale pricing for variants?

That strikethrough price looking completely broken when only a few colors go on clearance is a nightmare for customers to look at. Forcing us to split a single product into multiple individual listings just to fix the display completely destroys any clean catalog setup and multiplies our backend workload. It’s wild that a basic retail workflow like markdown variants requires this kind of ridiculous workaround.

Ok, so the product has one variant on sale, others do not have compare_at_price, what you expect to be shown in collection grid?

Do you want to show “1 variant on sale”?

Of course it should – that’s the purpose of it – show original, higher price as crossed out.


You've joined the community 5 years ago and then, all of a sudden you've just half-discovered that prices are usually shown the way the are?

You’re totally right and honestly, this has been a huge headache for a lot of store owners who run sales on products with multiple sizes or colors.

Most modern themes (like Dawn) let you make a quick edit. Go to snippets/price.liquid and change how the price shows up. Instead of showing a wide range like 20–20–40, you can make it say from $20 or show the sale price for the default variant you’ve selected.

Some themes already have this built in. Just go to Online Store > Themes > Customize, then look around your product page or collection settings. See if there’s a box you can check that says something like Show lowest variant price or show original price when variant is on sale. Turn that on, and the sale badge will show up right away without any fuss.

If your theme doesn’t have that setting, just drop your theme name here. Someone in the community can probably give you the exact few lines of code to copy and paste into your price file. Then your sale badges will work perfectly.

Hi @ooe518

This is expected Shopify behavior when only a subset of variants are discounted. The min and max for variant prices are what Shopify’s StorefronDisplays Shows, app not per variant pricing which can be confusing. A good fix, is sort the sale variants by some means (automated collection, tagging) and half them off as separate products. The original product will remain for non sale variants or a theme customization or a small script that will make the variant compare at price show the selected variant instead of the product price at product level.

after having some thought about this, can you explain or show an example of exactly how or what you expect it to look like? im genuinely interested of how you guys want it to look like on the collection page because I can’t picture how it would look like. @ooe518 @order_ops_guy

Yeah like imagine a shirt with 10 colors, but only the red and green ones are on clearance.

Most merchants would expect the collection page to either:

  • show a normal price until a sale variant is selected
    or

  • show something like from $X without making the whole product card look discounted.

Right now it can make the entire listing look permanently on sale even though most variants are full price, which gets messy pretty fast once catalogs get bigger.

This is a real limitation in how Shopify handles price ranges for variants — but it’s fixable at the theme level, which is where the display logic lives.

When a product has multiple variants at different prices (or compare-at prices), Shopify’s storefront API returns a price_range object with min and max values. Most themes render that as “$X – $Y” by default, which breaks the strikethrough display when only some variants are on sale.

The fix depends on what you’re trying to do:

If ALL variants have the same sale price, you can update the theme’s product price snippet to check whether min and max are equal and render a single price instead of a range. That gets you the correct strikethrough behavior.

If only SOME variants are on sale, the cleanest approach is to display pricing dynamically based on the selected variant rather than the product-level range. Most modern themes support this — the price block updates when the customer picks a variant. If yours doesn’t, it usually requires a small Liquid/JS edit to the product form.

The theme you’re on matters a lot here. Dawn and Horizon handle this better than older themes out of the box. If you share which theme you’re running I can point you to the specific snippet to edit.

Samuel

Hi @ooe518,

I read your recent thread about variant sale prices and compare-at prices appearing incorrectly on the storefront.

Did you eventually resolve it through the theme?

I’m researching how Shopify teams verify buyer-visible prices after a campaign. Do you currently check product pages manually after changing prices, and has this issue affected more than one promotion?