Visual builder β
The workflow builder is a canvas where every workflow is drawn as a graph of nodes connected by lines. Triggers are at the top; actions flow downward; everything is editable in place.

Open the builder β
From Workflows, click an existing workflow to edit, or the create button for a new one.
The canvas β
The main area is an infinite pan/zoom surface. You can:
- Drag the background to pan.
- Scroll to zoom.
- Click a node to select and open its config panel.
- Shift-click multiple nodes to move them together.
- Drag from one node's bottom handle to another node's top handle to connect.
The auto-layout button straightens the graph using Dagre β useful when you've been moving nodes around manually and want a tidy view.
Adding a trigger β
Every workflow needs at least one trigger.
- Click the Add trigger button (or drag a trigger node onto the canvas).
- Pick a trigger type β see Triggers for the full catalog.
- Configure the trigger's options in the side panel. Some triggers need extra config (e.g. schedule needs a cron expression, member.unit_assigned needs which unit).
For multi-trigger workflows, you can add more triggers and connect them all to a trigger junction node that fans out into the shared action sequence.
Adding an action β
- Click the Add action button or drag from the action library on the left.
- Pick the action type from the catalog. See Actions for the full list.
- Configure the action in the side panel.
Common actions to start with:
- Send message β pick a channel, recipients, template.
- Wait delay β pause for N hours / days before continuing.
- Condition β branch based on member data.
- Update member β change a custom field, assign to a group, etc.
Connecting nodes β
Drag from the bottom dot of one node to the top dot of another. The line represents "after this finishes, do that next."
A condition node has two outputs (true / false). A split node fans out to multiple branches that all run.
The merge token picker β
Anywhere a text field accepts dynamic data (message body, webhook payload, set-variable value), the merge token picker is one click away. It shows every token available based on:
- The trigger type (so
member.createdexposes{{member.first_names}}). - The action's previous steps (so a find member result exposes its tokens to later actions).
- Workflow-level variables you've defined.
Saving and versioning β
Click save to commit. Workflows have draft mode β your changes don't take effect on live runs until you publish.
Each save bumps a version number. Old versions are kept so you can see what the workflow looked like at the time of any historical run. You can't yet roll back to a prior version with one click, but you can see the diff in the activity log.
Activating β
Toggle the workflow status from Draft to Active. From now on the trigger will fire runs. Toggle back to Paused to stop further runs without deleting the definition.
WARNING
Setting a workflow active immediately means historical events from before activation don't fire backwards. If you build a "welcome new members" workflow today, today's members won't get the welcome message retroactively. Use the manual trigger if you need to back-fill.
Testing β
Before going live, use the test-run feature. Pick a sample member, click test, and watch the run execute end-to-end. Messages send to your own number, not the actual member. Useful for catching typo'd merge tokens or wrong condition logic.
Tips β
- Name your workflows specifically. Welcome new members is fine; Workflow 1 is regretted in three months.
- Use comments. Each node has an optional comment field β leave breadcrumbs for the next admin.
- Build small first. Get a 1-step workflow working before adding delays and branches.
- Use draft mode aggressively. It's much cheaper to find a bug in test than after sending 500 wrong messages.
Next steps β
- Triggers β pick what fires.
- Actions β pick what happens.
- Multi-step & delays β sequence and timing.
- Newcomer follow-up workflow β see a real workflow built from scratch.