Text variables

Drop these tags into any text element, button label, peek bubble or consent block; they render live, per visitor. All values are safely escaped; a variable can never inject markup into your popup.

Reward & game

TagRenders
{{code}}The visitor's issued discount code (shows "…" until it's issued).
{{reward}}The reward's display name: "10% off", or your title override.
{{expiry}}A live countdown to the code's expiry: "2d 3h", "45m", then "expired".
{{prize}}The prize label the visitor just won in a game.

Name & location

TagRenders
{{first_name}} / {{name}}The visitor's first name: what they typed into the form wins, otherwise the logged-in Shopify customer's name; blank for anonymous visitors (pair with a | default: filter).
{{city}} · {{region}} · {{country}}The visitor's location, from network-level geo: "Free local pickup in Austin this week."

Quiz & personalization

TagRenders
{{answer:KEY}}The visitor's answer to the survey question whose property name is KEY (multi-picks join with commas). "Perfect. Our best sellers for gifting are waiting."
{{outcome}} · {{runner_up}}A quiz's winning result name, and the runner-up.
{{score}}The winning result's points tally (animates a count-up).
Flow variablesAnything set with the Set variable(s) action or Janus.vars.set().

Cart

TagRenders
{{cart_total}}The visitor's cart total, formatted and ready to show: "$42.50".
{{cart_value}}The same figure as a raw number, for arithmetic with filters (below).

Countdowns & dates

TagRenders
{{countdown:2026-12-01T00:00:00Z}}A ticking countdown to a fixed timestamp: a launch, a sale end. Use {{expiry}} for per-visitor code urgency, {{countdown:…}} for a shared deadline, or the styled Countdown element when you want it as its own block.
{{date}} · {{date+30}} · {{date+6 weeks}} · {{date+3 months}}Real calendar dates computed from today: "Results by {{date+30}}." Days are the default unit.
TagRenders
{{tos_link}} / {{privacy_link}}Clickable links to the ToS / privacy URLs from your campaign's legal settings. These are the only tags that render as links; everything else stays plain text by design.
{{sms_consent}} / {{email_consent}}Your SMS or email consent disclosure block, managed once on the popup root.

Filters

Any tag can be piped through filters, Liquid-style: {{ name | filter | filter: arg }}. The common ones:

FilterDoes
| default: "friend"Falls back when the value is empty: {{ first_name | default: "friend" }}.
| plus: 15Arithmetic on numbers like cart_value: "just $X more to free shipping".
| moneyFormats a number as a price.

Game copy tokens

One game interpolates its own progress tokens inside its copy fields:

GameTokens
Pick a card{n} flips made · {total} total prizes · {left} flips remaining. "You won {n} of {total} gifts".
TipVariables shine on the peek bubble ("Your {{reward}} is waiting…") and the offer step ("{{code}} expires in {{expiry}}"). Copy that knows what the visitor won converts like copy that was written for them, because it was.