Cart Labels
When a discount applies, it shows up in the customer’s cart as a line item with a label — “Spend & Save: 10% off”, “Bulk pricing: 5+ at £8 each”, and so on. The label is editable from the Messaging section at the bottom of the rule editor, with the same token grammar the storefront uses at render time.
Where to edit the cart label
Section titled “Where to edit the cart label”Scroll to the Messaging section at the bottom of the rule editor (after Rewards). The first sub-block, Cart label, is a single-line input — always editable, with no structural lock. Type whatever you want shoppers to see.
![Rule editor scrolled to the Messaging section of a Spend & Save discount, with the Cart label block: the label input reading Spend & Save and the [ccy] / [percentage_discount] / [threshold_reached] token chips above it](/screenshots/wizard-cart-label-tab.png)
The label text is set per discount. Which surfaces show it — the cart page, the mini-cart and checkout — is a store-wide choice: the Show the discount line on checkboxes in the Discount label card on the Message Settings tab. Where you hide the label, shoppers still get the discount but see no line explaining the lower total.
Token grammar
Section titled “Token grammar”The chip toolbar above the input offers the tokens that resolve for the rule you’re editing, named for what they represent — for example [ccy], [percentage_discount] and [threshold_reached] on a Spend & Save rule. Click a chip to insert it; the storefront swaps it for the live value when the cart line renders.
| Token | Meaning | Example output |
|---|---|---|
[ccy] | Cart currency symbol (matches the customer’s checkout currency) | [ccy]10 Off → “£10 Off” / “€10 Off” / “$10 Off” |
[percentage_discount] / [amount_discount] | The rule’s reward value — percent or fixed amount | [percentage_discount]% off → “15% off” |
[threshold_reached] / [quantity_reached] | The spend or item-count threshold the cart crossed | Spend [ccy][threshold_reached], save [percentage_discount]% → “Spend £50, save 10%” |
The rule-level tokens [items], [start_date], [end_date], [end_time], [min_items] and [min_spend] are offered too when the rule carries the setting they read (matching items, a schedule, a threshold). The generic spellings [discount_value] and [second_value] — used in the recipe seeds — resolve to the same two values. See the Message tokens reference for the full per-surface vocabulary.
A token that doesn’t apply to the rule is stripped before the shopper sees it, so a label never shows a literal [second_value]. A token the engine doesn’t recognise at all (a typo like [amount]) is left as typed, and the editor warns you about it under the input.
[ccy] fills in the symbol of the currency the rule runs in. A rule with a money amount is scoped to one currency, so a label like [ccy][discount_value] Discount reads right in each per-currency rule. See Multi-currency compatibility for how to run a money deal in several currencies.
When the input is blank
Section titled “When the input is blank”When you open a rule that has no label yet, the editor fills one in for you from the reward (e.g. “15% off”) and marks it with an auto pill. Edit the text and the pill disappears. The auto copy is filled once — it does not update if you change the reward later, so re-check the label after editing a reward.
If you clear the input, the storefront builds a default label from the reward instead — for example “10% Discount”, “Free shipping”, “Free gift” or “Bundle deal” — and falls back to the localised string “Discount” when it can’t work one out. It never shows the internal coupon code.
Recipes typically seed the input with a starting string when you pick them from the gallery (e.g. [discount_value]% Discount) — that string is editable as soon as the rule opens.
Multilingual stores
Section titled “Multilingual stores”Admin-entered strings — the Cart label, the Spend-more nudge message, the Custom message on the product page, and the rule’s own Name — are stored in the database as the literal text you typed. They do not flow through WordPress’s .pot/__() translation pipeline that the plugin’s own UI strings use, so a single rule shows the same label to every shopper regardless of their site language.
Enter labels in the language your store actually serves. For a single-locale store this is straightforward — type the copy in the storefront’s language and you’re done.
For a multilingual store, model each language as a separate rule and use Zone targeting (in the rule editor’s Where does it apply? section) to scope each one to the right region:
- Rule A —
cart_label = "Réduction", scoped to a “France” zone. - Rule B —
cart_label = "Discount", scoped to a “UK & US” zone. - Rule C —
cart_label = "Rabatt", scoped to a “Germany” zone.
The engine evaluates Zone targeting per shopper, so each one sees only the rule whose zone matches their country — and therefore only the language-appropriate label. The same per-rule split applies to the spend-more nudge, the product-page custom message, and the rule name.
The tokens are locale-neutral and substitute the same way regardless of language, so a French rule can still write Réduction [ccy][amount_discount] and have [ccy] resolve to ”€” automatically.
REST API
Section titled “REST API”You can set the label from the REST API for bulk imports as the rule’s messaging.cart_label field — see the REST API reference.
- Keep it short. The cart line is usually narrow on mobile — “Loyalty 10% off” reads better than “VIP / Member exclusive 10% off the cart.”
- Use
[ccy]for amount-based labels. It saves you a separate rule per currency. - Don’t include the price — Dino renders the discount amount on its own column. The label is for the reason (“Spend & Save”), not the number.
- Check it in the cart. The Cart Preview shows the label with its tokens filled in.
What’s next
Section titled “What’s next”- Checkout Notice — the standalone plain-text message shown in the cart and at checkout, written in the same Messaging section
- Message Settings — the store-wide surface and visibility controls
- Upsell Messages — the spend-more nudge editor lives in the same Messaging section
- Product Page Pricing — the product-page block lives in the same Messaging section
- Testing with Cart Preview — verify the label renders the way you expect before publishing