IVR node types
The IVR builder ships the node types listed below. Every call begins at the Incoming Call entry point and walks the flow you design until it hits a terminal node (Hang Up or Voicemail) or is routed out (Send to Queue, Transfer, Send to AI Agent).
Nodes are grouped in the palette into three categories. Incoming Call is auto-added to every flow and is not shown in the palette.
Entry point
- Incoming Call — The entry point of every flow. Auto-added; cannot be removed. The first node connected to its output is the first thing the caller experiences.
Actions
- Say Message — Speaks a text message via TTS in the configured language and voice.
- Play Audio — Plays a pre-recorded audio file you’ve uploaded. Use this for professional greetings and brand-critical messages.
- Gather Input — Collects keypad input (DTMF) or speech from the caller. Each digit can route to a different next node.
- Language Selection — Presents the caller with a language menu and sets the call’s language for the rest of the flow.
- API Call — Makes an HTTP request to a URL you specify, mid-flow. Use the response to drive a downstream Condition or Switch.
- Send SMS — Sends an SMS to the caller during or after the call. Requires the SMS channel to be configured.
Routing
- Send to Queue — Routes the call into one of your call queues. The caller hears the queue’s hold audio while waiting for an agent.
- Callback Queue — Offers the caller a callback instead of waiting. They hang up, keep their place, and the system calls back when an agent is free. If the caller already has a pending callback for the same tenant, Atender does not create another queued callback; the earliest pending callback remains the one that will be served. Pending callbacks also follow the flow’s callback settings when the queue closes, including its end-of-day action. By default, unanswered callbacks expire after close; configured numbers can carry one unanswered callback forward to the next open window.
- Is Open — Branches the flow based on whether you’re inside business hours per your Opening Hours configuration.
- Returning Customer — Branches based on whether the caller’s number is associated with an existing recent conversation.
- Condition — If/else branching on a variable you’ve set or an API response from earlier in the flow.
- Switch — Multi-way branching from a single variable. Like a switch statement.
- Route to Channel — Switches the call to another phone number’s voice configuration — voice mode, AI voice, and that channel’s uploaded audio. The call carries on through the same flow with the new voice, so use it for language switching or a voice-persona change mid-call.
- Transfer — Transfers the call to an external phone number, outside Atender.
- Agent Stack — Hands the call off to an AI voice agent (an Agent Stack with voice enabled). The agent runs the conversation autonomously and can escalate back to a queue if it chooses. The node is hidden from the palette unless the
ai_voice_agentfeature is enabled.
Terminals
- Hang Up — Ends the call. Use after a “Goodbye” Say Message or as a clean exit from a closed-hours branch.
- Voicemail — Records the caller’s message, drops it as a conversation in your inbox, and ends the call.
How nodes connect
Each node has a single input and one or more outputs:
- Say Message, Play Audio, Send SMS and Route to Channel have a single output — the call proceeds to the next node.
- Gather Input collecting a single digit has an output for every key 0–9 plus a timeout output. Set it to collect more than one digit and it has just default and timeout.
- Language Selection has one output per configured language, plus a timeout output.
- API Call has two outputs: Success and Error.
- Is Open has two outputs: Open and Closed.
- Returning Customer has three outputs: Same Issue, New Issue, and a third for when no earlier conversation matched.
- Condition has two outputs, labelled Yes and No unless you rename them on the node.
- Switch has one output per configured branch, plus a Default output.
- Routing nodes (Send to Queue, Callback Queue, Transfer, Agent Stack) end the flow for that call — control passes out of the IVR.
- Terminals (Hang Up, Voicemail) end the call.
Flow validation
The builder validates the flow as you edit it and reports the result in a panel at the bottom of the canvas. Save & Publish is disabled while there is at least one error; warnings are listed but do not block a publish.
Errors — these block Save & Publish:
- The flow has no Incoming Call node.
- A node is missing a setting it cannot run without: Say Message with no message, Play Audio with no audio file, Gather Input with neither a prompt nor audio, Condition with no expression, Switch with no variable, Send to Queue or Callback Queue with no queue selected, Agent Stack with no stack selected, Is Open with no opening hours rule, API Call with no URL, Transfer with no destination, Send SMS with no message or no from-number, Returning Customer with no prompt.
- A reachable Gather Input node still carries the palette’s menu template — “Press 1 for Sales, 2 for Support.” — and has no recording uploaded. The template names options your flow does not have, so it is read to every caller who reaches that node.
Warnings — worth fixing, but they do not block:
- A node is not connected to the flow at all.
- A node has an incoming connection but no outgoing one.
- The flow has more than one Incoming Call node.
- A reachable Say Message or Returning Customer node still carries its palette template text with no recording uploaded. Those templates can be genuine prompts (“Hello, thank you for calling.”), so they warn instead of blocking.
- A queue node whose label names one queue while its selection routes to another.
Each entry in the panel is clickable and jumps to the node it refers to. For a template-text finding you can either write the real prompt or upload a recording for that node — either one clears it.