Upsell Messages
Upsell messages — the Spend-more nudge — are the dynamic prompts that tell shoppers how close they are to unlocking a better deal. They update in real time as the cart changes, and the storefront renders them on three surfaces: the mini-cart, the cart page, and the checkout.
Two places control a nudge:
- The words are set on each discount, in the Messaging section of the rule editor.
- Where it shows is set once for the whole store, on the Message Settings tab — see Message Settings.
Why upsell messages matter
Section titled “Why upsell messages matter”This is one of Dino’s strongest differentiators. Most discount plugins apply discounts silently — the customer either stumbles into the deal or misses it. The spend-more nudge actively guides shoppers toward the deal:
- Lifts average order value — shoppers add items to clear the next tier
- Reduces cart abandonment — “you’re $8 from free shipping” beats “checkout” in the conversion path
- Creates urgency without aggression — the message disappears the moment the threshold is met, so it never nags
Where to edit upsell text
Section titled “Where to edit upsell text”Scroll to the Messaging section of the rule editor (after Rewards) and find the Spend-more nudge block. It has:
- Include in spend-more nudges — starts unticked on a new discount. Tick it for this discount’s nudge to show. A blank message then uses the built-in copy.
- A row of token chips (see below).
- One Message field. The same message is used on the mini-cart, cart page and checkout.

If the discount has nothing to reach — for example, a flat % off the cart with no tiers and no spend threshold — the block shows a locked heading instead: “The spend-more nudge appears on rewards with a threshold to reach — a tier or a spend threshold.” with a link to add one. The block stays visible so you know nudges exist; the inputs appear once the discount has a threshold.
Token chips
Section titled “Token chips”Above the message field is a row of click-to-insert token chips. Click a chip to insert it at the cursor; the storefront swaps each token for the live value when it renders.
| Token | Meaning | Example output |
|---|---|---|
[amount_left] | Remaining spend to reach the next tier | Spend [amount_left] more → “Spend $15 more” |
[qty_left] | Remaining items to reach the next tier | Add [qty_left] more → “Add 2 more” |
[next_tier] | Description of the tier that unlocks next | unlock [next_tier] → “unlock 15% off” |
[discount_value] | Bare numeric value of the reward — no % or currency unit, so you add your own | for [discount_value]% off → “for 10% off” |
[discount] | Same bare number as [discount_value] (terse synonym) | for [discount]% off → “for 10% off” |
[discount_label] | Complete formatted reward label | for [discount_label] → “for 10% off” |
The bank also offers the rule-level tokens — [items], [start_date], [end_date], [end_time], [min_items], [min_spend] — when the discount has the setting each one reads. See Message Tokens.
Tokens that don’t apply to the discount’s tier kind show as locked chips. For example, [qty_left] is unavailable when the discount uses spend tiers — if you type it by hand, the warning “[qty_left] won’t resolve — your rule uses spend tiers.” appears under the field. Use [amount_left] for spend tiers and [qty_left] for quantity tiers.
Leaving the message blank
Section titled “Leaving the message blank”A blank message uses the built-in copy, which differs by surface:
| Surface | Built-in message |
|---|---|
| Mini-cart | ”Spend [amount_left] more for [discount_label]“ |
| Cart page and checkout | ”You’re [amount_left] away from [discount_label]. Add a few more items to your cart.” |
The field’s placeholder is an example of the shape, not the exact text that will print.
Where the nudge shows
Section titled “Where the nudge shows”Placement is store-wide. On the Message Settings tab, the Spend-more nudge card has an Enable spend-more nudges master switch and one slot per surface:
| Surface | Slots |
|---|---|
| Mini-cart drawer slot | Not shown · Top · Before buttons · Below total (default) |
| Cart page slot | Not shown · Top · Before checkout button · Below total (default) |
| Checkout slot | Not shown · Top · Above order review · Above payment · Above place-order (default) |
Only one nudge renders per page. See Message Settings for the rest of the tab.
Currency
Section titled “Currency”The nudge respects each shopper’s checkout currency — [amount_left] is formatted in the cart’s currency, not the merchant’s base currency. In a multi-currency store, a single nudge (“Spend [amount_left] more”) renders as “Spend €15 more” or “Spend $18 more” depending on the shopper, with no separate discount per currency. See Multi-currency compatibility.
Which discounts can nudge
Section titled “Which discounts can nudge”The nudge needs a threshold the shopper can move toward:
- Tiered discounts — Spend & Save and other tier ladders, by spend or by quantity
- Volume (bulk) pricing
- Discounts gated by a Cart subtotal at least spend threshold — for example free shipping over £50
- BOGOF and Bundle deals — any BOGO or bundle with a single set
Discounts without a threshold have nothing to nudge toward, so the block stays locked. A deal with two or more sets — Mix BOGOF, Meal deal — doesn’t nudge, because the shopper can be short in more than one set at once, so the block isn’t shown on it. The same goes for a single-set deal that also has items under Which items qualify the rule?.
On a BOGO or bundle deal the nudge counts the items still needed to complete the first set, once the cart holds at least one qualifying item, and disappears when the set is complete. On an All the same item set it counts toward the item the shopper has most of. Write the message with [qty_left] — for example “Add [qty_left] more to get [discount_label]” → “Add 2 more to get any 3 for £10.00”. Left blank, the message uses the built-in “Spend [amount_left] more…” copy, which prints the item count as a plain number (“Spend 2 more for any 3 for £10.00”). [discount_label] reads “any N for £X” for a bundle price, “X% off” or “£X off” for a percentage or amount off, “a Free Item” for free items or a free gift, and “Free Shipping” for free shipping.
A discount with a threshold still only nudges once Include in spend-more nudges is ticked, and only when the discount would otherwise fire for this shopper — the same Who / When / Where conditions apply.
Programmatic editing
Section titled “Programmatic editing”The nudge is stored on the rule as messaging.nudge: participate (the Include in spend-more nudges checkbox) and pre_trigger.message (the shared message). Placement is not a rule field — it lives in the store-wide message settings. See the REST API reference.
- Lead with the action (“Spend $X more”), not the reward. Shoppers respond to the gap, not the prize.
- Keep the message short — it is also used in the mini-cart, where anything long wraps awkwardly on mobile.
- Use the Summary box at the top of the editor as a sanity check before publishing. If the summary reads “Spend $50 → free shipping,” the nudge should read “Spend [amount_left] more for free shipping.”
- Test in Cart Preview — tick Include in spend-more nudges, fill a cart $5 under the threshold and confirm the nudge text appears as expected.
What’s next
Section titled “What’s next”- Message Settings — store-wide placement for the nudge and every other shopper message
- Cart Labels — the cart-line label 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 nudge fires at the right threshold before publishing