All posts

How to Set Compare-at Price on Shopify (Bulk Edit, Sale Badges, and EU Rules)

Set a Shopify compare-at price so sale badges and strikethrough show: single product, bulk edit, CSV, EU 30-day rule, and how to clear it after the sale.

Shopify product pricing screen highlighting Price and Compare-at price fields for a sale

A Shopify compare-at price is the higher “was” price that makes sale badges and strikethrough pricing appear on product and collection pages. Before Black Friday 2026 (Friday, November 27) and Cyber Monday (November 30), many merchants discover that a checkout discount alone does not show that strikethrough on the product page. This guide covers single-product edits, bulk editor and CSV methods, why badges fail, the EU 30-day lowest-price rule, and how to clear compare-at prices when the sale ends.

What a Shopify compare-at price actually does

A Shopify compare-at price is the original or higher price shown next to Price. When it is higher than Price, most themes show a sale badge and strikethrough. This is sale pricing on the product, not a discount code: customers pay Price; compare-at is display-only.

Shopify’s Help Center defines it in sale pricing: Price is what the customer pays, and Compare-at price is the higher reference. If compare-at is blank, equal to, or lower than Price, themes typically hide the sale treatment.

That matters for Black Friday: an automatic 25% discount lowers the cart, but product and collection pages still show the regular price unless you also set compare-at (or customize the theme). For the classic “~~$120~~ $89” look, populate compare-at correctly.

Fixed market prices in Shopify Markets override admin Price and compare-at for those customers, so update those catalogs when you sell internationally.

Compare-at price vs automatic discounts

Compare-at sale pricing and Shopify discounts solve different problems. Use compare-at when you want the markdown visible on product and collection pages. Use automatic or code discounts when you want a cart/checkout reduction without rewriting every product price—or when you need eligibility by customer, tag, or order amount.

Approach

Product / collection pages

Strikethrough at checkout

Customer pays

Best for

Price + compare-at (sale pricing)

Yes (theme-dependent)

Usually no (price already sale)

The Price field

Site-wide or collection sales, Black Friday badges

Automatic discount

No (unless app/custom theme)

Often yes

Discounted total

Members, thresholds, “no code needed”

Discount code

No (unless app/custom theme)

Yes, after code applied

Discounted total

Influencer and email campaigns

Theme/app badge from discounts

Possible with customization

Depends

Discounted total

Stores that will not rewrite Price

Shopify notes that sale prices are not the same as discounts: sale prices with compare-at appear on product and collection pages, while discount-based strikethrough typically appears at checkout. Theme settings still control whether a “Sale” badge or crossed-out compare-at is rendered.

Many Black Friday stores combine both: compare-at for the visible sale, plus a small checkout perk (free shipping or a VIP extra percent).

How to set compare-at price on one product

To set a Shopify compare-at price on one product, open the product in admin, enter a Price lower than the previous selling price, put that previous price in Compare-at price, and save. Compare-at must be higher than Price or the sale badge will not show. Preview the product page on your theme before you announce the deal.

  1. In Shopify admin, go to Products and open the product.
  2. Under Pricing, set Price to the sale amount (for example $89.99).
  3. Set Compare-at price to the higher reference amount (for example $120.00).
  4. Confirm compare-at is greater than Price.
  5. Click Save.
  6. Open the storefront product page (or theme preview) and check for strikethrough and the sale badge.

Set Price and compare-at on every variant that should look on sale. With fixed market prices, update those market catalogs too—admin-only changes do not always flow through.

How to bulk set compare-at prices (bulk editor + CSV)

To bulk set Shopify compare-at prices, use the bulk editor for a small selection or a product CSV for the whole catalog. In the CSV, fill Variant Compare At Price with values higher than Variant Price, then import with overwrite. Apps can also move the current price into compare-at and lower Price in one step for a sale.

Option A: Shopify bulk editor

  1. Go to Products, filter to the collection or tag you want on sale.
  2. Select the products → Bulk edit.
  3. Add the Price and Compare-at price columns if they are missing.
  4. For each variant, enter the sale Price and the higher compare-at.
  5. Click Save.

The bulk editor is free and needs no files, but it does not calculate percentages for you. For more than a few dozen variants, typing every cell becomes slow. Shopify documents the flow in editing products in bulk.

Option B: Product CSV export and import

  1. Export products (Products → Export) as a CSV for Excel or Numbers.
  2. Keep an untouched copy as your undo file.
  3. Set Variant Price to the sale price and Variant Compare At Price to the higher “was” price.
  4. Optional: for a 25% off sale that preserves the old price as compare-at, copy old Price into Compare At, then set Price to old × 0.75 (and round).
  5. Import and tick Overwrite products with matching handles.
  6. Spot-check several products and one Markets currency if you use fixed prices.

Shopify’s product CSV guide lists the columns. Blank cells can clear values on overwrite, so do not empty columns by accident. For international fixed sale prices in Markets catalogs, Shopify expects a Markets CSV import; you cannot always create those fixed sale prices the same way in the admin UI alone (sale pricing).

Bulk Price and Revert campaign form with Put on sale selected to set compare-at from the current price

Option C: Bulk app (when you want preview + revert)

If you run sales often, an app that can put products on sale (lower Price, write the old Price into compare-at), preview every variant, and revert later saves time. Lilya: Bulk Price & Revert supports percentage or amount changes, .99 rounding, preview, optional scheduling, and restore—keeping hand-edits made during the campaign when needed.

See also schedule Black Friday sale prices and revert and bulk change prices and revert after a sale.

Preview of new sale prices with compare-at filled and Shopify Markets fixed-price variants flagged

Why your sale badge or strikethrough is not showing

If your Shopify sale badge or strikethrough is missing, check that compare-at is higher than Price, the theme shows compare-at, Markets is not hiding it for EEA customers, fixed market prices are not overriding admin values, and you are not relying only on a checkout discount.

Sale badge troubleshooting checklist

  • [ ] Compare-at > Price on every variant that should look on sale. Equal or lower values hide the sale treatment in most themes.
  • [ ] Theme setting such as “Show compare-at price” / sale badges is enabled (Themes → Customize → product or collection settings—label varies by theme).
  • [ ] Markets preference “Hide compare-at prices for EEA customers” is not checked if you want EEA shoppers to see the strikethrough (see the EU section below).
  • [ ] Fixed prices in a market catalog: open that market’s price list; fixed Price/compare-at override admin fields for those customers.
  • [ ] You did not rely only on an automatic discount or code. Those usually strikethrough at checkout, not on product/collection pages, unless a third-party app or custom theme draws them there.
  • [ ] Cache / preview: hard-refresh or open an incognito window after saving; confirm you are on the published theme.
Shopify storefront product page showing strikethrough compare-at price, sale badge, and countdown

EU / EEA 30-day lowest price rule before Black Friday

If you sell into the EEA and announce a price reduction, you generally must show the lowest price charged in the previous 30 days or more. Shopify does not calculate that figure—you enter it, often in compare-at when your primary market is EEA. Inflating list prices before Black Friday then “discounting” them is what the rule targets.

Shopify documents this in the European Price Indication Directive help article:

  • When announcing a price reduction to EEA customers, display the lowest price charged in the last 30 days or more. That window includes earlier promotional prices, not only the everyday list price.
  • If your primary market is EEA, use the compare-at field for that 30-day lowest price reference.
  • If your primary market is not EEA but you sell into the EEA with Markets, compare-at is shown by default; you can hide compare-at for EEA customers in Markets preferences when that fits your setup.
  • Shopify does not auto-calculate the 30-day lowest price. Entering an accurate number is the merchant’s responsibility.

For Black Friday 2026 starting around Friday, November 27, the 30-day lookback is approximately late October through late November 2026. Treat that as an approximate window tied to your actual sale start date, and confirm against the official Shopify PID guidance and your own counsel—this post is practical setup help, not legal advice.

Practical Black Friday workflow for EEA sales

  1. Pull prices (and prior promo prices) for the last 30+ days from your records.
  2. For each variant on sale, find the lowest price charged in that window.
  3. Set Price to the Black Friday sale amount.
  4. Set Compare-at to the correct 30-day lowest when that is how you present the prior price under the rule—not an inflated “fake MSRP.”
  5. Update fixed EEA market catalogs the same way if you use them.
  6. Preview an EEA storefront view to confirm what shoppers see.

Raising prices in early November only to slash them on November 27 against that new list price is the pattern the rule targets.

How to clear compare-at prices when the sale ends

When the sale ends, clear or correct compare-at so products stop looking discounted. Blank it in the bulk editor, clear Variant Compare At Price carefully via CSV, or revert a campaign that stored pre-sale Price and compare-at. Stale compare-at after Cyber Monday confuses shoppers and misstates the next promo’s “was” price.

Clear with the bulk editor

  1. Filter to the sale products → Bulk edit.
  2. Clear the Compare-at price cells (blank is usually clearer than setting them equal to Price).
  3. Restore Price to the post-sale selling price if you had lowered it for the sale.
  4. Save and spot-check the storefront.

Clear with CSV

  1. Export the affected products.
  2. Put the post-sale Price in Variant Price.
  3. Clear Variant Compare At Price for variants leaving the sale (test Shopify’s blank-cell behavior on one product first).
  4. Import with overwrite on matching handles.

Revert a saved campaign

If a tool stored each variant’s previous Price and compare-at, revert from that history instead of reversing percentages by hand. Lilya: Bulk Price & Revert restores originals, can keep hand-edits, and verifies prices in Shopify after revert. If the next step is a permanent list-price change, see increase prices by percentage.

Bulk Price and Revert summary after restoring original prices and clearing sale compare-at values

FAQ

What is a Shopify compare-at price?

A Shopify compare-at price is the higher reference price shown beside the current Price so themes can display strikethrough and sale badges. Customers pay the Price field amount; compare-at is for display. It must be higher than Price to appear as a sale on most themes.

Why is my Shopify sale badge not showing?

Usually compare-at is missing, equal to, or lower than Price; the theme has compare-at/sale badges turned off; Markets is set to hide compare-at for EEA customers; or fixed market prices override admin values. Checkout-only discounts also will not create product-page badges by themselves.

Does compare-at price work with Shopify Markets?

Yes, but fixed market prices override admin Price and compare-at for shoppers in that market. Update fixed catalogs (or Markets CSVs) when you run international sales. Converted (non-fixed) prices generally follow the base catalog.

How do I set compare-at price in bulk on Shopify?

Use Products → Bulk edit for small batches, or export a product CSV, fill Variant Compare At Price, and re-import with overwrite. For large Black Friday catalogs, an app that previews and reverts Price + compare-at together reduces mistakes.

What is the EU 30-day lowest price rule for Shopify sales?

When announcing a price reduction to EEA customers, you generally must show the lowest price charged in the prior 30 days or more. Shopify does not calculate it automatically; merchants enter the correct reference (often via compare-at when the primary market is EEA). See Shopify’s Price Indication Directive help page.

Should I use compare-at or a discount code for Black Friday?

Use compare-at (with a lower Price) when you want strikethrough and sale badges on product and collection pages. Use discount codes or automatic discounts for targeted offers, member perks, or checkout-only deals. Many Black Friday stores use compare-at for the main visible sale and keep codes for extras.

Wrap-up

Set a Shopify compare-at price when you need strikethrough on product pages—discount codes alone usually will not do that. For Black Friday 2026: set compare-at above Price, verify badges on the live theme, enter an honest 30-day lowest if you sell into the EEA, and clear or revert compare-at when the sale ends.