AltScore
Builder Rules

Structural Rules

Structural rules make sure a conversational flow has a shape the engine can run: one way in, every node reachable, no path that spins forever. The editor checks them on every save and when you press Validate, and paints the offending nodes on the canvas.

Not every finding has the same weight. A rule either blocks or warns:

  • Blocks: the flow saves as a draft, but it cannot be published until you fix it. The Publish action refuses with the first message and a count of the rest.
  • Warns: the flow publishes anyway. The warning stays visible in the validation panel so you can decide.

The complete list of what blocks and what only warns, including the rules that live in node configuration rather than in the graph, is in Publish Gate. This page covers the rules about the shape of the graph.

Start Node Requirements

Every flow must have exactly one Start node. It is the entry point of every conversation.

Rule 1: Exactly One Start Node (blocks)

A flow cannot have zero Start nodes or several. With none, the conversation has nowhere to begin. With several, the order in which they were saved silently decides which one runs, so the editor refuses both cases.

Valid:

  • One Start node in the flow

Invalid:

  • No Start node
  • More than one Start node

Rule 2: Start Must Have an Outgoing Connection (blocks)

The Start node must connect to another node. A Start node with no outgoing connection is a flow that receives the first message and does nothing with it.

Incoming Connection Requirements

General Rule (blocks)

Every node must have at least one incoming connection. A node nobody points at is never executed, and the editor treats it as a mistake rather than as a spare part.

Exceptions

Three node types are allowed to have no incoming connection, exactly as the editor shows them in the node panel:

NodeReason
StartEntry point of the flow; it only has an output
KeywordsListens for keywords at any moment of the conversation, outside the graph
NotesSticky notes for the team; they never reach the engine

Reachability (warns)

Having an incoming connection is not the same as being reachable. A node whose only incoming connection comes from another orphan node, or from a closed group of nodes the Start never reaches, passes the incoming-connection rule but is never executed. The editor reports it as a warning: "Node is not reachable from the flow start". It does not block publishing, because drafts often carry a branch that is being built.

Interactive Messages in a Row

Two Interactive Message nodes may be connected directly. The engine sends the first, waits for the customer to pick an option, and only then sends the second, so consecutive menus are a valid pattern. WhatsApp does not restrict interactive messages sent one after another.

Whether a plain Message between them reads better is a question of tone, not of validity: a short acknowledgement ("Perfect, one more thing") often helps, but the editor no longer demands it.

Interactive Message (ask) -> Interactive Message (next question)      allowed
Interactive Message (ask) -> Message (acknowledge) -> Interactive Message   also fine

Cycles

Loops are allowed. A flow that asks again after an invalid answer, or that returns to a menu, is a cycle and it is fine, as long as somewhere in the loop there is a node that stops and waits for the customer.

Rule: No Cycle Without a Waiting Node (blocks)

A cycle made only of nodes that run on their own (Message, Set Variable, Conditional, Formula, HTTP Request and the like) never stops: the engine would run it until it is killed. The editor marks every node in such a cycle with "Node is part of a cycle with no node waiting for user input; the flow will loop indefinitely" and refuses to publish.

Any node that waits for the customer breaks the cycle for this rule: Ask Question, Ask Email, Ask Phone, Ask Date, Ask File, Ask Location, Interactive Message, Keywords, Login, OTP Verification, Opt-In, Forms, Human Takeover, AI Router, AI Collector and the verification nodes, among others.

Flow Size

Rule: At Most 500 Nodes and 2000 Connections (blocks)

Publishing a flow with more than 500 nodes or more than 2000 connections is refused before any other check runs. Split the flow and chain the parts with Jump To nodes.

Validation Messages

These are the messages the editor shows, as they appear on screen. The node name in braces is replaced by the type of the node involved, for example "Message must have an incoming connection".

MessageCauseEffectFix
"Conversational flow must have at least one Start node"No Start node in the flowBlocksAdd a Start node
"Conversational flow must have only one Start node"More than one Start nodeBlocksRemove the extra Start nodes
"Start node must have an outgoing connection"Start is not connectedBlocksConnect Start to the first node
"{node type} must have an incoming connection"Nothing points at the nodeBlocksConnect the node or delete it
"Node is part of a cycle with no node waiting for user input; the flow will loop indefinitely"A loop with no node that waits for the customerBlocksAdd a node that waits for the customer inside the loop, or break the loop
"Node is not reachable from the flow start"The node has connections but the Start never reaches itWarnsConnect it to the main path or delete it
"The flow exceeds the validation limit (500 nodes / 2000 edges)"The flow is too big to validateBlocksSplit it into several flows joined with Jump To