Variables let a text, email or note in your automation say the customer's name, your business name or a detail from an earlier step, instead of the same words for everyone. You insert them while writing the step; they're filled in with real details each time the automation runs.

Insert a variable

In any step field that accepts variables (a text message, an email subject or body, a note, a filter's Field), open the variable list next to the field. It's grouped by where the detail comes from:

  • Trigger: … (for example Trigger: When a call is missed) holds details from the event that started the automation.
  • Step 1 — Get customer, Step 2 — Send / fetch via webhook and so on hold what earlier steps produced.

Click a variable to insert it. It appears as a small tag in the text, and underneath it's written like {{customer.first_name}}. You can also type that form yourself.

Details you can always use

These work with every trigger that involves a customer:

VariableExample
{{customer.first_name}}Sarah
{{customer.last_name}}Chen
{{customer.full_name}}Sarah Chen (or the company name if there's no personal name)
{{customer.company_name}}Chen Property Group
{{customer.phone}}Customer's phone
{{customer.email}}Customer's email
{{customer.address}}Billing address on one line
{{org.name}}Your business name
{{org.phone}}Your business phone

Call triggers

VariableWhat it holds
{{call.from_number}}The caller's number
{{call.to_number}}The business number they dialed
{{call.caller_display}}The customer's name if the number matched one, otherwise the formatted number (missed calls)
{{call.voicemail_left}}Whether they had left a voicemail when the automation started (missed calls)
{{call.summary}}, {{call.call_intent}}, {{call.urgency_level}}What the AI receptionist picked up from the conversation (AI calls)

Other trigger details

Job, estimate, invoice, payment and membership triggers list more details under Trigger: … in the variable list. Before relying on one in a message to customers, check it:

  1. Point a test version of the automation at yourself (Send toCustom phone or Custom email).
  2. Make the trigger happen once.
  3. Open the run under Runs and look at what the message step actually sent. See Viewing automation runs and step timelines.

If a detail came out blank, use a different one, or add a Get step first and use its output.

Details from earlier steps

Steps that look up or create something make their results available to the steps after them. They're in the variable list under the step's name, and look like {{steps.<step>.output.<detail>}}. Always pick them from the list rather than typing them.

StepWhat later steps can use
Get customerFirst and last name, email, phone, tags, source
Get estimateStatus, total, approved total, approval date, expiry date
Get jobStatus, assigned tech, next appointment start, when the job wrapped
Create customerThe new customer's ID
Create jobThe new job's ID
Create invoice from jobThe invoice ID, number and total
Send / fetch via webhookThe response status and the reply from the other app

Example: add Get customer after a Delay, then use its first name in Send SMS, so a customer who corrected their name in the meantime is greeted correctly.

Inbound webhook data

With the When an inbound webhook fires trigger, the fields the other app sends are the variables. If it sends {"first_name": "Sarah", "source": "Facebook"}, use {{first_name}} and {{source}}. Nested fields use dots, such as {{address.street}}. See Triggering automations from an inbound webhook.

When a detail is missing

A variable with nothing to fill in (a customer with no email, a field the other app didn't send) comes out blank; the message still sends. Write messages that still read well if a detail is empty, or add a Filter with is not empty before the send step.

Not available

  • "If this, say that" inside one message. Use Paths with a different message in each branch. See Filters, paths, and delays.
  • Your own custom variable names. Read the detail from a record with a Get step instead.

Built-in messages have their own list of variables when you change their wording. See Changing the wording of a built-in message.