Overview
Named References allow you to access data from any previous node in your workflow by referencing the node’s label. This powerful feature enables you to build complex multi-step workflows where nodes can pull data from multiple sources, not just the immediate previous node.Syntax Reference
| Syntax | Meaning | Example Use Case |
|---|---|---|
$"startNode" | Initial flow input from trigger node | Access original frontend form data or webhook request |
$"startNode".body.<field> | Webhook request body (POST/PUT/PATCH) | Access webhook JSON body: $"startNode".body.email |
$"startNode".queryParams.<param> | Webhook URL query parameters | Access webhook query: $"startNode".queryParams.id |
$"Node Label" | Result from node with that specific label | Reference a specific query or mutation result |
$"Node Label".fieldName | Property access on named result | Extract specific field: $"Get User".email |
__full_result__ | Previous node result (legacy) | Fallback syntax, always references immediate previous node |
Core Concepts
1. Label-Based References
Every node in your workflow has a unique label visible on the canvas. You can reference any previous node’s output by using its label:2. Start Node Reference
$"startNode" is a special reserved reference that always points to the initial input of your workflow:
- For Frontend Element triggers:
$"startNode".<field>accesses form/component data - For Webhook triggers:
$"startNode".body.<field>accesses POST/PUT/PATCH body data - For Webhook triggers:
$"startNode".queryParams.<param>accesses URL query parameters
3. Property Access
Access nested properties using dot notation:4. Backwards Compatibility
The legacy__full_result__ syntax still works and always references the immediate previous node:
Data Access by Trigger Type
Frontend Element Triggers
When your workflow starts with a Frontend Element node, use$"startNode" to access form data:
Webhook Triggers
When your workflow starts with a Webhook node, use specific properties: Request Body (POST/PUT/PATCH):Cron Triggers
Cron jobs start with empty input ({}), so $"startNode" returns an empty object. Build your workflow using queries and fixed values instead.
Common Use Cases
1. Referencing Initial Input Throughout Long Flows
Access the original user input even after multiple nodes:2. Combining Results from Multiple Nodes
Use data from different previous nodes in the same operation:3. Patch Mutation with Named Reference
Update a record using its ID from a query and data from frontend:4. HTTP Request with Multi-Source Data
Build API requests using data from multiple previous nodes:5. Conditional Logic with Named References
Use data from specific nodes in If-Else conditions:6. For Loop with Named References
Loop over data from a specific node while accessing data from other nodes:7. Expression Mode with Named References
Perform calculations and transformations using data from multiple nodes:Important Rules
1. JSON Formatting - Escape Quotes
When using named references in JSON configurations, you must escape the quotes: ❌ WRONG - Invalid JSON:2. Node Labels Must Be Unique
Each node must have a unique label in your workflow. Duplicate labels will cause unexpected behavior.3. Reference Only Previous Nodes
You can only reference nodes that appear earlier in the workflow execution path. You cannot reference nodes that come after or are in parallel branches.4. Special Reserved Labels
startNodeis reserved for the initial trigger input- Node labels are case-sensitive
- Labels are visible on the canvas UI
5. Fallback Behavior
If a named reference cannot be found, the system may fall back to__full_result__ behavior for backwards compatibility.
When to Use Named References
Use $"Node Label" When:
- ✅ You need to access initial input later in a long chain
- ✅ You want to combine data from multiple previous nodes
- ✅ You need to reference a specific node that’s not the immediate previous one
- ✅ You’re building complex multi-step flows with data from different sources
- ✅ You want explicit and readable variable references
Use __full_result__ When:
- ✅ You only need data from the immediate previous node
- ✅ You want simple, straightforward data passing
- ✅ Backwards compatibility with existing flows is important
- ✅ The default behavior is sufficient
Both Syntaxes Work Together:
You can mix both$"Node Label" and __full_result__ in the same workflow. Use whichever makes your workflow clearer and more maintainable.
Migration from full_result
Before (using full_result):
After (using named references):
__full_result__ for simplicity.
Complete Examples
Example 1: User Profile Update
Flow: Frontend → Query “Find User” → Mutation “Update User” Query configuration:Example 2: Webhook with Multi-Node Data
Flow: Webhook (POST /create-order) → Query “Get Product” → Query “Get User” → Mutation “Create Order” Webhook receives:{ "productId": "123", "userId": "456", "quantity": 2 }
First Query (Get Product):
Example 3: Complex Conditional with Multiple References
Flow: Frontend → Query “Count Items” → Query “Get Limits” → If-Else → [branches] → Mutation If-Else condition:Troubleshooting
Common Errors
Error: “Cannot read property of undefined”- Check that the node label exists and matches exactly (case-sensitive)
- Ensure the referenced node comes before the current node in the flow
- Verify the field path is correct
- Ensure quotes are properly escaped:
$\"Node Label\"not$"Node Label" - Check for missing commas or brackets in your JSON
- Verify the previous node actually returned data
- Check that the field name is spelled correctly
- Ensure you’re using the correct syntax for your trigger type (e.g.,
.bodyfor webhooks)
Best Practices
- Use descriptive node labels - “Get User” is better than “Query 1”
- Be consistent - Choose named references OR
__full_result__for simple chains - Test incrementally - Add one reference at a time and verify it works
- Document complex flows - Add notes explaining which node provides which data
- Escape quotes properly - Always use
$\"Node Label\"in JSON configurations

