Skip to Content
📚 Documentation is in active development — pages marked TODO will fill out over the next few weeks.
Flow BuilderOverview

Flow Builder

/dashboard/flows — a canvas with steps and blocks. Each step is one node; each node holds one-or-more blocks (text, buttons, AI reply, HTTP call). Steps wire to each other via the customer’s button taps, the next-step “Continue” edge, or conditional branches.

The mental model

  • Step = one “screen” the customer interacts with
  • Block = a piece inside a step (a message, a side-effect, a wait, a condition)
  • Edge = how the runtime advances from one step to another
  • Flow run = one customer’s journey through the flow (stored as a FlowState row)

A flow has a DRAFT version (what you edit) and a PUBLISHED version (what the runtime executes). Edits don’t disrupt live flows — they keep running on the snapshot taken at publish time.

Where to start

Two execution modes

The runtime engine chains depending on what each block does:

  • Auto-advance — text / template / media blocks send their message AND immediately advance to the next step’s nextStep edge (“Continue” socket)
  • Wait-for-customer — interactive blocks (reply_buttons, wa_list, user-input, flow_wait, booking pickers) send the message and PARK the flow until the customer responds. The reply matches a wired socket → flow advances.

You’ll see both patterns mixed in the same flow.

The Flow Builder + runtime engine combined are the largest surface of the platform — expect to spend most of your reading time here.

Last updated on