More fixes

WooCommerce sale price not showing

You typed a sale price, maybe scheduled it for the weekend, and the shop still shows the full price: no crossed-out price, no Sale! badge, or the sale shows on the product page but the cart charges the old price. Customers who came for the sale leave. Two checks tell you whether WooCommerce thinks the sale is on, and if it does, what is showing the old price.

Product page

What the checks found


  

Check 1: is the sale really on for this product

Open the product and go to Product data > General. The Sale price must be lower than the Regular price; a sale price equal to or above it is ignored. If you clicked Schedule, read the two dates: the sale starts at 00:00 on the From date and ends at the end of the To date, in the time zone set under Settings > General > Timezone, so a sale dated today can still be hours away. For a variable product the General tab has no price at all: open Variations and expand each one, because every variation carries its own sale price and dates.

Check 2: is something showing an old price

Open the product in a private window (logged out) and add it to the cart. If the cart has the sale price but the shop page does not, a page cache or CDN is serving a copy saved before the sale. If both show the full price but the admin shows the sale, go to WooCommerce > Status > Tools and run Clear transients and Regenerate the product lookup tables. If the price changes depending on who is logged in or what is in the cart, a pricing, role-based or discount plugin is overriding it; deactivate it on a staging copy and look again.

What each answer means

What you seeCauseFix
No sale shown, and the sale price is equal to or higher than the regular priceWooCommerce only treats a lower price as a saleSwap the numbers: Regular is the full price, Sale is the lower one
A scheduled sale did not start (or did not end) on timeThe site time zone is UTC or another city, or WP-Cron never ran the scheduled job on a quiet siteSet Timezone to your city; check Tools > Scheduled Actions for the woocommerce_scheduled_sales job and run it; use a real server cron if WP-Cron is disabled
Variable product shows the full price range, no saleThe sale price was set on some variations or none; the range only shows a sale where a variation has oneOpen Variations and set the sale price on each one (or use the bulk action Set sale prices)
Shop page full price, cart sale priceA page cache, CDN or host cache saved the page before the salePurge the cache, and purge it again when a scheduled sale starts and ends
Admin shows the sale, shop and cart do notStale price transients or product lookup table after an import or bulk editWooCommerce > Status > Tools: Clear transients, then Regenerate the product lookup tables
Price shown differs by customer or cartA dynamic pricing, wholesale or role-based price plugin sets its own price and ignores the saleSet the sale inside that plugin, or exclude the product from its rules
Sale price works but no crossed-out price or Sale! badgeThe theme or a page builder template removed the sale flash or prints only the current priceSwitch to Storefront on staging to confirm, then restore the price output in the theme or builder widget
Sale price reverts after a few hoursA POS, marketplace or spreadsheet sync writes the regular price backSet the sale in the system that owns the price, or stop that sync overwriting prices

Check it worked

In a private window, the shop page and product page should show the regular price crossed out next to the sale price, with the Sale! badge if your theme uses one. Add it to the cart: the line total should use the sale price. For a scheduled sale, check again just after the start time and just after the end time.

What not to do

If you would rather someone else finds why the sale is not showing and fixes it, that is what the box below is for. Related: coupon not working, product cannot be purchased, product says out of stock.