Skip to content
Gaurav TiwariDocs

Custom Add to Cart Text

Updated October 17, 2026

“Add to cart” fits a T-shirt. It doesn’t fit a free download, a monthly plan or a sold-out item that still shows “Read more”. Changing the label usually means a snippet in your theme’s functions.php.

Custom Add to Cart Text lets you rename the button per product type, for free, subscription and sold-out products, and per product or variation. Shop grids and product pages get separate labels, and product blocks pick up the same text.

Set Store-Wide Labels

Go to Stackless → Settings → Custom Add to Cart Text. Each row has two boxes: one for Shop grids and product blocks, and one for Product page. The rows are:

  • Simple products
  • Variable products
  • Grouped products
  • External/Affiliate products
  • Subscription products
  • Free products
  • Out of stock products

Leave a box blank to keep WooCommerce’s own text. The placeholder in each box shows that text, such as “Select options” for variable products in the shop.

Which Label Wins

When more than one row applies, the most specific state wins:

  1. Out of stock products
  2. Free products (a price of exactly zero, for products that aren’t variable or grouped)
  3. Subscription products
  4. The product’s type

A sold-out subscription shows your Out of stock text. A free simple product shows your Free text. If a row is blank, the next one down is used.

Override One Product

Edit the product and open Product data → Advanced:

  • Button text in shop: the label on shop grids and product blocks.
  • Button text on product page: the label on this product’s own page.

Both take up to 60 characters and win over every store-wide row. Leave them blank to use the store settings.

Override One Variation

Each variation has an Add to cart button text field. It’s shown on the product page when that variation is selected, and the button changes as the shopper picks options. Leave it blank to use the product’s setting.

Good to Know

  • If an external product has its own Button text set in WooCommerce, the store-wide rows are skipped for it. The per-product fields on the Advanced tab still apply.
  • Developers can change the final text with the stackless_custom_cart_text_text filter, which also receives the context, loop or single.
Share

Was this helpful?

Still stuck? Open a support ticket