Skip to main content

What are tokens?

Tokens are placeholders wrapped in double curly braces — like {{contact.firstName}} — that Tented swaps for real values when each email is sent. They work in the subject, preheader, and anywhere in the body, so every recipient gets a message that feels written for them. This page is the full reference. For the how-to of inserting them, see Creating Emails.

Contact tokens

Reference any standard or custom contact field by its API name:
Fallbacks. A token resolves to an empty string when a contact is missing that value. For anything a reader will see, add a default so you never ship “Hi ,” :
The easiest way to get the syntax right is the Personalize button in the editor — pick the field, choose optional formatting, set an optional default, and it inserts the token for you.

Formatting values

CRM data doesn’t always arrive in the casing you want to send. Add a case format option to any contact or campaign dynamic token to fix it at send time:
A few rules worth knowing:
  • One format per token, added anywhere after the field name. It combines with a fallback in either order — {{contact.firstName:titlecase:default=friend}} and {{contact.firstName:default=friend:titlecase}} are equivalent, and the format applies to the fallback too (a missing first name renders as “Friend”).
  • Text values only. Number, date, and true/false fields render unchanged — a format on those is simply ignored, never an error.
  • Use the keywords exactly as shown above:lowercase, :uppercase, :sentencecase, :titlecase. Anything else is flagged as an invalid token.
  • {{tented.*}} sender-profile tokens don’t take formats (or any other option).

Sender-profile tokens

These {{tented.*}} tokens are filled by Tented into the email body (HTML and plain text — not the subject line) at send time. The first three pull from your Sender Profile and are mainly used in the unsubscribe footer; the last two become personal, per-recipient links: Add a “View this email in your browser” link — typically small text above the header or in the footer — by pointing any link at {{tented.viewAsWebpageLink}}:
When a blast or triggered flow email containing the token is sent, every recipient’s copy carries their own private link to a web version of that exact email. A few things worth knowing:
  • It’s a frozen copy. The web version shows the email exactly as that recipient received it — their personalization values, their working unsubscribe link, everything captured at the moment of sending. Editing the email, changing the contact’s fields, or even deleting the email afterwards doesn’t change what the link shows.
  • Links stay live for 12 months. After that, the page politely explains that the email is no longer available. The recipient’s inbox copy is unaffected.
  • Treat the link like the email itself. Anyone who has it can view that recipient’s copy — including its live unsubscribe link — so a forwarded link is equivalent to a forwarded email.
  • It’s never rewritten by click tracking. Like the unsubscribe link, it bypasses click-tracking redirects so it keeps working on its own; clicks on it don’t appear in campaign metrics.
  • Sample sends get real links too. A sample’s view-as-webpage link opens a hosted copy of that exact sample — a handy way to share a test render — with the same 12-month lifetime.
You can also just ask the editor’s AI — “add a view-in-browser link above the header” — and it inserts the token for you.

Campaign dynamic tokens (flows only)

Inside a triggered flow, {{campaign.dynamic.*}} tokens carry values that belong to a contact’s run of the flow rather than to the contact record. Values arrive from three places: Form Submitted triggers. When a flow starts from a form submission, every answer becomes a token named after the form field, with spaces and punctuation turned into underscores (capitalization kept): a “first name” field is available to every email and webhook in that run as
Multi-choice answers arrive comma-separated. API triggers. A flow with a Tented API trigger is started by an external system calling the public API, which can pass token values along — {"tokens": {"coupon_code": "SAVE20"}} makes {{campaign.dynamic.coupon_code}} available to the run. The same goes for the dynamic_context payload when adding a contact to a flow by API. Flow steps. Earlier steps can hand values to later emails. The headline example is the Create Tent step: with Auto-approve on, it publishes a personalized page and exposes its URL as {{campaign.dynamic.tentURL}}. Link a later Send Email step’s button to that token and every contact’s email points to their own generated page — a second Create Tent step would expose {{campaign.dynamic.tentURL2}}, and so on. Full walkthrough in The Create Tent step. Send Webhook steps can likewise capture fields from the webhook’s response into tokens for later steps. Campaign dynamic tokens accept the same case formats as contact tokens — {{campaign.dynamic.couponCode:uppercase}} — but not :default=; a missing value renders blank.

Before you send

  • Preview with real data — click Preview as in the editor and pick a contact to see tokens resolved.
  • Flows validate tokens — when you activate a flow, Tented flags emails that reference invalid or inactive fields, so a typo can’t ship. Fix the flagged token and re-activate.
  • Missing values are silent — without a :default=, an absent value simply disappears, which can leave odd spacing or punctuation. Default anything visible.

Back to: Creating Emails

The full email editor workflow.