Why doesn't my discount show up anywhere until the customer gets to checkout?

Shoppers only find out about your sale at checkout — here's how to actually show it on the product page without misrepresenting the price.

discountsthemepricing

What's going on

A merchant sets up a sale, whether it's a percentage-off automatic discount, a seasonal discount code, or a spend-threshold promo, and then discovers the product page still shows the regular price. Customers only see the reduced total once they've added items to their cart or reached checkout, which means some are abandoning carts thinking there's no deal at all, and others are entering a code hoping it applies, only to feel misled when it doesn't match what they expected.

This is one of the most repeated complaints in Shopify's merchant forums: discounts, especially automatic discounts and discount codes, are checkout-time math, not storefront display. Shopify's discount engine is built to calculate the final price a customer pays, not to rewrite the price shown on a product or collection page before that calculation happens. Themes typically only show a visual "sale" indicator when a variant's Compare at price is higher than its current price. Everything else, including automatic discounts, codes, cart-level percentage-offs, and bundle deals, lives in the checkout pricing logic and never touches what's rendered on the product page unless a merchant or developer explicitly builds that connection.

Why it happens

Shopify treats the price shown on a product page and the discount applied in cart or checkout as two separate systems. The product page renders whatever is in the variant's Price and Compare at price fields, period. Discount codes and automatic discounts are evaluated later, when Shopify calculates cart and checkout totals, and that calculation isn't designed to write back onto the storefront page the customer is currently browsing.

Because of that split, any promotion that isn't a straightforward Compare-at-price markdown, meaning anything using Shopify's discount codes or automatic discounts feature, stays invisible until the customer's cart actually triggers it, which is often the first time they see any reduced number at all.

5 ways to fix it

1

Best free fix: let Compare-at Price do the work

Most Shopify themes automatically render a strikethrough "was/now" price whenever a variant has a Compare at price set higher than its current Price — no app or code required. Set it once, or bulk-edit through a CSV import or the bulk editor, whenever you drop a price for a sale, and the theme shows the savings on the product page, collection grid, and cart automatically. This only works for straightforward price-drop promotions, not for cart-level discount codes or automatic discounts calculated at checkout.

2

Automate it with Shopify Flow so you never forget to revert it

If Flow is available on your plan, build a workflow that updates a product's compare-at price when a sale starts and clears it back once the sale ends. This keeps the storefront price honest without someone having to remember to undo a manual edit later, and it doesn't require any additional app.

3

Surface non-price discounts with a metafield-driven theme snippet

For promotions that don't touch the variant price directly, such as a percentage off orders over a threshold, a buy-one-get-one deal, or free shipping, store the current promotion text in a metafield and add a small snippet to your product template to display it as a banner or badge. This is a one-time theme customization that keeps the actual charged price separate from the marketing message, so you never show a number the customer won't actually pay.

4

Use a discount-display app if you'd rather not maintain it yourself

Several apps in the Shopify App Store are built specifically to detect your active discounts, including automatic ones, and generate on-page sale badges or strike-through pricing without you manually touching Compare at price or metafields. This is worth considering if you run frequent, rotating promotions and don't want to build the Flow or metafield approach yourself.

5

For code-only discounts, just tell people the code exists

A discount code by definition isn't applied until someone enters it, so a theme can't legitimately show the discounted price before that happens. The honest fix is an announcement bar, banner, or on-site popup that tells shoppers the code and what it does, for example "Use SAVE10 at checkout." That's messaging, not a price change, so it won't create a mismatch between what's shown and what's charged.

Bottom line

There's no single Shopify setting that automatically projects every kind of discount onto product pages — the right fix depends on which discount mechanism you're using. Price-drop sales are solved for free with Compare-at Price, optionally automated with Shopify Flow. Discounts that don't change the line price need a metafield-backed theme snippet or an app to communicate them without misleading customers about what they'll actually pay. If you just need to let shoppers know a code exists, a neutral on-site announcement or popup can do that job without touching pricing logic at all.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.