How a flow runs
- One trigger, at the start. It decides who enters and when (a list, a campaign action, a reply, a click, a webhook, or a website event).
- Steps run in order, following the wires you draw. A node with one output passes the contact to the next step; branching nodes send them one way or another.
- A flow can have several ends — each branch can finish on its own.
- Re-enrollment (set on the trigger) decides whether a contact can go through again: never, after they finish, or always.
- Compliance is automatic. Every send respects opt-outs, quiet hours, and frequency limits — a contact who opted out is never messaged, whatever the flow says.
Build your first flow
A simple speed-to-lead flow: text a new lead, wait, then branch on whether they replied.1
Set the trigger
Open the trigger node and choose how contacts enter — e.g. Contacts are
in a list and pick the list, or An external webhook fires to enroll leads
your site POSTs in.
2
Add the first message
Add a Send SMS node and wire
trigger → send_sms. Write the text with
{first_name} and a {link} if you have one.3
Wait
Add a Wait node (e.g. 10 minutes) after the message, to give them time to
respond.
4
Branch on the reply
Add a Condition on
replied. Wire the yes branch to an Add tag
(engaged) then End, and the no branch to a second Send SMS
nudge then End.5
Activate
Fix any validation errors the builder flags, then switch the flow to
Active. Contacts start entering per the trigger; nothing sends while it’s
a draft.
How key mechanics work
- Wait timing — a wait can be a fixed delay (after the previous step), a fixed time after the contact entered (so earlier delays can’t push it later), or a time of day in the contact’s timezone. Later steps resume when the wait elapses.
- Condition vs Switch — a Condition is a yes/no test on one attribute (replied, clicked, a field value) with two outputs. A Switch routes on a custom field’s value into several named branches plus a default — use it when there are more than two paths.
- Split runs its branches in parallel — every connected branch fires at once. Every other node passes the contact down a single path.
- Re-enrollment (set on the trigger) decides whether a contact can go through again: never (once per contact), after they finish, or always. Pick this deliberately — always can re-message the same person.
- Sub-flows — a Call sub-flow node runs another flow to completion, then returns to continue. Build shared logic (a standard opt-in, a compliance step) once and reuse it. Flows can’t loop back on themselves.
- Compliance is automatic — every messaging node honors opt-outs, quiet hours, and frequency limits, so you never have to add guard steps for them.
Triggers
entry point
How contacts enter the flow — a lead list, a campaign action (sent / replied /
clicked), a reply, a link click, an inbound webhook, or a website event from
the pixel. Every flow has exactly one.
Messaging
action
Sends a text to the contact. Personalize with tokens like
{first_name} and
{link}. Opt-outs, quiet hours, and frequency limits are enforced
automatically.action
Places an outbound call handled by a voice agent you choose — for contacts who
respond better to a call, or to escalate after texts go unanswered.
Timing
pause
Pauses the contact before the next step — a fixed delay, a set time after they
entered, or until a time of day in their timezone. The backbone of drip timing.
pause
Holds the contact until they reply, then continues — optionally only on a
specific keyword/code, with a separate timeout path if they never respond.
Branching
branch
A yes/no fork. Contacts matching the attribute (replied, clicked, a custom
field value…) take the yes branch; everyone else takes no.
branch
Routes the contact down one of several branches by a custom field’s value, with
a default branch for anything unmatched. Good for routing by state, plan, or
source.
branch
Runs every connected branch at the same time — do two things at once, e.g. tag
the contact and send a text.
gate
Only contacts matching the condition continue past it; the rest stop here. Use
it to keep a flow to a specific audience.
Data & actions
action
Writes a custom field (or adds/removes a tag) so later steps, conditions, and
segments can act on it — e.g. record
stage = nurtured mid-flow.action
Adds a tag — a lightweight label you can later segment or filter on.
action
Adds the contact to a lead list, to build an audience for a later campaign or
flow.
action
Adds the contact to a segment explicitly. Most segments update from rules; use
this when you want to place a contact in one from within the flow.
action
POSTs the contact’s data to a webhook — notify a CRM, a Slack channel, or your
own backend when a contact reaches this point.
action
Runs a reusable sub-flow, then returns to continue here. Build shared logic (a
standard opt-in, a compliance step) once and reuse it.
Finishing & layout
terminal
Finishes the flow for the contact. A flow can have several ends.
canvas aid
Organizational only. A group is a container you drag to move steps
together; a note is a sticky comment. Neither changes how contacts flow.