Skip to main content

How a Flow Runs

Understanding what happens when a flow executes helps you build flows that behave the way you expect. This page walks through a single run — start to finish — and how information travels along the way.

A "turn"

A turn is one run of your flow, triggered by one thing happening: a customer sends a message, a form is submitted, a webhook fires, or a schedule ticks. Each turn:

  1. Starts at the Start node.
  2. Follows the connections from node to node.
  3. Ends when it reaches a node with nothing connected after it (often a Direct Reply or an Agent).

The next message the customer sends kicks off a new turn — a fresh run of the same flow.

A single turn running through a linear flow

Node order

Flowera runs nodes in the order you connected them. Each node finishes its work, hands its result to the next node along the line, and so on. A node only runs after the node before it has completed — so a later node can safely use an earlier node's output.

This is why the variable palette only offers you outputs from nodes that run before the one you're editing: those are the only results that exist yet at that point in the turn. See Variables.

Branching

Most nodes have a single output and pass the turn straight along. But four nodes have multiple outputs, letting a turn take different paths depending on what happened. Only the branch that matches is followed — the others are skipped for that turn.

NodeBranchesHow the branch is chosen
ConditionOne branch per rule + a trailing ElseChecks your rules top to bottom and takes the first that matches (equals, contains, etc.); Else if none do
Condition AgentOne branch per scenario you defineAn AI model reads the message and picks the matching scenario
Human InputProceed / RejectWhether a person approved or rejected
FilterTrue / False (fixed)Whether the message passes the filter condition
Condition Agent has no automatic "else"

A Condition Agent produces exactly one branch per scenario you write — there is no built-in catch-all. If a message doesn't match any scenario, that turn is silently dropped. Always add an explicit "Other" or "default" scenario to catch everything else.

A flow branching into two paths at a decision node

State flowing through the run

As a turn runs, nodes can read and write flow state — a set of named values (like name or orderId) that travel through the whole flow. One node can save a value; a later node can read it back with {{$flow.state.<key>}}.

If Persist Variables is on (the default), that state also survives between turns for the same conversation — so a value saved this turn is still there next turn. See Flow state and Memory for the full story.

Other information travels with the turn too:

  • The user's message{{$question}}
  • Conversation history{{$chat_history}} (when memory is enabled)
  • Uploaded files{{$uploads}} (only the files sent this turn; see Uploads and assets)
  • Webhook payload{{$webhook.<name>.<field>}} for channel and custom-webhook triggers

Show Output in Chat

Producing a result and saying it are two different things. Most nodes carry a Show Output in Chat switch (under Additional Parameters) that decides whether that node's result is posted to the visitor as a chat message.

The switch never affects the flow itself. A node with it off still runs, still produces its output, and later nodes can still read that output by label ({{ Agent }}, {{ Retriever }}, …) — it simply doesn't speak.

Defaults differ by node, because most nodes are working steps and only a few are meant to talk:

DefaultNodes
OnAgent, LLM, Direct Reply, Tool, Human Input
OffHTTP, Retriever, Custom Function, Condition, Condition Agent, Filter, Loop, Iteration, Execute Flow

Start, Wait and Sticky Note have no such switch — they never post to the chat.

The duplicate-reply trap

The one that catches people out: an Agent followed by a Direct Reply.

The Agent's switch is on by default, so it posts its answer. The Direct Reply then sends the same text again — and the visitor sees the answer twice.

Decide which node speaks and silence the other:

  • Direct Reply speaks — turn Show Output in Chat off on the Agent. Preferred when you want steps between thinking and replying, or a fixed wrapper around the answer.
  • The Agent speaks — drop the Direct Reply node entirely. Simplest when the Agent's answer is the reply.

The same applies to an LLM node feeding a Direct Reply.

Spotting it

If a chat shows every bot answer twice, this is almost always why. Open Executions and check which nodes emitted a message.

Watching a run

Every turn is recorded. Open Executions to see the exact path a turn took, what each node received, and what it produced. This is the best place to debug a flow that isn't behaving as expected.