Workflows
Automate your conversation management with visual, drag-and-drop workflows that trigger on events and take action automatically.
Workflows let you automate the repetitive parts of conversation management. Instead of manually assigning conversations, adding labels, or sending follow-ups, you set up a workflow once and let it run every time a specific event happens.
Think of workflows as "if this happens, then do that" — but with the power to chain together multiple steps, add conditions, wait for the right moment, and even connect to external services.
What you can do with workflows
- Route conversations automatically — Assign incoming messages to the right team member or AI persona based on channel, message content, or labels
- Send automated messages — Welcome new conversations, follow up after a delay, or notify customers of status changes
- Organize conversations — Add or remove labels, star important conversations, and resolve completed ones
- Extract insights — Use AI to automatically extract labels, sentiment, and custom field values from messages
- Connect external services — Call external APIs to trigger actions in your other tools
The Workflows page
Navigate to Workflows in your dashboard sidebar. You'll see a table of all your workflows showing:
- Name and description
- Trigger type — The event that starts the workflow
- Status — Draft, Active, Paused, or Archived
- Versions — How many saved versions exist
- Executions — How many times the workflow has run
You can filter workflows by status, search by name, and sort by any column.
Workflow statuses
| Status | What it means |
|---|---|
| Draft | Saved but not running. You can edit freely. |
| Active | Live and triggering on matching events. |
| Paused | Temporarily stopped. Can be resumed anytime. |
| Archived | No longer in use. Preserved for reference. |
Creating a workflow
- Click Create Workflow in the top right
- Give it a name and an optional description
- Click Create Workflow
You'll land in the visual workflow editor with a blank canvas and a trigger node ready to configure.
The workflow editor
The editor is where you build your automation logic visually.
Canvas
The main area where you assemble your workflow. Drag nodes from the sidebar onto the canvas, then connect them by dragging from one node's output handle to another node's input handle.
Helpful controls:
- Auto-layout — Click the wand icon to automatically arrange your nodes neatly
- Mini map — Toggle the map icon to see an overview of larger workflows
- Snap to grid — Nodes align automatically for a clean layout
Left sidebar
Lists all the node types you can add, organized by category:
- Triggers — The events that start your workflow
- Actions — Things the workflow does (send messages, assign conversations, etc.)
- Flow Control — Decision nodes, delays, and end nodes
- Integration — Fetch API nodes for calling external services
Drag any node type from the sidebar onto the canvas.
Right sidebar
Click any node on the canvas to open its configuration panel on the right. Each node type has its own settings. Changes are saved as you configure them.
Top action bar
- Runs — View execution history and logs
- Test — Test your workflow with sample data
- Clear — Discard unsaved changes and revert to the last saved version
- Save — Create a new version without publishing
- Publish — Save and activate the workflow
Triggers
Every workflow starts with a trigger — the event that kicks things off. You can have exactly one trigger per workflow.
Available triggers
| Trigger | Fires when... |
|---|---|
| New Conversation | A brand-new conversation is created |
| New Conversation Session | A new session begins within a conversation |
| AI Agent Assigned | An AI persona is assigned to a conversation |
| Human Agent Assigned | A team member is assigned to a conversation |
| Conversation Opened | A conversation's status changes to Open |
| Conversation Resolved | A conversation is marked as Resolved |
| Conversation Starred | A conversation is starred |
| Label Added | A label is added to a conversation |
| Label Removed | A label is removed from a conversation |
Actions
Action nodes do the actual work. Add as many as you need.
Messaging
- Send Message — Send an automated message in the conversation. You can compose the text right in the node.
Conversation management
- Open Conversation — Set the conversation status to Open
- Resolve Conversation — Mark the conversation as Resolved
- Star Conversation — Star the conversation for quick access
- Unstar Conversation — Remove the star from a conversation
Labels
- Add Label — Apply one or more labels to the conversation (select from your existing labels)
- Remove Label — Remove one or more labels from the conversation
Assignment
- Assign to User — Assign the conversation to a specific team member
- Assign to AI — Assign the conversation to a specific AI persona
AI-powered
- AI Extraction — Automatically extract labels, custom fields, and sentiment from the conversation
- Custom Skill — Run a custom skill from one of your installed Skill Sets
Loop prevention
To prevent infinite loops, certain actions are automatically blocked based on your trigger. For example, a workflow triggered by "Label Added" won't let you add an "Add Label" action. The same logic applies to other matching trigger-action pairs.
Decision nodes
Decision nodes let you create conditional branches — your workflow follows one path if the conditions are met, and another if they're not.
How they work
- Add a decision node to your canvas
- Set up one or more conditions
- Choose whether all conditions must be true (AND) or any condition can be true (OR)
- Connect the True path (conditions met) and False path (conditions not met) to different nodes
Available condition fields
| Field | What you can check |
|---|---|
| Conversation Status | Whether the status is Open or Resolved |
| Conversation Labels | Whether specific labels are present or absent |
| Conversation Channel | Which channel the conversation is on (WhatsApp, Instagram, Facebook, WebChat) |
| Conversation Starred | Whether the conversation is starred |
| Message Text | The content of the triggering message (equals, contains, starts with, ends with) |
Delay nodes
Delay nodes pause the workflow for a specified amount of time before continuing to the next step.
Configuration
Set a duration and choose a time unit:
- Minutes — For quick follow-ups
- Hours — For same-day automation
- Days — For longer-term sequences
Quick presets are available: 5 min, 15 min, 30 min, 1 hour, 2 hours, 24 hours, 1 day, 3 days.
Fetch API nodes
Fetch API nodes let you call external services directly from your workflow — no code required.
Configuration
- HTTP Method — GET, POST, PUT, PATCH, or DELETE
- Request URL — The endpoint to call (must start with
http://orhttps://) - Headers — Add custom headers like Authorization or Content-Type
- Request Body — For POST, PUT, and PATCH requests, include the data to send
Use cases
- Send conversation data to a webhook
- Look up customer information from an external CRM
- Trigger actions in other tools when certain events happen
- Log events to an external monitoring service
Versioning
Every time you save a workflow, a new version is created. Only one version is active at a time — that's the one that actually runs.
- Save creates a new version without activating it
- Publish creates a new version and makes it the active one
- Previous versions are preserved so you can review your workflow's history
Testing your workflow
Before going live, test your workflow with sample data:
- Click Test in the editor toolbar
- A modal opens with pre-filled sample data based on your trigger type (conversation ID, status, labels, channel, message text, etc.)
- Edit the sample values to match your test scenario
- Click Run
- Check the Runs page to see execution details and step-by-step results
Test executions are labeled separately from production runs so you can tell them apart.
Execution history
Click Runs to see every time your workflow has executed.
Each execution record shows:
- Status — Pending, Running, Completed, Failed, or Cancelled
- Trigger data — The event data that started the execution
- Timing — When it started and completed
- Error details — If it failed, what went wrong
- Step details — Expand to see what happened at each node
Execution modes
- Production — Real executions triggered by actual events
- Test — Executions you ran manually from the editor
- Manual — Manually triggered executions
Workflow examples
Here are a few common patterns to get you started.
Auto-assign by channel
Route WhatsApp conversations to a specialist:
Trigger: New Conversation
→ Decision: Channel is WhatsApp?
→ True: Assign to User (WhatsApp team lead)
→ False: Assign to AI (General support persona)Delayed follow-up
Send a follow-up if a conversation stays open:
Trigger: New Conversation
→ Send Message ("Thanks for reaching out! We'll be with you shortly.")
→ Delay: 1 hour
→ Decision: Conversation still open?
→ True: Send Message ("Just checking in — is there anything else we can help with?")Smart labeling and escalation
Detect urgent messages and route them appropriately:
Trigger: New Conversation
→ Decision: Message contains "urgent"?
→ True: Add Label (Urgent) → Assign to User (Senior agent)
→ False: AI Extraction → Assign to AINotify an external system
Send conversation data to a webhook when resolved:
Trigger: Conversation Resolved
→ Fetch API: POST to your webhook URL with conversation detailsTips
- Start simple — Begin with a single trigger and one or two actions, then add complexity
- Test before publishing — Always run a test to make sure things work as expected
- Use descriptive names — A clear workflow name makes it easy to find and manage later
- Watch your execution history — Check the Runs page regularly to catch any failures early
- Combine with labels — Labels make great building blocks for decisions and organization
Related topics
- AI Agent — Configure the AI personas your workflows can assign to
- Labels — Create labels to use in workflow conditions and actions
- Skill Sets — Build custom skills for your workflows
- Contacts & Segments — Understand the contacts your workflows interact with