Create and send

Automated flows

Respond to customer behavior with timed, connected actions.

View as Markdown ↗

How flows work

A flow starts with a trigger and moves each enrolled contact through connected actions. Contacts can wait, receive email, branch based on data, or call an external webhook.

Triggers

Start flows from contact creation, customer events, list joins, form submissions, email engagement, segment entry, date attributes or manual enrollment. Entry filters narrow who qualifies. For a form welcome sequence, use form_submit: it includes existing contacts submitting again and waits for confirmation on double-opt-in forms. Flows API lists the trigger fields and current form-ID limitation.

Actions

Send emailDeliver a saved or flow-specific message.WaitPause before the next step.BranchChoose a path from contact or event data.WebhookPOST to an external URL with retries.

Flows also support time-of-day and event waits, weighted splits, per-email A/B variations, list changes, setting contact attributes, team notifications and explicit exits. See Flows API for each action's fields and branching constraints.

Activate a flow

Save and review the full graph before activation. Active flows accept new enrollments; pausing stops new enrollments while contacts already inside continue. Edits publish a new version; existing enrollments finish on the version they entered. A flow that has enrolled anyone cannot be deleted—pause it to preserve its history.

Test the path first

Use a test contact and a short delay to confirm content, conditions, and external webhook responses before activating a production flow.

Everything on this page is available from code too — triggers, waits, and branches as a list of steps. See the Flows API.