Skip to content

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/enterprise plans) advanced node types. The rest of this page describes the graph flow editor’s model.

The graph flow editor is organized into stages, navigated via tabs:

StageContent
SetupFlow identity (who the agent is / its role) and the attached agent profile.
BeforeThe pre-hook tree — logic that runs before the conversation graph starts.
DuringThe conversation graph itself (nodes/edges) plus global tools.
AfterThe post-hook tree and the end-of-call survey toggle.
TestTest-call launcher and simulation batch launcher/results for this flow.

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.

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, or knowledge_query against 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 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.

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.

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.

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.