Shopify Every Product Showing On Sale After Import

On this page
A kitchenware wholesaler imports 280 products from a supplier spreadsheet. The file has two price columns: COST (the wholesale price the merchant pays) and RRP (the recommended retail price for customers). The import completes without errors. The merchant opens the storefront and finds every single product showing a sale badge. A bread knife reads "Save $17". A set of kitchen scales reads "Save $23". A cast iron pan reads "Save $45". Nothing is on sale. No discount event was set up. The merchant runs a full-price wholesale operation. Customer emails arrive within the hour asking when the sale ends.
This is the Shopify every product showing on sale after import problem. The cause is a column mapping error that is common with any dual-price supplier spreadsheet. The fix is specific, and if done incorrectly it can either fail to remove the sale badges or overwrite product data the merchant wants to keep.
How Shopify Decides When to Show a Sale Price
Shopify uses the Compare At Price field to control sale display across the storefront. When a product has both a Price and a Compare At Price, and the Compare At Price is higher than the Price, Shopify calculates the saving and displays the "Save" amount or percentage on the product card and product page.
Shopify's CSV import format includes a "Variant Compare At Price" column alongside the standard "Variant Price" column. When Compare At Price is blank or empty, Shopify treats the product as full-price and shows no sale badge. When Compare At Price is set to any value higher than Price, the product immediately shows as on sale on every sales channel: Online Store, Google Shopping feed, Facebook catalogue, POS, and any other channel connected to the product.
The Compare At Price field is meant to be used for genuinely discounted products. It represents the price the product was previously available at or the standard market price before a temporary reduction. When it is set incorrectly, every product in the catalogue appears to be discounted, which creates two distinct problems: it misleads customers who assume there is a real sale event, and it can create regulatory issues in jurisdictions that require comparative prices to be genuine.
Why the Mapping Error Happens During Import
The mapping mistake follows a predictable pattern. A supplier's spreadsheet has columns in a specific order, and the column that appears first in the file tends to get mapped first by the merchant during the import setup. When COST appears before RRP in the column list, a merchant who is looking for "the original price" often maps COST to Compare At Price, reasoning that the cost is the baseline price. RRP then gets mapped to Variant Price.
The result: Compare At Price is set to $28 (cost) and Price is set to $45 (RRP). Shopify calculates a saving of $17 on a product that is not on sale. Across 280 products, the entire catalogue appears to be running a clearance event.
A second version of the error is subtler: a merchant maps RRP to Compare At Price and COST to Price. This makes every product appear to sell at cost price with the full retail as the "was" price. This version shows even larger savings and can attract fraud attempts from customers expecting to buy at wholesale prices.
Both versions pass the import without errors because neither price column format is invalid. Shopify does not validate whether Compare At Price represents a genuine prior price.

Finding and fixing the error
Identifying Which Products Have the Wrong Compare At Price
The fastest way to confirm the mapping error is to open any product in Shopify admin and check the Pricing section. A product with an incorrectly set Compare At Price shows both fields populated. The Compare At Price field will contain the value that should have been left blank.
At scale, the most reliable method is to export the full product catalogue and inspect the Variant Compare At Price column. Importier's Full Shopify CSV export preset outputs every product and variant field, including Variant Compare At Price. Open the export in a spreadsheet application and filter the Variant Compare At Price column. For a clean catalogue, most or all rows will be blank in that column. When every row has a value, the mapping error affected the entire import batch.
Note the exact values in the Variant Compare At Price column and compare them against the Variant Price column. The pattern will confirm which original column was incorrectly mapped. If Compare At Price equals the supplier's cost figures and Price equals the RRP, the COST-first mapping error occurred. If Compare At Price equals the RRP and Price equals cost, the inverse error occurred.

Fixing the Sale Price Error After Import
There are two approaches depending on how much additional data was added to the products after the original import. Note that the inverse problem — an import that clears a correctly set Compare At Price rather than incorrectly adding one — is covered separately in the guide to imports clearing Compare At Price.
If no data was added after the import (descriptions, images, tags, and metafields are unchanged from the import), the cleanest fix is a corrective re-import. Correct the column mapping in Importier: map RRP to Variant Price and leave Compare At Price unmapped or explicitly mapped to a blank value. Run the import in update-existing mode, matching by SKU. The re-import overwrites the incorrect Compare At Price with blank on every product, and corrects the Price field if it was also mapped incorrectly.
If data was added after the import (descriptions have been rewritten, images added, tags updated), a full re-import risks overwriting that added data. In this case, export the catalogue using Importier's Full Shopify CSV preset, open the CSV, and set the Variant Compare At Price column to blank on every row where it should be empty. Leave all other columns unchanged. Re-import using update-existing mode. Because only the Variant Compare At Price column has been edited in the CSV, only that field updates on each product. Descriptions, images, tags, and inventory levels remain untouched.
- 01Export the full product catalogue using Importier's Full Shopify CSV preset. The export includes the Variant Compare At Price and Variant Price columns for every product and variant
- 02Open the exported CSV and inspect the Variant Compare At Price column. Identify whether every row has a value (confirming the mapping affected the entire batch)
- 03Clear the Variant Compare At Price column for every product that should not show a sale price. If only some products should be on sale, clear the column on non-sale products and leave it populated on genuine sale items
- 04Save the edited CSV and bring it back into Importier. In the import settings, select update-existing mode with SKU as the match field. This updates only the fields present in the CSV without touching fields that were not included
- 05Confirm the import preview shows the correct Compare At Price values (blank for non-sale products) before running. After the import completes, check the storefront to confirm the sale badges are gone

Clearing Compare At Price with update-existing mode removes the sale badges without touching descriptions, images, tags, or inventory. One import pass fixes 280 products.
What Happens to Google Shopping When Compare At Price Is Wrong
Google Shopping reads Compare At Price as the "original price" for sale annotations in Shopping ads and free listings. When every product has a Compare At Price that is higher than the current Price, Google may display a sale annotation on every product in the Shopping feed. This can lead to a higher short-term click-through rate as sale annotations attract more attention, followed by higher bounce rates when shoppers land on a store that is not running a sale event.
More practically, Google Merchant Centre flags price discrepancies when the Compare At Price appears implausible. A feed where every product is marked down by exactly 37% may trigger a manual review. Clearing the incorrect Compare At Price from the Shopify catalogue propagates to the Google Shopping feed when Shopify next syncs the product data, which typically happens within 24 hours of a product update.
The same propagation applies to Facebook and Instagram Shopping catalogues, which also read the Compare At Price field for sale display.
Preventing the Mapping Error on Future Imports
The column mapping step in Importier shows a preview of the data from each supplier column alongside the Shopify field it will be mapped to. Before confirming the mapping, compare the values in the Compare At Price preview against the Variant Price preview. If Compare At Price shows lower values than Variant Price for any product, the mapping is inverted.
A reliable rule: leave Compare At Price unmapped for any import where no products are genuinely on sale. When importing a standard full-price catalogue from a supplier, there is no need to map Compare At Price at all. A blank Compare At Price means no sale badge, regardless of what the supplier spreadsheet contains.
Pricing strategy decisions for ecommerce pricing, including when to use Compare At Price to signal sale value versus when to let full-price products speak without the comparative anchor, are separate from the import configuration. The import should set Compare At Price only on products the merchant has explicitly decided to mark down.
Save the corrected column mapping as a named import profile. A profile named "Supplier Name: Full Price Import (No Compare At Price)" makes the intent clear on every subsequent use. The wrong mapping cannot be made accidentally if the profile was built with Compare At Price deliberately left unset.

- COST column mapped to Compare At Price, RRP mapped to Price: every product shows Save badge and appears discounted
- Customers contact the store asking about the sale event; expectations are set incorrectly; post-import cleanup is required
- Google Shopping shows sale annotations on every product listing; click-through rate may spike then drop when shoppers find no genuine sale
- Fixing the error requires a corrective export, CSV edit, and second import pass without overwriting descriptions and images added after the original import
- RRP mapped to Variant Price; Compare At Price deliberately left unmapped: no products show sale badges; catalogue displays at full retail
- Store presents as a full-price operation; customers who arrive do not leave disappointed by absent sale products
- Google Shopping shows full-price listings with no misleading sale annotations; feed is accurate from day one
- Import profile saves the correct mapping for all future imports from the same supplier; mapping error cannot repeat on subsequent batches

Key Takeaways
- Compare At Price controls the sale badge on every Shopify sales channel. When it is set higher than the regular price, every product shows a "Save" amount on the storefront, Shopping feed, and connected catalogues.
- The mapping error happens because supplier cost and RRP columns are straightforward to confuse. COST is not the same as "original price". For a full-price catalogue, leave Compare At Price unmapped during import.
- Verify the mapping before confirming any import with two price columns. Compare At Price should show higher values than Variant Price if products are genuinely on sale. If it shows lower values, the columns are inverted.
- Fix the error with update-existing mode. Export the catalogue, clear the Variant Compare At Price column on affected rows, re-import in update-existing mode. Only the pricing field updates; descriptions, images, tags, and inventory are unchanged.
- Save the correct mapping as a named import profile. A clearly named profile prevents the same mistake on future imports from the same supplier.
Fix the Compare At Price column mapping and clear incorrect sale badges across your catalogue at importier.app.
Set up your first import in under five minutes.
Importier brings products into Shopify with AI descriptions, category metafields, and data enrichment on every run.


