🇪🇸 Español 🇬🇧 English 🇧🇷 Português

IVR Node: Set Variable

Stores a literal or computed value in a variable that later IVR nodes can read.

Jul 11, 2026

The Set variable node (SetVariable) stores a text value — literal or built from dynamic parts — inside the call's execution context, so a later node (Branch, Condition, or another) can make a decision based on it. It doesn't play audio or pause the call.

Requirements

  • None special; it's available inside the IVR Editor for any calling channel.

Configuration

  • Variable name: the identifier later nodes will read the value by (e.g. caller_segment).
  • Value (literal or ${...}): fixed text, or a template with dynamic variables. This node resolves a limited set of accessors: ${contact.id}, ${contact.name}, ${contact.phone}, ${contact.email}, ${caller.number}, ${locale}, ${wacid}, or any variable stored earlier with another Set variable node. It does not share the extended resolver (${channel.*}, ${now.*}, etc.) used by other nodes such as HTTP Request, Notify agent, or Track event.

Example

A Set variable node named caller_email with value ${contact.email} stores the contact's email for later use — for example, in the body of an HTTP Request or a notification. A later Condition node can check caller_email != '' to decide whether the caller has full contact data before routing them one way or another.

Tips

  • Use it to "pre-compute" a value once and reuse it across several later conditions, instead of repeating the same long expression in every node.
  • Tokens that don't match any known variable are left as literal text (e.g. ${typo_variable} stays as-is), which makes typos easy to spot in the execution trace. This also applies to accessors this specific node doesn't support, such as ${contact.tags[0]}: even though "tags" exists as a contact concept elsewhere in Omnifox, this node doesn't resolve it, and the token is left literal.

Troubleshooting

If a later node doesn't find the expected value, check that the variable name matches exactly (case-sensitive) between the Set variable node and the node reading it. If the value comes out empty or shows up as the literal ${...} text, confirm you're using one of the supported accessors (contact.id, contact.name, contact.phone, contact.email, caller.number, locale, wacid) and that the contact actually has that data for that caller.

Was this helpful?

Related articles