30%
OFFLimited time
Make sure your store is healthy and ready forGet your store ready for Black Friday
Catalog Health Scanner for WooCommerce
Use code at checkout
Get 30% Off

WooCommerce Add to Cart Button – Labels by Role & Language

WooCommerce Plugin
5.0
7 Reviews
v2.3.0
Updated 2 weeks ago
1,200+
Stores Live
every button, every state, your words ↓

Stop calling everything "Add to cart." Say what you mean.

Rewrite the Add to Cart button per product, per category, per user role, per product type, per view. Bake the price, stock count, or customer name straight into the label with shortcodes. Free products say Download. Wholesalers see Request quote. Out-of-stock says Notify me. $39.99/yr or $119 once.

14-day refund
WPML & Polylang ready
HPOS-ready
three things "Add to cart" can't say ↓

One button. Every product talks the same.

WooCommerce ships with one button label: Add to cart. The moment your store sells a digital download, a wholesale SKU, a pre-order, or a free lead magnet, the same three words sound wrong. The button needs to match what the customer is actually doing.

problem · 1

Your free e-book button says "Add to cart" like it costs money.

Free e-book · $0.00Add to cart✕ feels wrong
Pre-order vinyl · ships AugAdd to cart✕ same words
Wholesale SKU · 50 minAdd to cart✕ same words

Native WooCommerce gives every product the same button text. A $0 download and a $2,000 wholesale pallet both say "Add to cart." Conversion suffers, support gets confused emails, the store sounds robotic.

problem · 2

The wholesale buyer sees the same button as the casual shopper.

Guest browser → Add to cart
Logged-in customer → Add to cart
B2B wholesale → Add to cart
→ same words, three different journeys

A wholesale buyer placing a $2,000 order shouldn't see the same call to action as someone window-shopping a $19 hat. Native WooCommerce treats every role identically. You can't surface intent in the button.

problem · 3

The button still says "Add to cart" after they already added it.

1Customer clicksAdd to cart
2Item addedAdd to cart
3Stock now: 2 leftAdd to cart
no signal that anything changed

Native button text is static. Same words whether stock is high, low, the item is already in the cart, or the customer is on their 3rd visit this week. Information that drives urgency stays hidden.

eight ways to rewrite a button ↓

Per product. Per role. Per state. Per word.

The plugin gives you eight independent control surfaces. Set a global default, then override per product, per category, per user role, per product type, per view (single vs archive), per language, per condition (free, empty, in-cart), and bake live data into the text with shortcodes.

per · product

One label field on every product's Edit screen.

Leave it blank to inherit the global default. Fill it in to override that one product. Works on variations too.

by · user role

Different label for guest, customer, wholesaler.

Every WP role has its own field, including custom roles from membership and B2B plugins.

dynamic · shortcodes

Bake price, stock, or the customer's name into the label.

Six built-in shortcodes. Combine freely. Live values pulled per render.

by · product type

Simple, variable, grouped, external · all separate.

view · single vs archive

One label on shop, another on the product page.

Custom "Read More" replacement for variable products on archives included.

condition · 4 built-in

Free, empty price, already in cart, out of stock.

by · category & tag

One label for an entire category in two clicks.

Per category and per tag. Specific products beat category; category beats global.

multi · language

WPML and Polylang ready out of the box.

Every label is translation-ready via WordPress's standard string-translation hooks.

setup

Four steps. Live in under 5 minutes.

i · install

Activate the plugin

Upload the .zip from Plugins → Add New, then activate.

Add to Cart Button Labels for WooCommerce Active
ii · global label

Set the default text

WPFactory → Add to Cart Button Labels. Type your new default (Buy now, Get yours, Order today). Save.

global label Buy now
iii · override

Override per role or product

Open the User Roles or Conditions tab. Set Wholesale → Request quote, Free product → Download. Save once for all matching products.

WholesaleRequest quote
FreeDownload
In cartView cart →
iv · dynamic

Bake price or stock into the label

Drop a shortcode anywhere: {price}, {stock_quantity}, {user_name}. The button text updates per render.

how we stack up

All the button rules. One plugin, one price.

WooCommerce
native · single label
Booster (Add to Cart Labels)
free + Plus · no lifetime
Custom Add to Cart Button
free + Pro · not specified
WPFactory
$39.99/yr · $119 once
core: button label rules
Global default label✕✓✓
Per-product label✕✓✓
Per-category / per-tag label✕✓✕
Per user-role label✕✓✕
Per product-type label (simple, variable, grouped, external)✕✓✕
Single-product vs archive label✕✓✕
dynamic & conditional
Dynamic shortcodes ({price}, {stock_quantity}, {user_name})✕✕✕
Free-price label (price = $0)✕not specified✕
Empty-price label (no price set)✕not specified✕
Already-in-cart state label✕✕✕
Out-of-stock notify-me label✕✕✕
Custom "Read More" for variables on archives✕✕✕
integrations
WPML / Polylang ready-✓✓
HPOS & block-checkout ready-not specifiednot specified
Custom user roles (membership / B2B)✕✓✕
pricing & ownership
Free version on .org-✓✓
Lifetime tier-✕not specified
Multi-store licensing-per-site renewalnot specified
10-year cost$0yearly × 10not specified
50+ plugins (All Access)-✕✕
Ready to rewrite every button on your store? ↓ Jump to pricing
scroll →
three real stores ↓

Three businesses. Three button-text strategies.

digital · downloads + paid bundles

Digital store · "Free e-books say Download. Paid bundles say Buy."

A romance-novel publisher gives away the first chapter of every book as a free download and sells the full bundle. Native WooCommerce had both products saying Add to cart - which looks wrong on the freebie. The plugin assigns "Download now" to the Free Price condition globally, and "Buy the bundle - {price}" to the paid bundles via shortcode.

Free chapter buttonDownload now
Bundle buttonBuy the bundle - $19
After click"In your library - read now"

Lead-magnet downloads up 38%. Paid-bundle conversion up 12%. Same shop, same products, different words on the button.

apparel · variables · urgency

Apparel store · "Only 3 left of size M baked into the button."

A sneaker store kept losing sales when shoppers didn't realize stock was low. By dropping {stock_quantity} into the variation button template, every size variant now shows its live remaining count right inside the button. The urgency is impossible to miss because it lives where the eye is already going.

Variable templateGrab 1 of {stock_quantity} left · {price}
Out-of-stockNotify me when back
In-cart stateIn your cart - check out →

Conversion on low-stock variants climbed 22%. Cart-abandonment dropped because shoppers stopped second-guessing whether they'd already added the item.

verified reviews

From stores running this right now.

Using the plugin? Leave a review on WordPress.org.

"Does what it says with simplicity. Multi-language support, very easy to use."
A
abrad11
verified buyer
see review →
"Great plugin! Thank You!"
S
Sopan Ali
via WordPress.org
see review →
"Simple and effective."
N
Nemanja Tomanovic
via WordPress.org
see review →
tested with

Works with every theme and language plugin you've already got.

Platform

WP 4.4+WP 7.0WC 4.0+WC 10.7PHP 7.4+PHP 8.3HPOS-ready

Themes

StorefrontAstraKadenceGeneratePressAvadaFlatsomeBlock themes

Translation

WPMLPolylangTranslatePressLoco Translate

Checkout & cart

Classic cartBlock cartClassic checkoutBlock checkoutMini-cart
why this plugin

Built for stores where the button is part of the offer.

Every WPFactory plugin ships with the same eight guarantees. Here's what running this one looks like in practice.

Clean code, reviewed

Hooks WooCommerce's two button-text filters (single + archive) instead of overriding templates. Zero theme conflicts. No extra database tables, no JS bloat on the frontend.

Docs & specs, written

Every setting documented. Six shortcodes spelled out with examples. Filter list provided (alg_wc_atcbl_label, alg_wc_atcbl_role_label, plus condition and shortcode filters) for devs who need to hook in.

Support that ships

Reviews mention us adding requested options during the trial period. Real bug reports become releases within days, not quarters. Email support, real engineers.

14-day money-back

14-day refund on yearly and lifetime, 30 days on All Access, no questions asked. If a label rule doesn't behave the way you'd hoped, support helps; if it still doesn't fit, you walk away whole.

Bundle savings, real

All Access is $499 once for all 50+ plugins, lifetime, unlimited sites, and it includes every plugin we release later. Three lifetime licenses at $199 already cost $597, so the bundle usually wins by your third plugin.

Updates, regularly

v2.2.6 shipped recently. Tested against the latest WooCommerce within days of every release. HPOS-ready, block-checkout supported, PHP 8.3 compatible.

Plays well with others

Compatible with WPML, Polylang, TranslatePress, WooCommerce Subscriptions, B2B and membership plugins that register custom roles. Block-based cart and checkout supported.

Designed for store owners

You don't need a developer or a snippets plugin. Open settings, type the label, hit Save. Conditions and roles are pre-populated dropdowns. Shortcodes are listed in the help text.

7 stores joined this week·2 in the last 24h
if you're going to keep this plugin a while ↓

Three tiers. Pick once.

14-day refund on yearly and lifetime, 30 days on All Access. Lifetime pays for itself by year 3. All Access pays for itself with any 2nd plugin you'd ever use. Yearly auto-renew can be turned off in your account.

ADD TO CART BUTTON LABELS PRO
$119 once

Buy once. Owns itself by year 3. Use on every site you own.

  • Unlimited sites
  • Lifetime updates
  • Priority email support
  • 14-day refund
  • GPL-licensed · use on client sites
Buy Lifetime - $119 once
★ SMART MOVE ALL ACCESS · LIFETIME
$999$499oncesave 50%

This plugin + 49 others, lifetime updates, unlimited sites - for $380 more than Lifetime alone.

! Buying any 5 single lifetimes?
$595 → $499 / 50+
  • 50+ plugins, lifetime updates
  • Unlimited sites - every plugin
  • Future plugins included free, forever
  • Lifetime priority support
  • Pays back at 5th plugin you'd ever use
Explore All Access
What can I change the Add to Cart button text to?
Anything you want. Plain text (Buy now, Pre-order, Reserve), text with the product price baked in (Get this for $49), text with stock count (Only 3 left - grab one), text personalized to the logged-in user (Welcome back John, claim yours), or even emoji. The plugin gives you a textarea with full shortcode support.
Can I set a different button label per product?
Yes. Every product gets its own Add to Cart Text field on the Edit Product screen. Leave it blank to fall back to global settings. Fill it in to override globally for that one product. Variations are also editable.
Can I change the button text based on user role?
Yes. Show Buy now to guests, Add to your stockpile to logged-in customers, Request a quote to wholesale users. Every WordPress user role gets its own label field, including custom roles from membership or B2B plugins.
What are the dynamic shortcodes?
Six built-in shortcodes turn the button text into something that updates automatically. {price} prints the current product price. {sale_price} prints the sale price when one is set. {stock_quantity} prints the live stock count. {user_name} prints the logged-in customer's first name. {product_title} prints the product name. {category} prints the primary category. Mix and match in any button label.
Does it work with variable, grouped, and external products?
Yes. Each product type gets its own label slot in settings (simple, variable, grouped, external, subscription). On archive pages, variable products usually show "Read More" - you can rewrite that too, or replace it with "View options" or "Pick your size".
Can the label differ on the shop page vs the product page?
Yes. View-level toggle: one label for archives (shop, category, search, related products), another for the single product page. Useful when archive buttons say "Choose options" but the single page says "Add to cart - $49".
What about free products, out-of-stock, or already-in-cart state?
Four condition-specific labels ship out of the box. Free price (price is zero) - show "Download now". Empty price (no price set) - show "Contact us". Already in cart - show "In your cart - view cart". Out of stock - show "Notify me". Each is configurable, each falls back to the global label when off.
Does it work with WPML or Polylang?
Yes. Every label is translation-ready. WPML and Polylang both pick up the strings via WordPress's standard translation hooks. Run the standard string-translation scan, translate per language, done. No special workflow needed.
Will it break my theme?
No. The plugin hooks WooCommerce's button-text filters (woocommerce_product_single_add_to_cart_text, woocommerce_product_add_to_cart_text). Any theme that uses WooCommerce templates correctly (Storefront, Astra, Kadence, GeneratePress, Avada, Flatsome, all block themes) inherits the new labels automatically. No template overrides needed.
Is the plugin HPOS-compatible?
Yes. HPOS (High-Performance Order Storage) is declared compatible. Block-based cart and checkout supported. Works with classic shortcode-based cart and checkout too.
What is the refund policy?
14 days on the yearly and lifetime plans; 30 days on All Access. No questions asked. The yearly plan also includes an upgrade credit toward Lifetime or All Access. Lifetime never renews. Yearly auto-renew can be turned off in your account.
Is there a free version?
Yes. The free version on WordPress.org covers global label, per-product label, and per-category label. The Pro version adds user-role labels, product-type labels, view-level labels (single vs archive), dynamic shortcodes, condition-specific labels (free, empty, in-cart, out-of-stock), custom Read More text for variable products, and priority support.
if you've scrolled this far ↓

Stop letting "Add to cart" speak for every product. Say what you actually mean.

Rewrite the button per product, per category, per user role, per product type, per view. Bake the price, stock count, or customer name into the label with shortcodes. Free products say Download. Wholesalers see Request quote. Already-in-cart says View cart. 1,200+ stores already running it. 14-day refund if it's not for you.

1,200+ stores · 5.0★ across 7 reviews · WordPress.org plugin · 14-day refund