shopify discount not showing on product page

Discount Applied but the Product Page Still Shows the Old Price

The discount works, the order total is right, and the product page still shows full price. That is not a bug — it is two different mechanisms, and which one you need depends on what shoppers have to see.

5 min read · Updated 2026-08-23

You set up a discount, tested it, and the order total was correct. But the product page still shows the full price, with no struck-through original. Nothing is broken. Shopify has two separate ways to make something cheaper, and they show up in different places.

The two mechanisms

Discounts (codes and automatic)Changing the price
Where it appliesAt checkout, on the cart totalOn the product itself
What the shopper sees browsingFull priceThe sale price
Struck-through originalNoYes, if compare-at is set
Shows in collection and search resultsNoYes
Needs to be undone afterwardsNo — it expiresYes — prices stay where you put them

When a discount is the right tool

  • A code you send to a specific list, where the offer is not meant to be public.
  • A cart-level rule, such as spend over an amount or buy one get one.
  • A short campaign where you do not want the price history of the product to move at all.

When you need an actual price change

  • Shoppers have to see the sale price while browsing, before they reach checkout.
  • You want the struck-through compare-at price that makes a discount legible.
  • The promotion is the reason people are visiting — a seasonal sale, a clearance, Black Friday.

The tradeoff

A discount expires by itself. A price change does not. Whatever puts the price down has to put it back, and that step is the one that gets forgotten.

Why the compare-at price matters

Lowering a price on its own reads as a cheaper product, not as a sale. The compare-at field is what renders the struck-through original next to it. Skip it and shoppers see a lower number with nothing to compare against — the discount is invisible even though it is real.

The part that costs money

Because a price change is permanent until something changes it back, the end of the promotion carries the risk. Restoring by hand means finding the original price of every variant, including the compare-at value, and typing it back correctly. A spreadsheet export taken before the change is the minimum insurance; a recorded snapshot per variant is better, because it does not depend on anyone remembering to export.

How to decide

  1. Ask whether the shopper needs to see the discount before checkout. If no, use a discount code or automatic discount and stop here.
  2. If yes, plan a price change — and decide how it comes back before you decide how it goes down.
  3. Record the original price and compare-at price of every affected variant, somewhere outside the tool making the change.
  4. Set the compare-at price so the sale reads as a sale.
  5. Write down the exact end time in the store timezone, and who is responsible for confirming prices returned.

Keep a recovery plan before you change prices

SaleGuard snapshots your original prices, previews every change, schedules the sale, and restores automatically when it ends. Install SaleGuard from the Shopify App Store to use it on your next promotion.

Install SaleGuard on Shopify