How workflows work
Every workflow starts with a trigger that determines which contacts enter. Once a contact enters, they progress through the configured actions, delays, and branches in order until they reach an exit node or the end of the workflow. You build and configure workflows in the workflow editor.Triggers
Every workflow starts with a trigghich contacts enter and when. Conversion offers four trigger types — criteria-based, event-based, scheduled, and called by another workflow — each with different enrollment and re-enrollment behavior. See the Triggers section for full details.Workflow statuses
A workflow can be in one of three states:| Status | Behavior |
|---|---|
| Draft | The workflow is not active. No contacts can enter. Use this state while building and configuring your workflow. |
| Active | The workflow is live. Contacts who meet the trigger condition will enter and progress through the nodes. |
| Paused | The workflow is paused. No new contacts enter, and existing contacts freeze in place. See Pausing and Resuming Workflows for details. |
Node categories
Workflows are built from nodes, each performing a specific action on the contact as they pass through.Magic
| Node | Description |
|---|---|
| Magic Enrich | AI-powered data enrichment that standardizes and fills in contact or company fields using a prompt you define |
Messages
| Node | Description |
|---|---|
| Send Email | Send an email to the contact |
| Salesforce | Take actions in Salesforce — link to campaigns, assign to lead queues, or create tasks |
| Slack Message | Send a notification or alert to a Slack channel |
| Email Alert | Send an internal email notification to a team member |
| Webhook | Send contact data to an external endpoint via HTTP |
Flows
| Node | Description |
|---|---|
| Trigger Workflow | Start another workflow for the contact |
| True/False Branch | Split contacts into two paths based on whether a condition is true or false |
| If/Else Branch | Route contacts down different paths by evaluating multiple conditions sequentially |
| Field Branch | Route contacts down different paths based on the value of a specific field |
| Exit | End the contact’s journey through the workflow |
Delays
| Node | Description |
|---|---|
| Time Delay | Pause the contact for a fixed duration (minutes, hours, days, or weeks) |
| Wait Until Condition Met | Hold the contact until a condition becomes true |
| Wait For | Hold the contact until a specific day and time |
Data
| Node | Description |
|---|---|
| Update Audience | Add or remove the contact from an audience |
| Update Field | Set or clear a field value on the contact record |
| Update Subscription Status | Change the contact’s email subscription status |
| Update Campaign Member | Update a contact’s campaign membership and status in your CRM |
| Remove Campaign Member | Remove a contact from a CRM campaign |
| Assign Owner | Assign a contact owner |
| Sync Contact | Sync a contact to your connected CRM |
| Apollo Enrich | Pull firmographic and contact data from Apollo into Conversion fields |
Dynamic values and Liquid support
Many workflow nodes include text inputs that support dynamic values. Type/ in any text field to open the command menu with the following options:
- Add liquid — insert a Liquid expression for advanced templating logic (conditionals, filters, loops)
- Add a field — insert a contact or company field that resolves to the contact’s current value at runtime
- Add a token — insert a system token (e.g., workflow context data)
Nodes with text inputs that support dynamic values include Magic Enrich, Slack Message, Email Alert, Salesforce (subject and description fields), and Update Field.
Best practices
- Start simple. Build a minimal workflow first, then add complexity once you’ve verified the core logic works as expected.
- Test with small audiences. Before activating a workflow for your full contact base, run it against a small test audience to validate triggers, branching, and data updates.
- Use delays intentionally. Space out messages and actions to avoid overwhelming contacts and to maintain email deliverability.
- Place enrichment early. Put Magic Enrich and Apollo Enrich nodes near the beginning of your workflow so downstream nodes (emails, branches, webhooks) always operate on complete data.