Template Variables
Automation actions, email templates, and SMS templates support handlebars-style placeholders. The available variables depend on the trigger type that fires the automation.
Discovering variables for a trigger
Each trigger type publishes a list of available placeholders:
- MCP:
get_trigger_schema(trigger_type)returns sample trigger_data + every available{{variable}}token. - REST:
GET /v1/triggers/schemas/{trigger_type}
Common variable shapes
Most CRM triggers expose these variable groups:
{{contact.first_name}},{{contact.last_name}},{{contact.email}}, etc. — for contact-bound triggers{{contact.display_name}}— renders cleanly whenlast_nameis null{{contact.greeting}}— "Hi {{first_name}}" with sensible fallback{{deal.name}},{{deal.amount}},{{deal.stage_name}}, etc.{{customer.name}}for the company linked to the deal{{company.name}}for YOUR workspace's company profile (your CRM's brand){{assigned_user.first_name}},{{assigned_user.email}}
Conditional rendering
Templates support {{#if variable}}...{{/if}} and {{#unless variable}}...{{/unless}} blocks. Use these when a field may be null.
Text safety rules
- Use plain ASCII in templates. Em dashes, smart quotes, and Unicode special characters get corrupted to "?" in some email/SMS pipelines.
- Use
--instead of em dashes. Regular quotes instead of smart quotes. - Email
html_bodysupports full HTML; SMSmessage_bodyis plain text.
Per-action variable docs
Each automation action type has its own variable list:
- MCP:
list_action_types()→describe_action_type(action_type) - REST:
GET /v1/automations/action-types/{action_type}