Skip to main content
The Variables action lets you define values that can be referenced by downstream nodes. Use it to store constants, transform data, or create intermediate values that make your workflows easier to read and maintain.

How it works

  1. Define one or more variables with names and values
  2. Values can be static or dynamic (using expressions)
  3. Reference the variables in downstream nodes using {{nodes.variables.variable_name}}

Configuration

Each variable has two properties:
PropertyDescription
NameA unique identifier for the variable (e.g., threshold, template)
ValueThe value to store—can be static text, numbers, or dynamic expressions
You can define multiple variables in a single Variables node.

Defining variables

Static values

Define constants that don’t change:
NameValue
score_threshold50
default_tier"standard"
api_base_url"https://api.example.com"

Dynamic values with expressions

Use expressions to compute values from previous nodes:
NameValue
full_name{{nodes.start.first_name}} {{nodes.start.last_name}}
domain{{nodes.enrich.website.split('//')[1]}}
is_enterprise{{nodes.enrich.employee_count > 1000}}

Referencing variables

Access variables in downstream nodes using expressions:
ExpressionReturns
{{nodes.variables.full_name}}The stored full name string
{{nodes.variables.config.retries}}3 (nested property access)
{{nodes.variables.is_enterprise}}true or false
Replace variables with the actual name of your Variables node if you’ve renamed it.

Common use cases

Simplify complex expressions

Instead of repeating complex expressions, define them once: Without Variables:
Node 1: {{nodes.start.contact.company.name.toLowerCase().replace(' ', '-')}}
Node 2: {{nodes.start.contact.company.name.toLowerCase().replace(' ', '-')}}
Node 3: {{nodes.start.contact.company.name.toLowerCase().replace(' ', '-')}}
With Variables:
Variables: slug = {{nodes.start.contact.company.name.toLowerCase().replace(' ', '-')}}
Node 1: {{nodes.variables.slug}}
Node 2: {{nodes.variables.slug}}
Node 3: {{nodes.variables.slug}}

Define configuration values

Centralize settings that might change:
NameValuePurpose
min_score40Lead qualification threshold
max_contacts5Limit contacts per company
campaign_id"camp_123"Target campaign for enrollment

Create conditional values

Compute values based on conditions:
NameValue
tier{{nodes.score.value >= 70 ? "hot" : nodes.score.value >= 40 ? "warm" : "cold"}}
priority{{nodes.enrich.funding > 10000000 ? "high" : "normal"}}

Variables vs. JavaScript

Choose the right tool for the job:
Use Variables when…Use JavaScript when…
Storing simple values or expressionsComplex logic with multiple conditions
Centralizing configurationArray transformations (map, filter, reduce)
Making workflows more readableString parsing or manipulation
Preparing data for integrationsError handling with try/catch
Start with Variables for simplicity. Move to JavaScript only when expressions become too complex or you need programming constructs like loops.

Variables vs. Memory

Both store values, but they serve different purposes:
FeatureVariablesMemory
ScopeCurrent workflow execution onlyPersists across executions
PurposeIntermediate values, configCounters, caching, cross-play state
AccessDirect via nodes.variablesRequires Get/Set actions
PersistenceGone after execution completesRemains until explicitly removed
Use Variables for values needed only during the current run. Use Memory when you need to persist data across multiple executions.

Best practices

Name variables clearly: qualified_lead_threshold is better than threshold or t. Future you will thank present you.
Place Variables nodes near the start of your workflow so values are available to all downstream nodes.
Keep variable values reasonably simple. If you’re building deeply nested objects, consider using JavaScript instead.