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

How flows start

A flow only does anything when a FlowState row exists for a conversation. There are five ways to create one.

1. Keyword rule

/dashboard/keywords → rule with action start_flow → pick the flow. Any inbound text matching the rule’s keyword starts the flow on that conversation.

Most common trigger. Examples:

  • "book" → start the Booking flow
  • "refund" → start the Refund flow + assign to billing team
  • "hi" / "hello" / "start" → start the Welcome flow

2. Automation event

/dashboard/automations → rule with action start_flow triggered on a platform event:

  • new_contact — a brand-new contact’s first message
  • tag_added — a specific tag was applied
  • booking_created — a booking was confirmed
  • booking_cancelled — a booking was cancelled (great for “sorry to see you go” follow-ups)
  • … and more

3. Manual start from the inbox

Inbox composer → Start flow button → pick from published flows. Useful for “customer typed something we don’t have a keyword for, but I want to drop them into the FAQ flow.”

4. Drip campaign step

/dashboard/drips → step with action start_flow. Drip enrols a contact, schedules steps; when a step’s deadline hits, the flow starts. The drip step is the “trigger” even though it’s actually a deferred action.

5. Public booking flow

When a customer completes a hosted booking page (/book/[agency]/[client]/[service]), the platform creates a Conversation if none existed, then optionally starts a configured post-booking flow. Use this to send “thanks for booking” follow-ups through the same flow you’d use from chat.

What prevents double-start

The runtime won’t start a second flow on a conversation that already has an ACTIVE / WAITING flow run. Either let the current run complete, or expire the existing FlowState row manually (inbox → conversation detail → expire flow state).

Last updated on