Builder

Flow builder

A tour of the visual editor: the canvas, the node palette, variables, validation, and the path from draft to published.

Updated Jul 2, 2026

The canvas

The builder is a visual canvas: nodes are steps, edges are the paths between them. Drag a node in from the palette (or click one to drop it at center), then connect steps by dragging from one node’s handle to the next. Branching nodes wear their logic on their handles — a Condition offers Yes and No, Wait for Response offers Reply and No Reply, Messaging Window offers Open and Closed — so the map reads like the conversation it produces.

The working comforts are all there: undo and redo (Cmd/Ctrl+Z, Shift+Z), zoom controls with fit-view and auto-arrange, a minimap for big flows, and a search box in the palette. Saving is deliberate rather than automatic — hit Save or Cmd/Ctrl+S, and the editor warns you before leaving unsaved changes behind.

The node palette

Twenty-five node types, grouped by what they do. A quick orientation:

  • Messaging — Send Message, Ask for Input, Send Email, Send Asset: everything that reaches the contact.
  • Logic — Condition and Random Split: branch on data, or A/B test paths.
  • Data — update tags, custom fields, and scores on the contact record.
  • Timing — Wait, Schedule, Wait for Response, and Messaging Window: control when things happen.
  • Analytics — Track Event and Goal: mark the moments you want to measure.
  • Commerce — Payment Gate and Product Delivery: checkout and fulfillment inside the conversation.
  • Engagement — Raffle Entry and Intake Form: giveaways and structured capture.
  • Integrations — Webhook: send data to external services.
  • Actions — Notify Team: put a human in the loop by inbox or email.
  • Flow control — Start, End, Go to Flow, Go to Node: entry, exit, and handoffs.
  • Annotations — Note: leave documentation on the canvas for future you.

The palette is plan-aware

Nodes that belong to a module your plan doesn’t include appear with a padlock rather than disappearing — you can always see the full vocabulary. Email, Intake Form, Payment Gate, Product Delivery, Goal, and Webhook unlock from the Growth plan; Track Event joins on Pro. Clicking a locked node says exactly that and points at billing.

Personalize with variables

Anywhere you write message text, the variable picker inserts data in double curly braces: {{username}} for their handle, {{trigger.keyword}} for the word that fired the trigger, {{input.email}} for an answer you captured, {{form.budget}} for a form field. Later nodes can branch on the same values, so a flow can greet, qualify, and route on what the contact actually said.

One deliberate exception: button links are sent to Instagram exactly as written and can’t contain variables — the builder blocks it at publish and suggests the fix (put the personalized link in the message text instead).

Validation has your back

The builder validates continuously and sorts findings into two piles. Blockers are things that would break the conversation — a missing Start node, a Condition with only one branch connected, a loop with no exit, a message over Instagram’s limits, an email question without the required consent acknowledgement. Warnings flag judgment calls — a node not reachable from Start, a delay that outlasts the messaging window — and never stop you.

Drafts always save, whatever the count; the toolbar just keeps score. Publishing is the gate: it stays disabled until the blockers hit zero, and each blocker names the node and rule so the fix is a click away.

From draft to live

The toolbar carries the whole shipping path: Preview simulates the conversation on a phone, Test runs the saved draft over real DMs with a one-time code, and Publish snapshots the flow into an immutable version that live triggers execute. Keep editing after publishing — the live version runs untouched until you publish again, and version history keeps every snapshot with notes.