shopify-promotionspricing-strategydiscount-automationsale-setupcompare-at-pricetroubleshooting

    Shopify Compare at Price: What It Is, Why It Isn't Showing

    Promly Team9 min read

    Short Answer

    A compare-at price shows only when it is higher than Price on the same variant and your theme displays it. Check the variant's Compare-at price against its Price, then the Markets price if you sell in more than one market, then your theme's product card setting. A discount never shows as a strikethrough, because it is separate from compare-at pricing.

    You set a sale, opened the product, and the crossed-out price is missing. A strikethrough is not a discount. Shopify draws one only when the Compare-at price field on that variant holds a number higher than Price and the theme chooses to display it. A correct value in one place can still be invisible in another.

    The causes below run in the order they usually turn out to be the problem, each with the Shopify fix. If you have not set a strikethrough yet, the steps are under How to Set a Strikethrough Price From Scratch, further down this page.

    Why It Happens

    I created a discount, not a compare-at price

    A discount, whether a code or an automatic discount, changes the amount charged at checkout. It never touches the product page or the Compare-at price field. So if you searched your way here, your discount is working.

    How to tell: the Compare-at price field on that variant is empty.

    The Compare-at price is not higher than Price on that variant

    Shopify strikes through a compare-at price only when it is higher than Price, checked variant by variant. A value equal to or below Price shows nothing, and one mistyped variant hides only that size or color.

    How to tell: open each variant and compare the two numbers.

    I sell in more than one market, and that market has no compare-at price

    A fixed market price overrides the prices and compare-at prices set in Shopify Admin, so a sale can show in one country and not another. Check the market's prices, then the catalog's "Include compare-at price" setting.

    How to tell: the sale shows in one country and not another.

    My theme does not show the sale price on collection pages

    Display depends on the theme. A product page can show the strikethrough while the collection card shows nothing. Check the product card settings in your theme's editor; the name depends on the theme.

    How to tell: the product page shows the strikethrough and the collection card does not.

    How to Fix It

    Cause 1: you created a discount, not a compare-at price

    1. Decide whether you want a strikethrough. If you do, follow the steps under How to Set a Strikethrough Price From Scratch below. If you do not, nothing is broken: the discount applies at checkout.

    Cause 2: the compare-at price is not higher than Price

    1. Go to Products in Shopify Admin and open the product.
    2. For each variant, enter a Compare-at price higher than its Price.
    3. Save, then check the product page on your storefront.

    Cause 3: a market has no compare-at price

    1. Go to Markets and check the market's prices for a fixed price that overrides your Admin prices.
    2. Open the catalog for that market under Markets > Catalogs and check the "Include compare-at price" setting.
    3. Save, then check the product page for that market.

    Cause 4: your theme hides it on collection cards

    1. Open your theme's editor and find the settings for the section that shows product cards.
    2. Look for an option that shows the compare-at price on product cards. Its name depends on your theme.
    3. Save, then check the collection page on your storefront.

    Compare-at price vs sale price vs discount: which one shows where

    These three terms get used almost interchangeably, and they should not be: each does a different job and shows up in a different place.

    Compare-at pricePrice (sale price)Discount code / automatic discount
    What it isThe original, higher amount stored per variantThe amount the shopper is actually chargedA rule applied at checkout that reduces the total
    Where it showsProduct and collection pages, struck throughProduct pages, cart, checkout, order confirmationCart and checkout, after it is applied
    Changes what the shopper paysNo, display onlyYes, this is the charged amountYes, if the code is entered or conditions are met

    Compare-at price makes the saving visible before a shopper clicks "Add to cart." A discount code or automatic discount is a third, separate mechanism that changes price at checkout without touching compare-at. If you want every visitor to see a crossed-out price on the product page itself, compare-at is the only field that does it, set on top of, not instead of, whatever discount you are running.

    How to Set a Strikethrough Price From Scratch

    For a single product:

    1. Go to Products in Shopify Admin
    2. Open the product you want to put on sale
    3. Scroll to the Pricing section for the variant
    4. Enter the price you charge today (the higher amount) in Compare-at price
    5. Enter the sale amount in Price
    6. Click Save

    Shopify now shows compare-at with a strikethrough beside the sale price (most themes render this by default; check the customizer if it does not appear).

    The variant nuance most guides skip: compare-at price is per variant, not per product. A product with five sizes has five compare-at prices to set; a "product-level edit" is really five variant edits, and it is easy to update one, get interrupted, and ship a sale where only that size shows the strikethrough.

    For a collection: a single-product edit does not scale. Options: CSV export/import (manual, easy to mis-scope, no scheduling), a bulk price editor (faster than a CSV round-trip for a one-time change), or a campaign tool that schedules the change and its removal alongside any banner or discount, covered below.

    Put the strikethrough on the right variants only (this is where sales go wrong)

    A collection-wide compare-at update is fast, and that speed is exactly what causes the mistakes: it sets compare-at on every variant in scope, including ones never meant to be part of the sale.

    Two ways this goes wrong:

    • A clearance size gets a second markdown. A shirt in your "Tops" collection was already marked down last month and its old compare-at was never cleared. Your 20%-off update takes another 20% off the reduced price and overwrites the old "was" price with it, so the shopper now sees a smaller saving than the one you meant to show.
    • A variant nobody sells shows a permanent "was" price. A discontinued or wholesale-only variant gets swept into the bulk update and shows a "sale" on something never actually for sale.

    Before a collection-wide update, check what is already set on the products in scope, not only what you are about to add.

    If this is a one-time price correction across your catalog, a bulk price editor is faster. If you run several sales a year and need the strikethrough set and removed every time, schedule both; see How to Stop It Happening Next Time.

    The strikethrough nobody changed back

    You set compare-at prices across 200 products for a site-wide sale. The sale runs a week and ends. If you set those prices by hand, someone now has to clear them by hand too, product by product, and until that happens all 200 products still show a strikethrough on a sale that is over.

    A strikethrough price is a promise to the shopper: this is what it cost before, this is what it costs now. Leave the old promise up after the sale ends and the next one you make is worth less.

    Our own study of 1.14 million orders across 8 Shopify stores found 59 discount codes left active for 10+ months after they should have been retired, including one exceptional case that carried $349,000 in discounts over 12 months (see our Shopify discount statistics). That figure is about discount codes, not compare-at prices, and it is not typical, but it is the same failure in a different field: a change that was never scheduled to end did not end.

    When a permanent strikethrough becomes a fake reference price

    There is a legal dimension too. The FTC (the U.S. Federal Trade Commission) publishes Guides Against Deceptive Pricing: a former ("was") price used in a comparison has to be a price the product was actually, openly offered at, for a reasonably substantial period of time, in the recent, regular course of business. Setting a compare-at price you never really charged, or leaving an old one in place after the sale ended, makes your "was" price fictitious, which the FTC guides describe as deceptive.

    In practice: only set compare-at on products you are genuinely discounting, use a price you actually sold at, not an inflated number, and clear it as soon as the sale is over.

    How to Stop It Happening Next Time

    Manual compare-at pricing works for one or two products, but stops working once you run more than a couple of sales a year across a collection.

    What PromoOS does, precisely: at a promo's start time, it lowers the variant price and writes the original price into compare-at for the products, collections, or variants you chose. At the end, it restores both fields from a snapshot taken before the change, including any compare-at price that was already there before your sale started, so a variant marked down beforehand does not come back blank.

    Before a campaign launches, PromoOS also flags any variant that two of your scheduled promos would both set a compare-at price on, catching the "Tops collection" overlap before it ships, provided both markdowns are PromoOS promos. It does not detect a compare-at price you set by hand in Admin, or a discount code running separately: it flags overlaps between its own promos, not everything happening on your storefront.

    That is a narrower claim than "strikethrough display" apps make, on purpose. A dedicated bulk price editor is genuinely the better tool if compare-at pricing is the only thing you need automated. PromoOS fits when the change is one piece of a bigger promotion, alongside a banner or a discount code on the same schedule: set the strikethrough and its removal on one schedule, so they end together.

    Key Takeaways

    • A compare-at price shows only when it is higher than Price on the same variant and your theme displays it.
    • Set it per variant, or use a bulk editor for a collection; check what was already marked down.
    • Decide the revert date before you set the sale price.
    • A strikethrough that never reverts is both a margin problem and a reference-price problem.
    • If you run more than a couple of sales a year, schedule the strikethrough and its removal instead of doing both by hand.

    Sources

    Frequently Asked Questions

    Related articles

    Free plan · No credit card

    Schedule your next promo in PromoOS.

    Free plan: one active promo, three total, no credit card. Upgrade only if you outgrow it.

    Install PromoOS free
    PromoOS is a Promly product. © 2026 Promly. All rights reserved.