All posts

How to Add a Sale Badge on Shopify (And Fix It When It Won’t Show)

Learn how a Shopify sale badge works with compare-at pricing, theme badge settings, why it hides on collections, and a Black Friday checklist to fix it.

Shopify storefront product page showing a sale badge, strikethrough compare-at price, and countdown

A Shopify sale badge is the “Sale”, “-%”, or similar label your theme draws on product cards and product pages when a product is on sale. Most themes show it only when Compare-at price is higher than Price—not when you rely on a discount code alone. Before Black Friday 2026 (Friday, November 27) and Cyber Monday (November 30), getting that badge right is the difference between a clear markdown and a product page that still looks full price. This guide covers how the badge works, how to turn it on, theme settings, the usual reasons it stays hidden, and a short checklist for sale week.

What a Shopify sale badge actually is

A Shopify sale badge is a theme UI label—often “Sale” or a percent off—shown when the product’s compare-at price is higher than its Price. Shopify stores the two prices; your theme decides whether a badge, strikethrough, or both appear. Discount codes and automatic discounts usually change the cart total without painting that badge on collection grids.

Shopify documents this under sale pricing: set Compare-at to the higher original amount and Price to what the customer pays. Themes “might add a badge with a message or percentage off.” Sale styling is theme-controlled; AI shopping channels that use Shopify Catalog follow separate list-price rules and are not the same as your Online Store theme.

If you only create a 25% automatic discount for Black Friday, checkout can look discounted while product and collection pages still look regular. For the classic badge + ~~was~~ now look, you need sale pricing (or a theme/app that reads discounts into badges).

How to add a sale badge with compare-at price

To add a Shopify sale badge, open the product, set Price to the sale amount, set Compare-at price higher than Price, and save. Preview the product page and a collection card. The badge appears only when compare-at is strictly greater than Price on the variants your theme evaluates.

  1. In Shopify admin, go to Products and open the product.
  2. Under Pricing, set Price to the sale amount (for example $89.00).
  3. Set Compare-at price to the higher reference (for example $120.00).
  4. Confirm compare-at is greater than Price on every variant that should look on sale.
  5. Click Save.
  6. Open the storefront product page and a collection that includes the product; check for the badge and strikethrough.

For a deeper walkthrough of single, bulk, and CSV compare-at edits—including the EU 30-day lowest-price rule—see How to Set Compare-at Price on Shopify.

Bulk Price and Revert campaign form with Put on sale selected so compare-at is filled from the current price

Bulk option when many SKUs need a badge

For a whole collection or catalog, Shopify’s bulk editor and product CSV can fill Compare-at and lower Price together. Shopify’s bulk product editing and product CSV docs cover the free paths. An app such as Lilya: Bulk Price & Revert can move the current price into compare-at, apply a percentage off, round to .99, preview Markets fixed prices, and later revert—useful when you need badges on hundreds of variants before Black Friday without hand-editing every row.

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

Sale badge vs discount codes and automatic discounts

A sale badge from compare-at pricing and a Shopify discount solve different jobs. Use compare-at when you want product and collection pages to look on sale. Use automatic or code discounts when you need cart rules, customer eligibility, or a code for influencers—knowing most themes will not badge the grid from the discount alone.

Approach

Badge on product/collection

Strikethrough on product page

Customer pays

Best for

Price + compare-at (sale pricing)

Yes, if theme supports badges

Yes (theme-dependent)

The Price field

Site-wide or collection sales, Black Friday look

Automatic discount

Usually no

Usually no on PDP

Discounted checkout total

Members, thresholds, “no code needed”

Discount code

Usually no

After code at checkout

Discounted checkout total

Email and creator campaigns

Theme/app that maps discounts to badges

Possible

Depends

Discounted total

Stores that refuse to rewrite Price

Shopify is explicit that sale prices are not the same as discounts: sale prices can show on product and collection pages; discount-based savings typically show at checkout. Many stores combine both: compare-at for the badge, plus a small checkout perk.

Theme settings that control the sale badge

Your theme—not the admin price fields alone—draws the Shopify sale badge. In the theme editor, open Theme settings (often Badges or product-card options), confirm sale badges are enabled, and adjust position, shape, and color. Dawn and similar free themes show a “Sale” label from compare-at; percent-off text usually needs a theme setting or a small Liquid change.

Typical checks:

  1. Online Store → Themes → Customize → Theme settings.
  2. Look for Badges, Product cards, or Product information options related to sale / sold-out.
  3. Confirm sale badges are on for product cards and product pages.
  4. Optionally change badge position, color scheme, or shape (theme-dependent).
  5. Use Edit default theme content if you want the word “Sale” translated or reworded.
  6. Save and preview a collection and a product page on desktop and mobile.

Shopify’s theme settings overview notes that Sale and Sold out badges are added when you reduce the price (via compare-at sale pricing) or when inventory hits zero, and that you can adjust badge position, shape, and color in theme settings. Always check your theme’s own docs—custom or older themes may hide badges behind a checkbox or only show them on cards, not on the product template.

Why your Shopify sale badge is not showing

When a Shopify sale badge is not showing, first confirm compare-at is higher than Price on the selected variant, then check theme badge settings, collection-card rules, inconsistent variant compare-at values, Markets fixed prices, and cached previews. Discount-only campaigns almost never badge the grid by themselves.

Checklist

  • [ ] Compare-at blank, equal, or lower than Price — badge logic fails; raise compare-at or lower Price.
  • [ ] Only some variants on sale — collection cards may hide the sale state when variants disagree (see next section).
  • [ ] Compare-at set to 0.00 — Shopify treats that differently from blank; clean it up.
  • [ ] Theme badges disabled or CSS hiding .badge — re-enable in theme settings; inspect with the theme editor.
  • [ ] Discount code / automatic discount only — cart is cheaper, but PDP still shows regular Price with no compare-at.
  • [ ] Shopify Markets fixed prices — admin Price/compare-at may not match what a market catalog shows; update that catalog too.
  • [ ] Password page, draft theme, or old tab cache — preview the live or correct theme preview URL.
  • [ ] App blocks conflicting — temporary theme customizations or badge apps can override or cover the native badge.

Fix pricing first, then theme, then Markets. Re-test after each change on both a product page and a collection card.

Collection pages hide the badge when variants disagree

Collection cards summarize a product. If variants have mixed compare-at values—some blank, some $0.00, some higher than Price—Shopify often will not treat the product as on sale on the collection page even when one variant looks correct on the product page.

Shopify’s sale pricing help calls this out: make compare-at consistent across variants (all blank, or all valid and higher than their Prices). After a messy CSV import, open a few multi-variant products and align compare-at before you announce the sale.

Schedule settings with start and end dates for a Shopify sale campaign that keeps badges in sync

Black Friday 2026 checklist for sale badges

Black Friday 2026 is Friday, November 27; Cyber Monday is November 30. Decide early whether badges come from compare-at sale pricing, from discounts, or both. If you need the badge on collections, plan compare-at (and a clean revert) before creative and ads go live.

  1. Pick the mechanism — compare-at for visible badges; discounts for codes and member rules; both if you need the look plus a checkout perk.
  2. Export a price backup CSV — keep an untouched file before bulk edits.
  3. Set Price + compare-at (or run a put-on-sale campaign) on every variant that should badge.
  4. Align variants so collection cards do not drop the sale state.
  5. Update Markets fixed prices where you sell with fixed catalogs.
  6. Verify theme badge settings on the published theme, mobile and desktop.
  7. Spot-check hero collection, search results, and one product with many variants.
  8. Plan the end — clear or restore compare-at when the sale ends so badges do not linger into December.
  9. If you sell to the EEA, read Shopify’s Price Indication Directive notes on announcing price reductions; badge copy is not a substitute for compliance.

For a full Black Friday price plan (schedule, revert, EU notes), see How to Run a Black Friday Sale on Shopify. For bulk edits and undo patterns, see How to Bulk Change Prices on Shopify.

Summary after restoring original prices and clearing sale compare-at values so badges disappear

Optional: badge, countdown, and bulk revert in one pass

Native Shopify gives you Price, compare-at, bulk edit, CSV, and theme badges. It does not remember “the price before this campaign” or schedule a catalog-wide put-on-sale and revert for you. If you want sale badges across many SKUs with a start/end window and a verified revert afterward, Lilya: Bulk Price & Revert is built for that workflow (put on sale, preview, schedule, storefront sale treatment, revert). It does not replace your theme’s badge CSS, and it is not a discount-code app.

FAQ

Does a Shopify discount code show a sale badge?

Usually no. Discount codes and automatic discounts reduce what the customer pays at checkout. Most themes only draw a sale badge when compare-at is higher than Price. To badge the grid, set sale pricing or use a theme/app that maps discounts into badges.

Why is the sale badge on the product page but not on the collection?

Mixed variant compare-at values are the common cause. Collection cards need a consistent sale state. Align compare-at on every variant (all valid and higher than Price, or all cleared), then recheck the collection.

Can I show “20% off” instead of the word “Sale”?

Only if your theme supports percent-off badges in theme settings, or you (or a developer) customize the badge Liquid. Dawn’s default is typically the translated “Sale” string, not an automatic percent.

Do I need compare-at if I already scheduled an automatic discount for Black Friday?

For checkout savings, no. For a storefront sale badge and strikethrough on product/collection pages, yes—unless your theme or an app renders badges from the discount.

Will Shopify Markets break my sale badges?

Fixed market prices can override what you set on the default product. If a market uses fixed prices, update that catalog’s Price and compare-at (or its CSV) or shoppers in that market may see no badge.

How do I remove sale badges after Black Friday?

Restore Price to the regular amount and clear or correct Compare-at so it is no longer higher than Price. Then spot-check collections. Keep your pre-sale CSV until you confirm the storefront looks right.

Wrap-up

A Shopify sale badge is theme UI driven by compare-at sale pricing, not by discount codes alone. Set Price below Compare-at, keep variants consistent, confirm theme badge settings, and re-test collections before Black Friday 2026. When you need to apply that pattern across the catalog and undo it cleanly afterward, bulk tools—or Bulk Price & Revert—save time; your theme still owns how the badge looks.