Variables in automation messages and templates
Personalize automation emails, chat messages, tasks, and notes with double-brace variables like {{contact.firstName}} — here is the full syntax and scope list.
Text an automation sends or writes doesn't have to be static. Any text field — an email template's subject and body, a channel message, a task title and description, a note, a notification, a webhook payload, or a field value — can contain variables that are filled in at the moment the automation fires.
Syntax
Wrap a dotted path in double curly braces:
Hi {{contact.firstName}}! Your application {{application.no}} moved forward.
When the automation runs, each marker is replaced with live data from the deal that triggered it. A variable that has no value renders as an empty string — the message still sends, nothing errors, so templates stay safe for records with missing fields.
You don't need to memorize paths: fields with variable support show an "Insert variable" picker with a search box ("Search variables…").
Available scopes
| Scope | What it resolves to | Example |
|---|---|---|
deal.* | The deal the event belongs to | {{deal.name}} |
contact.* | The deal's primary contact | {{contact.firstName}}, {{contact.email}} |
company.* | The deal's primary company | {{company.name}} |
owner.* | The deal's responsible user | {{owner.name}} |
event.* | The triggering event itself | {{event.dealId}} |
workspace.* | Your workspace | {{workspace.name}} |
application.no | The deal's application number | {{application.no}} |
custom.* | Custom fields of the deal and contact, merged | {{custom.service_type}} |
Two details worth knowing:
custom.*is a shortcut.{{custom.service_type}}merges the deal's and the contact's custom fields (the deal wins on collision) — shorter than writing{{deal.custom_data.service_type}}, though the long form works too.- Same paths as conditions. The dotted path you type into a condition field (for example
custom_data.service_type) resolves exactly the same way as a template variable — one mental model for both.
Where variables work
- "Send email" — the subject and body of the selected email template.
- "Send channel message" — the message text sent via Telegram, WhatsApp, Instagram, or Messenger.
- "Create task" — the task title and description.
- "Add note" — the note text.
- "Notify user" / "Notify team" — the notification title, body, and link.
- "Call webhook" — every string inside the JSON payload is interpolated before sending.
- "Update field" — the value being written.
A worked example
A rule on the stage "Contract" with the action "Send email" and this template body:
Hello {{contact.firstName}},
Your agreement for {{deal.name}} (case {{application.no}}) is ready.
Your manager {{owner.name}} will follow up shortly.
renders per deal with the real contact name, deal name, case number, and owner.
Tip: verify how a template renders before going live — run the automation in simulation and read the step output in the runs log on the automation board.
Was this article helpful?