The Shopify product compare at price field is Shopify's built-in mechanism for displaying a crossed-out original price next to a discounted selling price — letting shoppers see their saving instantly, without a discount code or a third-party app. If you run a Shopify store in South Africa, understanding exactly how this field works, where it lives in the admin, and what it means for your Consumer Protection Act obligations will save you both technical headaches and legal exposure.

The field sits in the Pricing section of every product and variant in your Shopify admin. It is separate from the Cost per item field (which only you see) and the Price field (what customers pay).

When the Compare at price value exceeds the Price, your theme shows the original as strikethrough text alongside the current selling price. If the values are equal — or if the Compare at price field is blank or contains zero — no strikethrough appears, and no sale badge fires.

Quick Answer

The Shopify product compare at price is the original reference price that displays as a crossed-out figure next to your lower selling price — a visible "was/now" display without needing a discount code. Set it in the Pricing section of each product or variant: enter the higher original in Compare at price, the sale amount in Price. When Compare at price exceeds Price, your theme automatically shows the strikethrough and a sale badge.

Remove it by clearing the field completely — entering a zero value instead of leaving it blank causes display problems in some themes. In South Africa, the reference price must reflect a price you genuinely charged; using an inflated figure to manufacture a bigger saving is widely understood to constitute a false representation under CPA Section 41 — the compliance risk is real. Take legal advice before high-volume campaigns.

Is your Shopify pricing display set up to convert?

Send us your product pricing setup and we will show you exactly where the display gaps are costing you sales.

Get a free store review

What the Shopify Product Compare At Price Field Actually Does

The Shopify product compare at price field stores a reference price — the higher original amount — that your theme renders as strikethrough text to make the current Price appear as a saving. It is a display mechanism, not a checkout mechanism: the amount a customer pays is always the Price field, regardless of what appears in Compare at price.

When the condition is met (Compare at price > Price), most Shopify themes automatically add a "Sale" badge to product cards in collection grids and search results, alongside the crossed-out figure on the product detail page. Some themes go further and calculate the percentage saving using Shopify's Liquid template language. The formula themes use is:

Savings % in Liquid: {{ product.compare_at_price | minus: product.price | times: 100 | divided_by: product.compare_at_price }}%

Example: Compare at price R800, Price R600 → saving = R200 → 25% off
Always verify that variant.compare_at_price is used in variant-selection contexts, not just product.compare_at_price.

The two Liquid objects themes rely on are product.compare_at_price (the highest compare-at price across all variants) and variant.compare_at_price (the value for the currently selected variant). A theme that only checks one of them can display the wrong figure — or no figure — after a shopper switches size or colour. This is more common on older, pre-2022 themes than on current Online Store 2.0 themes.

One detail SA merchants often discover mid-promotion: Shopify Markets can suppress compare-at price displays for specific geographic regions (a behaviour consistently reported in practitioner documentation). If you run multiple markets and find the strikethrough shows for some shoppers but not others, check your Markets configuration before assuming a theme fault. Understanding how compare at price Shopify handles per-market display is a step global Shopify guides usually skip.

The Compare at price field controls display only. Clearing it removes the strikethrough immediately — no unpublishing needed. A blank field means no strikethrough. A zero value is not the same as blank, and can suppress the sale badge on product variants in Dawn and other OS 2.0 themes.

Step by Step: Setting the Strikethrough on a Product or Variant

Setting a compare-at price takes under a minute per product in the Shopify product pricing admin. The one rule that catches merchants out is that variants do not inherit the parent product's value — each must be set individually.

For a single product without variants:

  1. In your Shopify admin, go to Products and open the product.
  2. In the Pricing section, locate the Compare at price field.
  3. Enter the higher original price — for example, R800.
  4. Confirm the Price field shows the lower selling price — for example, R600.
  5. Click Save. The strikethrough appears on your storefront immediately.

For products with variants (size, colour, material, etc.):

  1. Open the product in your admin.
  2. Scroll to the Variants section and click the specific variant you want to mark down.
  3. In that variant's Pricing section, set its own Compare at price and Price values.
  4. Repeat for each variant individually — values do not carry across from the parent product to variants.
  5. Save after each variant, or navigate between them and save once when all edits are complete.

To remove a compare-at price: Open the product or variant, clear the Compare at price field completely, and save. Do not enter a zero value as a substitute for blank — in the Dawn theme and several other OS 2.0 themes, a zero in this field can suppress the sale badge across affected variants while a blank field removes the display cleanly.

Done right: A Cape Town clothing store marks a jacket down from R800 to R600. They open each size variant individually, set Compare at price = R800 and Price = R600 on each. Every size shows 25% off on collection pages and the product detail page, and the sale badge fires on the collection grid — because both the correct Shopify sale price display and the variant-level data are in place.
Common mistake: The same store sets the compare-at price on the parent product record but forgets to edit the individual variant records. The crossed-out price shows when a shopper lands on the product page in the default variant — but disappears after they select a size, because the theme is reading the variant-level value, which is still blank.

Managing Sale Displays Across a Large Catalogue

The right method for updating compare-at prices at scale is determined by your catalogue size and how often you run promotions — choosing wrong causes the kind of mixed-state errors that leave half your catalogue broken on sale launch day.

ScenarioBest methodTypical timeError risk
1–5 products, one-off promotionAdmin editor, individual product edit2–5 minutesLow
6–50 products, seasonal saleShopify Bulk Editor15–30 minutesLow
51+ products or full catalogue swapCSV export / edit / import30–60 minutes + reviewMedium — data mapping must be exact
Recurring automated promotionsShopify Admin API or a sale-scheduler appDeveloper setup once; near-zero ongoingLow once tested

Bulk Editor method: On your Products list, select the products you want to update, click Bulk Edit, then click Columns and enable Compare at price under Pricing — steps confirmed across multiple practitioner sources, though Shopify's admin interface updates periodically. Enter your values in the table view and click Save. This is the fastest safe method for moderate catalogues — it gives you a visual grid before you commit. For the full workflow, the Shopify Bulk Price Editor guide covers filters, sorting, and common gotchas.

CSV method: Export your products from Products → Export → All products. In the exported file, find the column Variant Compare at Price — consistently documented as the column header Shopify expects on import across multiple practitioner sources. Even a slight variation (a hyphen, different capitalisation) causes the column to be silently ignored.

Update your values, then reimport with Overwrite products with matching handles checked, otherwise the original records will not update. Always run the update on a small test batch and verify display on both the product page and a collection page before running the full catalogue.

The CSV column for compare at price is documented as Variant Compare at Price across practitioner sources. Export a test batch first to confirm the exact header in your own Shopify file — building the CSV from scratch risks header mismatches that are silently ignored on import, leaving your previous values unchanged.

When the Crossed-Out Reference Vanishes — Diagnosing Display Issues

A compare-at price that appears correct in the admin but fails to display on the storefront is almost always one of four things: incorrect theme rendering, variant data inconsistency, a zero-value entry, or a Shopify Markets suppression setting. The table below maps symptoms to causes.

SymptomLikely causeFix
Sale badge on product page but not collection gridTheme uses a separate snippet for collection cards that only checks product.compare_at_price, not variant.compare_at_priceUpdate card-product.liquid to use variant-level object; or upgrade to OS 2.0 theme
Strikethrough disappears after shopper selects a different size or colourTheme not updating compare-at display on the variant selection JavaScript eventRequires a theme code edit or upgrade to an OS 2.0 theme with native variant handling
Nothing shows at all despite correct admin dataa zero value in compare-at field, or a legacy theme without Liquid support for compare-atClear the field to blank (not zero); upgrade or add Liquid code to the theme
Strikethrough works in South Africa but not for international shoppersShopify Markets suppressing compare-at for that regionAdmin → Markets → select the affected market → check pricing display settings

Online Store 2.0 themes — including Shopify's free Dawn theme — handle compare-at price natively with built-in customisation for badge text, badge colour, and whether to show the crossed-out price or the savings percentage. If you are on a legacy theme, you will need either Liquid code edits or a theme upgrade before the Shopify strikethrough price feature works reliably across all contexts.

Third-party pricing apps — sale schedulers, dynamic pricing tools — sometimes overwrite compare-at price fields, which can create display conflicts during active promotions. If the sale badge flickers or reverts, check your installed app permissions. Any app with product write access can update these fields without a manual trigger.

South African Consumer Law and Your Reference Price

The Consumer Protection Act 68 of 2008 applies to every South African online retailer, and Section 41 is the clause that matters most for compare-at pricing. Section 41 prohibits false, misleading or deceptive representations in advertising — including pricing claims. A compare at price south africa merchants should understand: a "Compare at price" that was never genuinely charged — inflated to manufacture a larger-looking saving — is widely understood to constitute a false representation under CPA Section 41. No published NCC enforcement decision has specifically addressed Shopify's compare-at field, but the general prohibition on false pricing representations is unambiguous and the compliance risk is real.

What you put in Compare at priceCPA compliance positionRisk level
Your product's previous selling price — actually charged to customersCompliant — this is the intended use of the fieldLow
Manufacturer's recommended retail price (MRP), clearly disclosed as MRPGenerally compliant if you label it as an MRP and not your own prior price (practitioner guidance — seek legal advice for high-volume campaigns)Low to medium
A price you never actually charged — set artificially high to appear as a bigger discountWidely understood to be non-compliant under CPA s41 — constitutes a false pricing representation under the general prohibition (practitioner guidance; seek legal advice)High
A competitor's price as the "original"Widely understood to be non-compliant — you are representing a price you do not control as your own reference (practitioner guidance; seek legal advice)High

Section 30 of the CPA adds a second obligation for SA merchants: bait marketing. Advertising a product at a visibly discounted price (via a compare-at display) while knowing you cannot fulfil at that price — because stock is insufficient and you made no disclosure — is bait marketing. The practical fix is: set an accurate compare-at price and, where stock is genuinely limited, disclose the quantity available in your product description or with an on-page label.

A practical record-keeping rule: document when you last sold a product at the compare-at price and retain those records in case a National Consumer Commission complaint arises — demonstrating that the reference was genuine is the merchant's burden. Consult your legal adviser on the appropriate retention period for your circumstances. South Africa's ecommerce sector has grown significantly in recent years, which means regulatory bodies are receiving more ecommerce-related complaints than in previous years, not fewer.

Section 41's language focuses on whether the reference price was genuine — practitioners generally interpret this to mean that duration alone does not determine compliance, and that no minimum "at full price" period is prescribed. However, this interpretation has not been tested in published NCC enforcement decisions specific to digital compare-at pricing. For a broader view of how pricing strategy interacts with conversions and margins in the South African market, the ecommerce pricing strategy guide covers the full picture.

CPA Section 22 also requires that prices be displayed in a plain and understandable form. In practice this means your compare-at display should make it clear which figure is the selling price and which is the reference — a design that obscures the actual Price and foregrounds only the Compare at price can itself be a display violation.

For context on how legal and display requirements interact across your SA Consumer Protection Act compliance obligations, the broad prohibition in Section 41 covers not just pricing but any false representation that influences a consumer's decision — making truthful reference prices a legal requirement, not just a best practice.

Not sure whether your current compare-at pricing is CPA-compliant?

Tell us how you are using the field and we will give you an honest assessment of the compliance and conversion risk in your current setup.

Get a compliance review

Why South African Businesses Choose Growth Pulse Media

Growth Pulse Media was built from experience running a South African ecommerce operation — not from watching one. Dirk van Greuning, who founded the agency, scaled a large SA ecommerce business before moving to agency work. That background means the team approaches Shopify configuration the way an operator does: what does this actually cost to maintain, where do display bugs surface under SA network conditions, and what does the NCC actually care about?

As a registered Shopify Partner agency working with South African stores, Growth Pulse Media operates with a limited client load so every configuration decision — including pricing display, compliance documentation, and theme selection — gets senior attention. All work is executed in-house.

If you are running or planning a Shopify store and want to get the pricing architecture right from the start — including how compare-at prices interact with product bundles, discount codes, and volume pricing rules — we are worth a conversation.

Who This Is NOT For

If you expect Shopify to auto-populate compare-at prices for you: Shopify does not automatically fill the field. You choose what goes in, and you own the compliance obligation. Tools that generate compare-at values based on "market prices" still require you to verify the reference is genuine under CPA Section 41 before publishing.
If your store runs entirely on promotional discount codes: Discount codes and compare-at price are different mechanisms. A discount code applied at checkout does not update the compare-at field or produce a strikethrough on the product page before checkout. If your goal is a visible pre-checkout saving signal, compare-at price is the correct tool — discount codes alone do not achieve the same display.
If you are on a heavily customised legacy theme from before 2022: Older themes may not render compare-at price correctly across all contexts — product page, collection grid, search results. Adding reliable support requires Liquid code changes that can interact unpredictably with existing customisations. A theme audit or migration to an OS 2.0 theme is the safer starting point before enabling sale displays across the catalogue.
If you expect one compare-at setting to work consistently across all your Shopify Markets: Compare-at pricing can be suppressed per market in Shopify's Markets settings. If you sell to multiple countries or currency zones, you need to configure and test display behaviour market by market — a single admin value does not guarantee consistent display globally.

Ready to configure your Shopify pricing display properly?

Share your current setup and we will audit your compare-at price configuration, theme rendering, and CPA compliance in a single call — no obligation.

Book a pricing audit

Frequently Asked Questions

Does the Shopify product compare at price affect what the customer pays at checkout?

No. The compare at price field is display-only — the amount a customer pays at checkout is always the Price field. The compare at price produces the crossed-out figure on the product page and collection grid; it plays no role in the transaction calculation. If you want to reduce what a customer actually pays, update the Price field or create a discount code.

Why is my sale badge not showing on collection pages even though the compare-at price is set correctly in the admin?

The most common reasons are: the compare-at value is set on the parent product but not on individual variants (each variant requires its own value), the Compare at price field contains a zero value instead of being blank, or your theme uses a separate Liquid snippet for collection cards that reads product.compare_at_price instead of variant.compare_at_price. Check all three before making theme code changes.

Does South African consumer law require a minimum period at full price before I can show a compare-at discount?

Practitioners generally interpret the Consumer Protection Act 68 of 2008 as not prescribing a minimum period at full price — Section 41's language focuses on whether the reference price was genuine, not on duration. This interpretation has not been tested in published NCC enforcement decisions specifically addressing digital compare-at pricing, so treat it as practitioner guidance rather than settled law. If the compare-at price was never genuinely charged, no length of time at that price makes it compliant. Document your price history and retain those records in case a complaint arises; consult your legal adviser on an appropriate retention period and before running high-volume campaigns.

Can I use the manufacturer's recommended retail price as my compare-at value?

Generally yes, but only if you disclose clearly that the reference is the manufacturer's RRP and not a price you personally charged. Displaying an MRP without that disclosure implies you sold the product at that figure, which risks a CPA Section 41 complaint if you did not. A short label — for example, "Compare at MRP: R800" — is the minimum disclosure. For high-volume sale campaigns, seek legal advice before running.

What is the safest method to bulk-update compare-at prices before a sale launch?

For catalogues under roughly 50 products, the Shopify Bulk Editor (Products → Bulk Edit → Columns → Compare at price) is fastest and lowest-risk. For larger catalogues, export to CSV, update the column labeled exactly Variant Compare at Price, and reimport with "Overwrite products with matching handles" selected. Always test on a small batch first and verify the display on both the product detail page and a collection grid before running the full update.

Get Your Shopify Pricing Display Right — From a Registered SA Partner

Growth Pulse Media works with South African Shopify stores as a registered Shopify Partner. We review compare-at price setups, theme rendering, and CPA compliance in a single session — covering PayFast, Peach Payments, and Ozow integrations where pricing display interacts with checkout flows. No obligation — we will get back to you within 24 hours.

Book your free pricing review
Dirk van Greuning — Founder, Growth Pulse Media
Dirk van Greuning Founder, Growth Pulse Media

Founder of Growth Pulse Media and a specialist in South African search dominance. Dirk translates his experience in scaling South African businesses into high-velocity digital strategies for B2B and retail leaders. He writes about SEO, lead generation, and paid media from an operator's perspective — prioritising pipeline value over impressions.

Connect on LinkedIn