Variables Reference

Available variables and expressions for workflow node configurations

Expression Syntax

All text fields in workflow node configurations support template expressions using double curly braces:

{{variableName}}

Expressions are resolved at runtime when the workflow executes. You can reference trigger data, outputs from previous nodes, and built-in variables.


Trigger Variables

These variables are available in all nodes and contain the data from the trigger event.

Manual Trigger

VariableTypeDescription
{{trigger.type}}stringAlways "MANUAL"
{{trigger.timestamp}}stringISO 8601 timestamp of when the workflow was triggered
{{trigger.userId}}stringID of the user who triggered the workflow

Form Submitted Trigger

VariableTypeDescription
{{trigger.type}}stringAlways "FORM_SUBMITTED"
{{trigger.formId}}numberID of the form
{{trigger.formTitle}}stringTitle of the form
{{trigger.submissionId}}stringUUID of the submission
{{trigger.respondentEmail}}stringEmail of the respondent (if collected)
{{trigger.fields.<fieldRef>}}anyValue of a specific form field by its reference
{{trigger.metadata.ip}}stringIP address of the submitter
{{trigger.metadata.userAgent}}stringUser agent of the submitter
{{trigger.metadata.referrer}}stringReferrer URL
{{trigger.timestamp}}stringISO 8601 timestamp

Email Received Trigger

VariableTypeDescription
{{trigger.type}}stringAlways "EMAIL_RECEIVED"
{{trigger.from}}stringSender email address
{{trigger.fromName}}stringSender display name
{{trigger.to}}stringRecipient email address
{{trigger.subject}}stringEmail subject line
{{trigger.textBody}}stringPlain text body
{{trigger.htmlBody}}stringHTML body
{{trigger.messageId}}stringEmail message ID
{{trigger.serverId}}numberServer ID that received the email
{{trigger.streamId}}numberStream ID that received the email
{{trigger.hasAttachments}}booleanWhether the email has attachments
{{trigger.attachments}}arrayList of attachment metadata
{{trigger.timestamp}}stringISO 8601 timestamp

Booking Created Trigger

VariableTypeDescription
{{trigger.type}}stringAlways "CALENDAR_BOOKING"
{{trigger.bookingId}}stringUUID of the booking
{{trigger.eventTypeId}}numberID of the event type
{{trigger.eventTitle}}stringTitle of the event type
{{trigger.startTime}}stringISO 8601 start time
{{trigger.endTime}}stringISO 8601 end time
{{trigger.timezone}}stringIANA timezone (e.g., America/New_York)
{{trigger.attendeeName}}stringName of the attendee
{{trigger.attendeeEmail}}stringEmail of the attendee
{{trigger.attendeePhone}}stringPhone of the attendee (if provided)
{{trigger.attendeeNotes}}stringNotes from the attendee (if provided)
{{trigger.meetingUrl}}stringMeeting URL (if applicable)
{{trigger.status}}stringBooking status (PENDING, CONFIRMED)
{{trigger.timestamp}}stringISO 8601 timestamp

Node Output Variables

Each node's output is available to subsequent nodes using the pattern:

{{nodes.<nodeId>.output.<field>}}

The nodeId corresponds to the node's ID on the canvas (e.g., node_1, node_2).

Send Email Output

VariableTypeDescription
{{nodes.<id>.output.messageId}}stringThe message ID of the sent email
{{nodes.<id>.output.status}}stringSend status (QUEUED, SENT)
{{nodes.<id>.output.to}}stringRecipient email address

Send SMS Output

VariableTypeDescription
{{nodes.<id>.output.messageId}}stringThe message ID of the sent SMS
{{nodes.<id>.output.status}}stringSend status
{{nodes.<id>.output.to}}stringRecipient phone number

AI Request Output

VariableTypeDescription
{{nodes.<id>.output.response}}stringThe AI model's text response
{{nodes.<id>.output.model}}stringThe model that was used
{{nodes.<id>.output.provider}}stringThe provider (openai, anthropic, google)
{{nodes.<id>.output.usage.promptTokens}}numberPrompt tokens used
{{nodes.<id>.output.usage.completionTokens}}numberCompletion tokens used

Slack Message Output

VariableTypeDescription
{{nodes.<id>.output.messageId}}stringSlack message timestamp ID
{{nodes.<id>.output.channel}}stringChannel the message was posted to

HTTP Request Output

VariableTypeDescription
{{nodes.<id>.output.statusCode}}numberHTTP response status code
{{nodes.<id>.output.body}}anyResponse body (parsed as JSON if applicable)
{{nodes.<id>.output.headers}}objectResponse headers

Condition Output

VariableTypeDescription
{{nodes.<id>.output.result}}booleanThe evaluation result
{{nodes.<id>.output.branch}}string"true" or "false"

Transform Output

VariableTypeDescription
{{nodes.<id>.output.data}}anyThe transformed data

Delay Output

VariableTypeDescription
{{nodes.<id>.output.resumedAt}}stringISO 8601 timestamp when the delay ended

Built-in Variables

These are always available in any node:

VariableTypeDescription
{{workflow.id}}stringUUID of the workflow
{{workflow.name}}stringName of the workflow
{{workflow.version}}numberVersion number being executed
{{execution.id}}stringUUID of the current execution
{{execution.startedAt}}stringISO 8601 timestamp when execution started
{{organization.id}}numberOrganization ID
{{organization.name}}stringOrganization name

Examples

Send a welcome email when a form is submitted

Send Email node config:

  • To: {{trigger.respondentEmail}}
  • Subject: Thanks for submitting {{trigger.formTitle}}
  • Body: Hi! We received your submission on {{trigger.timestamp}}.

Forward inbound email to Slack

Slack Message node config:

  • Channel: #incoming-emails
  • Message: New email from {{trigger.from}}: {{trigger.subject}}

AI-powered auto-reply

AI Request node config:

  • Prompt: Draft a professional reply to: {{trigger.subject}}\n\nOriginal message: {{trigger.textBody}}

Send Email node config (after AI Request):

  • To: {{trigger.from}}
  • Subject: Re: {{trigger.subject}}
  • Body: {{nodes.node_2.output.response}}

Conditional notification

Condition node config:

  • Expression: {{trigger.fields.priority}} === "urgent"

Send SMS (true branch):

  • To: +1234567890
  • Message: Urgent form submission from {{trigger.respondentEmail}}