Skip to content
Gaurav TiwariDocs

Show Free Instead of a Zero Price

Updated October 17, 2026

A free lead magnet or sample product shows as $0.00 in WooCommerce. That reads like a missing price or a mistake, not an offer.

Free Price Text replaces a zero price with your own wording, “Free” by default, on product pages, shop grids, product blocks, the cart, the mini-cart, checkout and order details.

Set the Store-Wide Text

Go to Stackless → Settings → Free Price Text:

  • Text: shown in place of the zero price. Defaults to “Free”.
  • Price ranges: use the text at the low end of a range, so a range from zero to $19 shows your text followed by $19. On by default.
  • Free on sale: keep the regular price struck through when a sale makes the product free. On by default.
  • Cart and checkout: also show the text for free items in the cart, mini-cart, checkout and order details. On by default.

Override the Text on One Product

Edit the product and open Product data → General. The Free price text field replaces the store setting for that product, up to 60 characters. Leave it blank to use the store text. Variations use their parent product’s text.

What Counts as Free

Only a price of exactly zero is replaced. A product with no price entered is left alone, because WooCommerce can’t sell it.

For variable and grouped products:

  • If every price is zero, the whole range shows your text.
  • If the cheapest price is zero and others aren’t, the range shows your text followed by the highest price when Price ranges is on, and the normal range when it’s off.

In the cart and on orders, a line is treated as free when its subtotal and its tax are both zero.

Good to Know

  • Subscription products are skipped, so their price strings stay intact.
  • On the Cart, Checkout and Mini-Cart blocks, free items show the store-wide Text. A per-product override applies on product pages, shop grids, the classic cart and checkout, and order details.
  • Developers can change the text per product with the stackless_free_price_text_text filter.
Share

Was this helpful?

Still stuck? Open a support ticket