Skip to main content

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

Discovering Available Variables

Not sure which fields a node produces? Run the flow first. After a flow activation, every node displays its captured input and output with the exact field names and values. This is the fastest way to see what data is available to reference. You can then drag any variable directly from the input or output panel into a field on another node. VibeFlow creates the correct reference for you automatically, so there is no need to type it out manually. Dragging a variable from the captured input panel into a mutation node field, automatically creating the correct variable reference

Value Source Modes

When configuring a field on a node, you choose a Value Source that determines how the value is set:

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):
Query Parameters:
URL Path Parameters:
Request Headers:
HTTP Method:

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:
✅ CORRECT, Valid 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 reference any node that executed before the current node. At merge points where If-Else branches converge, you can reference data from whichever branch actually ran. Use __full_result__ to access that data.
If-Else merge pattern: When two If-Else branches merge into the same downstream node, use __full_result__ to access data from whichever branch executed. Avoid patterns like $("Branch A").field || $("Branch B").field because the non-executed branch won’t have data, so this won’t work reliably.

4. Special Reserved Labels

  • startNode is 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):

Note: Both work identically in this case. Use named references for clarity, __full_result__ for simplicity.

Complete Examples

Example 1: User Profile Update

Flow: Frontend → Query “Find User” → Mutation “Update User” Query configuration:
Mutation 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):
Second Query (Get User):
Mutation (Create Order):

Example 3: Complex Conditional with Multiple References

Flow: Frontend → Query “Count Items” → Query “Get Limits” → If-Else → [branches] → Mutation If-Else condition:
True branch Mutation:

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
Error: “Invalid JSON”
  • Ensure quotes are properly escaped: $\"Node Label\" not $"Node Label"
  • Check for missing commas or brackets in your JSON
Getting empty or null values:
  • 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., .body for webhooks)

Best Practices

  1. Use descriptive node labels: “Get User” is better than “Query 1”
  2. Be consistent: Choose named references OR __full_result__ for simple chains
  3. Test incrementally: Add one reference at a time and verify it works
  4. Document complex flows: Add notes explaining which node provides which data
  5. Escape quotes properly: Always use $\"Node Label\" in JSON configurations

Frontend Element Node

Trigger workflows with user input

Webhook Node

Trigger workflows with HTTP requests

Query Node

Fetch data to use in references

Mutation Node

Use references to create/update data