Template Tokens — Names, Dates, and CRM Variables
How to use {{contact.greeting}}, {{today}}, {{now}}, and other template tokens across automations, emails, PDFs, and more.
Template tokens let you inject live CRM data into your messages automatically. Type a token inside double curly braces — {{contact.greeting}} — and TrustPager replaces it with the real value at send time.
Where Tokens Work
All tokens in this guide work across every template surface in TrustPager:
- Automation email and SMS actions
- Manually composed emails (via https://app.trustpager.com/inbox)
- PDF document templates
- Task descriptions
- Outgoing webhook payloads that include rendered content
- Native integration actions (Xero, Slack, and others)
When you're inside a config field that supports tokens, a variable picker appears — click it to browse and insert the exact token path without having to type it manually.
Name Tokens
Three name tokens cover every scenario:
{{contact.display_name}}— full name, trimmed. Renders "Sarah Chen" if they have a surname, or "Sarah" if they don't. No trailing space, no blank. Use this in body copy where you want the full name.{{contact.greeting}}— first name only, always. "Hi {{contact.greeting}}," always renders as "Hi Sarah," regardless of whether a surname exists. Use this for openers and salutations.{{contact.first_name}}— the raw first name field. Identical to{{contact.greeting}}for most purposes, but{{contact.greeting}}is preferred for salutations as the name makes the intent explicit.
What about {{contact.full_name}}? The old token still works and falls back cleanly for first-name-only contacts — if there's no surname it renders just the first name instead of leaving a trailing space. That said, {{contact.display_name}} is recommended for new templates. The name makes the fallback behaviour explicit.
First-Name-Only Contacts
Some contacts only have a first name — think "Cher", or a lead who signed up with just their given name. When you create or edit a contact at https://app.trustpager.com/crm/contacts, leave the Last name field blank. TrustPager stores a null surname — no placeholder, no blank space. The name tokens above handle this cleanly. You can also clear a surname via the API: pass "last_name": null to update_contact.
Date and Time Tokens
Two tokens let you stamp the current date or timestamp at the moment the automation fires:
{{today}}
The current date in your workspace's configured timezone, formatted as YYYY-MM-DD — for example, 2026-04-22.
Use {{today}} for date-only fields such as relationship_started_at or actual_close_date. The value is a clean date string in the workspace timezone, so if you're in Australia/Sydney and it's 8am AEST, you get today's Australian date — not UTC's previous day.
Example: a stage automation on your "Lead Received" stage sets relationship_started_at to {{today}}, so every new lead gets an accurate relationship start date stamped automatically.
{{now}}
The current date and time as a UTC ISO 8601 timestamp — for example, 2026-04-22T08:15:30Z.
Use {{now}} for full timestamp fields (Postgres timestamptz columns). Postgres handles the timezone conversion automatically — the value is stored in UTC and displayed in local time wherever it appears. Do not use {{now}} for date-only fields; use {{today}} instead.
CRM Variable Tokens
Beyond name and date, you can reference almost any field on the contact, opportunity, or account. Common examples:
{{contact.email}}— the contact's primary email address{{contact.phone}}— the contact's phone number{{deal.name}}— the opportunity name{{deal.value}}— the opportunity value{{deal.stage}}— the current pipeline stage name{{account.name}}— the account (customer) name{{account.tax_number}}— the account's tax number (useful in invoicing templates)
Custom Field Tokens
Custom fields are referenced via their field ID in the metadata object:
{{contact.metadata.field_id}}— a custom field on the contact{{deal.metadata.field_id}}— a custom field on the opportunity
To find the exact field ID and token path, open any config field that supports tokens and use the variable picker — it lists every available token with the correct path already formatted.
Tip: Birthday messages use a separate single-brace syntax ({first_name}) and are not affected by the tokens in this guide — they already handle null surnames cleanly via their own renderer.