Guide SaleTag

How Compare-at Price Works in Shopify

Learn how compare-at price works in Shopify, how it affects sale pricing, and why sale tags still need their own cleanup.

Compare-at price is one of those Shopify fields that sounds simple until it starts driving other work.

You lower a product price.

You add a compare-at price.

The storefront shows a sale price.

Then someone asks why the product did not get a sale tag, why it is not in the sale collection, or why the sale badge looks different than expected.

That is where the confusion starts.

Compare-at price can help Shopify show that a product is on sale. But it does not do every sale-related job for you.

It does not create a discount. It does not automatically add a product tag. It does not clean up sale collections when prices change.

It is a pricing field.

The cleanup around it is a separate chore.

Short answer

In Shopify, compare-at price is the original price shown next to a lower current price. To display a sale price, Shopify’s sale pricing docs say the compare-at price must be higher than the price.

For example:

  • Price: $20
  • Compare-at price: $30

That can show shoppers the product is on sale.

But compare-at price does not automatically create a discount, add a sale tag, remove an old sale tag, or decide which sale collection the product belongs in.

Those are separate pieces of store cleanup.

What compare-at price means

Compare-at price is meant to show the original price of a product when the current price is lower.

Shopify’s sale pricing docs explain that, to set a sale price, the compare-at price should be the original price and the product price should be the new lower price.

So if a shirt was $30 and is now $20, the setup is:

  • Price: $20
  • Compare-at price: $30

That tells Shopify there is a price comparison to show.

Whether that appears as crossed-out text, a sale badge, or another visual treatment depends on the theme and storefront setup.

The compare-at price gives the theme data to work with.

It does not control the whole sale workflow.

Price and compare-at price are different fields

This is the part worth being very clear about.

The price field is what the customer pays.

The compare-at price field is the original or reference price shown for comparison.

They are not interchangeable.

A product with this setup:

  • Price: $30
  • Compare-at price: empty

is a regular-priced product.

A product with this setup:

  • Price: $20
  • Compare-at price: $30

is commonly treated as on sale.

A product with this setup:

  • Price: $30
  • Compare-at price: $20

should not display as a sale price because the compare-at price is lower than the current price.

Shopify’s product details docs describe compare-at price as the field used to display the original price when you lower the product price. (help.shopify.com)

That sounds simple.

The annoying part is keeping the rest of your sale workflow lined up with it.

How Shopify displays sale pricing

Shopify can display sale pricing when the compare-at price is higher than the current price.

The exact storefront display depends on your theme.

Some themes show the compare-at price crossed out. Some show a sale badge. Some show both. Some need theme settings adjusted before the sale display looks the way you expect.

That means compare-at price is not the same thing as a guaranteed storefront badge.

The pricing data can be correct while the theme display still needs its own setup.

This is why merchants sometimes say, “I set compare-at price, but the sale badge is not showing.”

Sometimes the issue is the price setup.

Sometimes the issue is theme behavior.

Sometimes both are fine, but the product still needs tag or collection cleanup.

Compare-at price does not create a discount

Compare-at price is not a discount code.

It is not an automatic discount.

It does not create a checkout promotion.

It does not apply a percentage off.

It simply lets Shopify and your theme show a lower current price against a higher original price.

If you need actual discount behavior, such as a code, automatic discount, or campaign logic, that is a different Shopify feature.

This distinction matters because sale pricing and discounting are easy to mix up.

A product can look on sale because of compare-at pricing without using a discount.

A discount can exist without relying on a product tag.

A sale tag can exist even if the pricing is no longer discounted.

Those are three different things.

Compare-at price does not create a sale tag

This is the SaleTag problem.

Shopify does not automatically add a product tag just because price is lower than compare-at price.

So if your store uses tags like:

  • sale
  • on-sale
  • clearance
  • discounted

someone still has to keep those tags correct.

That might be fine for a small catalog.

It gets annoying when prices change often.

A product goes on sale, but nobody adds the tag. A sale ends, but the tag stays behind. A variant gets discounted, but the product never shows up in your sale collection because the tag is missing.

The pricing field changed.

The tag did not.

Variants make this more annoying

Variants are where compare-at price cleanup gets messy.

Shopify lets products have variants, and Shopify’s variant docs explain that variants are the different versions of a product, such as size or color. (help.shopify.com)

Each variant can have its own price and compare-at price.

That means one product might look like this:

  • Small: Price $30, compare-at empty
  • Medium: Price $30, compare-at empty
  • Large: Price $20, compare-at $30
  • XL: Price $30, compare-at empty

Is the product on sale?

For many merchants, yes. If any variant is discounted, the product belongs in the sale workflow.

For others, maybe not. They might only consider a product on sale if every variant is discounted.

The important part is choosing one rule.

If your rule is “tag the product when any variant has price below compare-at price,” then that rule should be applied consistently.

Otherwise your sale tags and sale collections become guesswork.

Smart collections and compare-at price

Smart collections can use compare-at price conditions, but this is another area where merchants should be careful.

Shopify’s smart collection conditions docs explain that compare-at price conditions have variant-specific behavior. For example, for “compare-at price is not empty,” all variants must have a compare-at price value for the product to match. (help.shopify.com)

That may not match what you expect if only one variant is discounted.

A product with one discounted variant might be “on sale” in your head, but a smart collection condition may not include it the way you expect depending on the condition you choose.

This is why some stores use tags for sale collections instead.

Tags let the store define its own sale rule.

But the tag still needs to stay accurate.

How to set compare-at price manually

Manual setup is straightforward.

  1. Open Shopify admin.
  2. Go to Products.
  3. Open the product you want to edit.
  4. Find the pricing section.
  5. Enter the original price in Compare-at price.
  6. Enter the lower current price in Price.
  7. Save the product.
  8. Check the storefront to confirm the sale price displays how you expect.

If the product has variants, review the variant prices too.

Do not assume the product-level view tells the whole story.

A product can have one variant on sale and another at regular price.

How to bulk edit compare-at prices

Shopify’s bulk editor can help when you need to update many products or variants. Shopify’s bulk editing docs explain that columns can represent product properties such as price, SKU, and compare-at price. (help.shopify.com)

That is useful when you are setting up a sale across multiple products.

It also means mistakes can spread fast.

Before you move on from a bulk edit, check:

  1. Did the price field change correctly?
  2. Did the compare-at price field change correctly?
  3. Are variants handled correctly?
  4. Are products that are no longer on sale cleaned up?
  5. Are sale tags or sale collections still accurate?

Bulk editing can save time.

It can also create stale sale cleanup if the tag workflow is separate.

Common mistakes

The first mistake is setting compare-at price lower than the current price.

For sale pricing, compare-at price should be higher than price.

The second mistake is thinking compare-at price creates a discount.

It does not. It changes the displayed price comparison. Discount codes and automatic discounts are separate.

The third mistake is thinking compare-at price creates a sale tag.

It does not. Tags are separate product data.

The fourth mistake is forgetting variants.

One variant can be discounted while another is not. Your sale workflow needs a rule for that.

The fifth mistake is forgetting cleanup after the sale ends.

Removing or changing compare-at price may end the sale display, but it does not automatically clean up every tag, collection, or internal process that depended on the product being on sale.

When manual cleanup is enough

Manual compare-at price cleanup is fine when the store is small.

You can probably handle it by hand if:

  • you have a small catalog
  • sales are rare
  • products do not have many variants
  • one person manages pricing
  • sale tags are not central to your workflow
  • sale collections are easy to review

In that case, keep it simple.

Set the price. Set the compare-at price. Add the sale tag if you use one. Remove the tag when the sale ends.

That is enough for many stores.

When automation starts to help

Automation helps when compare-at price changes keep creating the same tag cleanup.

If you are regularly checking products, updating sale tags, fixing sale collections, and cleaning up after price changes, the problem is not complex.

It is repetitive.

A useful sale tag workflow is simple:

  1. Check whether a product has a variant where price is lower than compare-at price.
  2. Add the sale tag when the product matches the rule.
  3. Remove the sale tag when the product no longer matches.
  4. Leave an activity trail so you can see what changed.

That keeps the tag aligned with your pricing rule.

It does not run your sale campaign.

It just keeps the tag from falling behind.

Tiny tool option

SaleTag adds or removes a sale tag when a product has at least one variant priced below compare-at price.

It does not create discounts. It does not edit prices. It does not change compare-at prices. It does not edit your theme or control storefront sale badges.

It is built for the boring cleanup work: keeping sale tags in sync when product pricing changes.

Keep sale pricing and sale cleanup separate

Compare-at price tells Shopify and your theme that there is a price comparison to show.

That is useful.

But it does not handle every sale-related cleanup task.

If you only need the sale price to display, compare-at pricing may be enough.

If you also need sale tags, sale collections, or internal workflows to stay current, those need their own cleanup process.

Keep the jobs separate.

Set the pricing correctly.

Then decide whether the tag cleanup is something you still want to handle by hand.

FAQ

Common questions

What is compare-at price in Shopify?

Compare-at price is the original or reference price shown when the current product price is lower. It is commonly used to show that a product is on sale.

Does compare-at price create a discount?

No. Compare-at price does not create a discount code or automatic discount. It is a pricing display field.

Does compare-at price automatically tag a product as on sale?

No. Shopify does not automatically add a sale tag when compare-at price is higher than price.

Can variants have different compare-at prices?

Yes. Variants can have their own prices and compare-at prices, which means one variant can be discounted while another is not.

Does SaleTag edit compare-at prices?

No. SaleTag does not edit prices or compare-at prices. It only manages one configured sale tag based on existing product pricing data.