Flows
A flow defines how an agent behaves on a call (or web/text session). Nairon has two flow types:
- Simple Flow — a guided form: an intro line, FAQ topics (optionally backed by a knowledge base), a list of questions to ask and store, and optional forward-to-human / callback / survey toggles. No branching logic, hooks, or integrations — use it for straightforward FAQ-and-intake agents. See Client: Flows.
- Graph Flow — a node-and-edge conversation graph with full control over branching, tool calls,
and (on
pro/enterpriseplans) advanced node types. The rest of this page describes the graph flow editor’s model.
Editor stages
Section titled “Editor stages”The graph flow editor is organized into stages, navigated via tabs:
| Stage | Content |
|---|---|
| Setup | Flow identity (who the agent is / its role) and the attached agent profile. |
| Before | The pre-hook tree — logic that runs before the conversation graph starts. |
| During | The conversation graph itself (nodes/edges) plus global tools. |
| After | The post-hook tree and the end-of-call survey toggle. |
| Test | Test-call launcher and simulation batch launcher/results for this flow. |
Variables
Section titled “Variables”A flow has variables — named slots that hold data for the duration of a call: values captured
from the caller, values looked up from an integration, or values computed in a hook. Alongside
user-created variables, the editor exposes a read-only set of system variables always available
to reference in node text and hook logic: call_start_time, current_time,
caller_phone_number, and invocation_type (isPhoneCall / isTextSession / isVoiceSession).
Variables are referenced in node text with {variable_name} interpolation.
Pre-hooks and post-hooks
Section titled “Pre-hooks and post-hooks”Hooks are small trees of nodes that run before the conversation graph starts (pre-hook) or after it ends (post-hook) — the place to do lookups, set variables from external data, or write results back out, without cluttering the conversation graph itself.
Each hook node has exactly one action:
- Integration lookup (pre-hook) —
crm_lookup_phone,crm_lookup_email,calendar_check_availability,calendar_get_slots, orknowledge_queryagainst a connected integration, storing the result into a variable. - Integration write (post-hook) —
crm_store_transcript,crm_store_note,calendar_schedule_meeting,calendar_cancel_booking. - Set variable — assign a literal or computed value.
- Condition — branch on an expression, with separate true/false transitions.
- Webhook — call an arbitrary HTTP endpoint (method, headers, body template, and optionally store the response into a variable).
- Code snippet (pro plans) — a short Python or JavaScript snippet with read/write access to named variables.
A pre-hook tree terminates either by continuing into another hook node or by entering the conversation graph at a chosen start node (letting different lookup outcomes route into different opening nodes). A post-hook tree terminates at the end of the call handling.
Global tools
Section titled “Global tools”Global tools are flow-level capabilities available as dynamic tools on every conversation node (except any explicitly excluded): a callback routine (offer to call the user back, backed by a calendar integration), forward + callback fallback (transfer to a human, falling back to a callback offer if unavailable — the actual SIP transfer leg is a separate telephony capability), and a global menu.
Pro-flow nodes
Section titled “Pro-flow nodes”On pro and enterprise plan projects, the graph editor unlocks four additional node types beyond
the standard conversation node set: evaluation, logic, abstract, and auth nodes
(auth nodes can guard a “critical section” of the graph). These are a capability gate on the
existing graph flow type — there’s no separate “pro flow” flow type.
Survey
Section titled “Survey”A flow can enable an end-of-call survey: a rating question and free-text feedback, asked at hangup, before post-hooks run (so a post-hook can read the resulting rating/feedback into an integration write). Survey results appear per-call in call history and are aggregated in analytics.
Versions and publishing
Section titled “Versions and publishing”Every save creates a flow version; exactly one version is active at a time. Activating a version is what a running number’s calls will use — the compiled flow is synced out to the runtime layer whenever a version is activated, typically within a few seconds.