Variables & Data
Variables are the connective tissue of a workflow. They carry data from the trigger through each node, allowing you to reference outputs from previous steps, transform data, and build dynamic content.
Template Syntax
Use double curly braces to reference variables anywhere in node configuration:
{{variableName}}
{{trigger.data.conversationId}}
{{nodes.enrichPerson.output.company.name}}
{{lead.customProperties.plan_type}}Dot Notation
Access nested properties with dot notation:
{{customer.firstName}} -- Direct property
{{lead.customProperties.company_size}} -- Custom property
{{trigger.body.order.line_items[0]}} -- Array accessVariable Sources
| Source | Syntax | Description |
|---|---|---|
| Trigger data | {{trigger.data.*}} | Data from the workflow trigger |
| Trigger body | {{trigger.body.*}} | Request body (webhook triggers) |
| Node output | {{nodes.<nodeId>.output.*}} | Output from a specific node |
| Workflow variables | {{variables.*}} | Variables set by Set Variable nodes |
| Execution context | {{execution.id}} | Current execution metadata |
| Workspace | {{workspace.id}} | Workspace identifier |
Set Variable Node
The set-variable node creates or updates a variable that downstream nodes can reference.
Configuration:
| Field | Description |
|---|---|
| Name | Variable name (used as {{variables.name}}) |
| Value | Static value, template expression, or JSON |
Examples:
-- Static value
Name: greeting
Value: "Hello, welcome to our support!"
-- Dynamic value from trigger
Name: customerName
Value: "{{trigger.data.customer.firstName}} {{trigger.data.customer.lastName}}"
-- JSON object
Name: enrichmentResult
Value: {
"email": "{{nodes.enrichPerson.output.email}}",
"company": "{{nodes.enrichPerson.output.company.name}}",
"score": "{{nodes.scoreLead.output.score}}"
}Data Extraction Nodes
Three specialized nodes extract commonly needed fields from platform entities:
Extract Lead Data
Extracts key fields from a CRM lead object, making them available as flat variables.
Output variables: leadName, leadEmail, leadPhone, leadStage, leadScore, leadOwner, leadTags, leadCustomProperties
Extract Customer Data
Extracts key fields from a customer object.
Output variables: customerName, customerEmail, customerPhone, customerTags, customerCustomProperties
Extract Message Data
Extracts key fields from a conversation message.
Output variables: messageText, messageType, messageSender, messageChannel, messageTimestamp, messageAttachments
Data Transformation Nodes
Parse JSON
Parses a JSON string into a structured object that can be accessed with dot notation.
Configuration:
| Field | Description |
|---|---|
| Input | The JSON string to parse |
| Output variable | Variable name for the parsed result |
Example:
Input: "{{httpResponse.body}}"
Output variable: apiData
-- Then access: {{variables.apiData.users[0].name}}Format Date
Formats a date value into a specific string format.
Configuration:
| Field | Description |
|---|---|
| Date | Input date (ISO 8601 string or timestamp) |
| Format | Output format string (e.g., YYYY-MM-DD, MMM D, YYYY) |
| Timezone | IANA timezone (e.g., America/New_York) |
Example:
Date: "{{lead.createdAt}}"
Format: "MMM D, YYYY [at] h:mm A"
Timezone: "America/New_York"
-- Output: "Mar 24, 2026 at 2:30 PM"Math Expression
Evaluates a mathematical expression and stores the result.
Configuration:
| Field | Description |
|---|---|
| Expression | Math expression (e.g., {{lead.score}} * 1.5 + 10) |
| Output variable | Variable name for the result |
Supported operators: +, -, *, /, %, (), Math.round(), Math.floor(), Math.ceil(), Math.min(), Math.max()
Merge Data
Combines multiple data objects into a single object. Useful for assembling payloads from multiple node outputs.
Configuration:
| Field | Description |
|---|---|
| Sources | List of variable paths to merge |
| Output variable | Variable name for the merged result |
| Strategy | shallow (default) or deep merge |
Transform Data
Runs a custom JavaScript-like transformation on input data.
Configuration:
| Field | Description |
|---|---|
| Input | The data to transform |
| Transform | Transformation expression |
| Output variable | Variable name for the result |
Validation Nodes
Validate Lead Data
Checks that a lead object has all required fields populated. Outputs a boolean isValid and an array of missingFields.
Validate Email Format
Checks that a string is a valid email format. Outputs isValid (boolean) and normalizedEmail (lowercase, trimmed).
Variable Scoping
- Workflow-level variables are accessible from any node in the workflow
- Loop variables (
item,index) are scoped to the loop body - Try-Catch error variables are scoped to the catch branch
- Node outputs persist for the entire execution and can be referenced by any downstream node
Tips
- Name variables descriptively. Use
customerEmailinstead ofemailto avoid ambiguity. - Use Set Variable early. Extract key values at the start of the workflow so they are easy to reference later.
- Validate before using. If a variable might be null or missing, use a Condition node to check before passing it to an action.
- Prefer extraction nodes. Use Extract Lead/Customer/Message data nodes instead of manually picking fields with dot notation — they handle null safety for you.