Flow Variables (@results): Retrieve Branching Outcomes

Flow variables let you reuse what your contact said (or what your flow evaluated) later in the same flow. The most common set is @results, created when a Split Action like Wait for Response captures and categorizes an input—so you can personalize messages, update fields, or branch reliably.

Reuse contact inputs reliably with @results

If you just need the essentials, follow this quick path:

  1. Understand what @results stores (values produced by Split Actions)
  2. Insert @results via the @ menu in message editors
  3. Use @results + Tab to browse available results
  4. Use result metadata (like value and category) when needed
  5. Validate variables in the Simulator before publishing

This keeps your flows “smart,” reduces repeated questions, and makes branching more consistent.

Step-by-Step Process

1
Understand what @results stores

@results is a collection of values produced by Split Actions (especially Wait for Response).

When a contact replies and the split evaluates that reply, the flow stores a result you can reference later (example: @results.phone).

Each result can also expose extra metadata (like the selected category).

⚙️
Technical Detail: Result variables can store up to around 640 characters. If you need longer text, store a summary or split it across multiple results.

2
Insert a variable using the @ menu
  1. In a text field (for example, a Send Message action), type @.
  2. Select the variable family you want (example: @results).
  3. Pick the exact variable you need (example: @results.phone).

[CAPTURE: Message editor showing the @ auto-complete dropdown listing variable families, including @results.]

3
Browse available @results variables using Tab
  1. In a message editor, type: @results
  2. Press Tab to show the list of results available in the current flow.
  3. Select the result you want to reuse.

[CAPTURE: Message editor where typing @results and pressing Tab reveals a list of available flow results.]

💡
Tip: Use clear result names (like phone, district, language) so your Tab list stays readable as the flow grows.

4
Use result metadata when you need more than the raw value

After inserting a result, add the metadata property you need. Common needs include:

  • The value the contact submitted
  • The category the contact matched in the split
⚙️
Technical Detail: Some results expose metadata like value (captured text) and category (matched path/category).

[CAPTURE: Message editor showing a result variable expanded to reveal metadata options like value and category.]

5
Validate your variables before publishing
  1. Test your flow in the Simulator.
  2. Confirm the result is created after the split runs.
  3. Confirm the variable renders with real content in downstream messages.
  4. If a variable is wrong, rename your results or adjust where you reference it.

[CAPTURE: Simulator showing a contact response being saved as a result, followed by a message that correctly reuses @results.*.]

⚠️
Warning: If you insert an invalid variable, the contact may receive the variable text itself (example: “@results.phon” instead of a phone number).

Common Issues & Quick Fixes

My message shows “@results.something” instead of a real value

Problem: Your message renders the variable text, not the stored result.

Fix:

  • Confirm the result exists (use @results + Tab to verify it’s available).
  • Make sure the variable is spelled exactly like the result name.
  • Ensure the contact reaches the node that creates the result before you reference it.
@results is empty even though the contact responded

Problem: A reply was received, but no result is available where you reference it.

Fix:

  • Confirm the response was collected by a Split Action like Wait for Response (not a plain message node).
  • Check that the split saved a named result (use a clear result name).
  • Test again in the Simulator and verify the action log.
My saved result is cut off or incomplete

Problem: Long input is truncated in the stored result.

Fix:

  • Keep results short and structured (IDs, codes, labels).
  • Split long user input into multiple questions/results.
  • Store a short summary if you only need a reusable snippet later.