WooCommerce sale price not showing: symptom, cause and fix

A WooCommerce sale price gives you a crossed-out price only when the product has a regular price, a lower sale price, and the sale is currently running. When the strikethrough is missing, usually the regular price was lowered, the start date has not passed yet, or only some variations are on sale. Less often the theme, a discount plugin or the cache is to blame.

Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 7 min read

When does WooCommerce cross out a price?

When it has two numbers to compare. In the product editor, in the Product data section, there are two fields: Regular price and Sale price. If both are filled in, the sale price is lower and no dates are holding it back, the store shows the old price crossed out with the new one next to it. Usually a sale badge appears on the image as well.

You will find a description of the fields and scheduling in the WooCommerce documentation on product editor settings. It shows something important when looking for the cause: the “to” date ends the sale at 23:59 that day, after which the product goes back to its regular price by itself.

Everything else that lowers the price (coupons, discount rules in plugins, prices for customer groups) works in its own way and often shows no strikethrough at all.

The symptom points to the cause

Start with what you see in the store. Each symptom narrows the list.

SymptomMost common causeWhere to check
The price is lower but not crossed outthe regular price was lowered, the Sale price field is emptyProduct data, General tab
I entered a sale price and it vanished after savingit was equal to or higher than the regular priceboth price fields
The sale is in the admin, nothing in the storethe start date has not passed yetthe Schedule link next to the sale price
The sale worked and then disappearedthe end date has passeddates in the product or in the variations
A price range in the list, no strikethroughvariable product, only some variations are on saleVariations tab
The reduction only shows in the carta coupon or a discount rules pluginMarketing, Coupons and the plugin settings
The data is right, but the price does not showthe theme, a page builder or the cacheprivate window, another theme as a test

This article is about one product or a few that are missing the strikethrough. How to schedule the start and end of a whole sale is covered in the WooCommerce sale schedule, and a discount for a whole category in the post on a category sale.

How to set up a sale in WooCommerce so the price is crossed out

One simple product, from start to check.

  1. Open Products, All Products and edit the product.
  2. In Product data, on the General tab, leave the price from before the sale in the Regular price field. Do not lower this field.
  3. Enter the new, lower price in the Sale price field.
  4. If the sale should run for a set time, click Schedule and enter the from and to dates. Without dates the sale price lasts until you remove it.
  5. Update the product.
  6. Open the product in a private browser window, without logging in, and check the product page and the category.

For a variable product you do steps 2 to 4 on the Variations tab, in each variation or with a bulk action for all variations at once. This is described in the documentation on variable products, including the action for setting sale dates on all variations.

Variable products: a price range with no strikethrough

This is the most common “it does not work” that actually works. A hoodie in five sizes, with a sale on only two of them. In the category list WooCommerce then shows a range, for example from the lowest sale price to the highest regular price, with no strikethrough. The store does not yet know which variation the customer will choose, so there is no single old price to cross out.

The strikethrough appears in the list when all variations have the same regular price and the same sale price. When variation prices differ, WooCommerce core has no setting to show the old price next to the range. Store owners have asked about this for years on the WordPress.org support forum, and the answer is a code snippet or a separate plugin for displaying variation prices.

What you can do without code:

  • put all variations on sale, if that makes commercial sense,
  • say in the short product description which sizes the reduction applies to,
  • check whether the strikethrough shows on the product page after choosing a variation on sale. If it does, the data is fine.

The data is right, but the price does not show

When the price fields and dates match, the cause lies outside the product.

The theme or a page builder. WooCommerce marks the old price with a separate tag in the page code, and the theme decides how to draw it. Sometimes the theme's styles or the price block in a page builder show only the current price. An example of this with a theme is described in a thread on the GeneratePress forum. A quick test: switch to a default theme for a moment on a test copy of the site, or in troubleshooting mode, which works only for you. If the strikethrough shows there, it is a matter for the theme author or whoever looks after the site.

A discount plugin. Rules such as “minus 10% on a category” in plugins often calculate the discount only in the cart. Some plugins have a setting to show the reduction on the product page, some do not. Look in its settings or ask the author.

The cache. A cache plugin or the server may still be showing the page from before the change. Clear the cache and check in a private window. When this is a frequent problem, the article on why changes are not showing in WordPress will help.

One more thing for every announced reduction: in the EU you have to show the lowest price from the 30 days before the reduction next to it. WooCommerce does not calculate it; a separate plugin does.

How the chat looks for the reason the strikethrough is missing

You name the product where the strikethrough is missing. Your chat (Claude or ChatGPT) reads the regular and sale prices, sale dates and variations, compares them with the table of causes and tells you which one fits. The TellMyShop plugin for WordPress and WooCommerce does this in TellMyShop Free already, because it only reads.

You: The Basic Zip Hoodie should be on sale, but the category shows no crossed-out price. Why?

Your chat: It is a variable product with 5 variations. Only M and L are on sale: regular price €199.00, sale price €159.99, until 2026-10-31. The other three sizes have no sale price.

That is why the category list shows the range €159.99 to €199.00 with no strikethrough. On the product page, after choosing M or L, the strikethrough is there.

You: Yes, all sizes.

Your chat: Saved, 3 variations. You can undo the change from the change history.

Card status: waiting for your “yes”
change preview

If the sale should cover all sizes, here is the preview for S, XL and XXL:

old version: sale price: none

new version: sale price €159.99, until 2026-10-31

Illustration: products, numbers and replies are examples.

The prices and names in this conversation are examples, and the amounts include tax. In TellMyShop Free the chat points to the cause from the product data, but saves nothing. Nor can it see how the theme draws the price, so you check that step by eye. In TellMyShop Pro the chat also reads theme files and other plugins' settings, so it can find a style that hides the old price.

Price fixes are saved by TellMyShop Pro once the Sales switch is on in the plugin panel. The switch covers prices, sales, discount codes, stock, variations and shipping, and stays on until you turn it off. A fix in the theme needs the Theme switch, which lasts 24 hours and requires a database backup made the same day. Before saving, the chat always shows a preview and blocks a sale price higher than the regular one, and you can undo most changes from the change history.

Start with TellMyShop Free. The plugin is described on the TellMyShop for WordPress and WooCommerce page, and Pro prices are on the pricing page.

Questions and answers

Why is there no crossed-out old price after I lowered the price?

Most likely because you changed the regular price. WooCommerce crosses out a price only when the product has a regular price and a lower sale price that is currently active. Put the old price back in the Regular price field and enter the new one in the Sale price field.

Why does the product list show a price range with no strikethrough?

That is how WooCommerce shows a variable product whose variations have different prices. The strikethrough appears in the list only when all variations have the same regular and sale price. On the product page the customer sees the strikethrough after choosing a variation on sale.

I set a sale with dates and nothing changed. What should I check?

First the start date: a scheduled sale price only works from that day. Then the end date, because after it WooCommerce goes back to the regular price by itself. If the dates are right, check the page in a private window, because the cache can hold the old version for a while.

Will a coupon show a crossed-out price on the product page?

No. A coupon reduces the amount only in the cart, so the product page shows the normal price. Many discount rule plugins work the same way. If customers should see the reduction straight away, set a sale price in the product.

Will TellMyShop Free find the cause?

In large part, yes. In the free version the chat reads the product's regular and sale prices, the sale dates and the variations, so it points to causes in the data. It will not fix them, and it cannot see causes in the theme. Saving prices works in TellMyShop Pro once the Sales switch is on.

WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.

TellMyShop for WordPress and WooCommerce

Your chat reads the site, shows every change before saving it and saves only after your yes. You can undo most changes with one sentence. Works with Claude or ChatGPT, free accounts included.

Read next