> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conversion.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows

> Automate message delivery, data enrichment, and record updates with configurable workflow sequences.

Workflows are automated sequences that move contacts through a series of actions based on triggers you define. They handle onboarding flows, nurture sequences, and any other process where contacts need to progress through a series of steps without manual intervention.

## 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](/product-docs/workflows/nodes/exit) or the end of the workflow.

You build and configure workflows in the [workflow editor](/product-docs/workflows/editor).

## Triggers

Every workflow starts with a trigger, which determines which contacts enter and when. Conversion offers four trigger types — [criteria-based](/product-docs/workflows/triggers/criteria-based), [event-based](/product-docs/workflows/triggers/event-based), [scheduled](/product-docs/workflows/triggers/scheduled), and [called by another workflow](/product-docs/workflows/triggers/called-by-workflow) — each with different enrollment and re-enrollment behavior. See the [Triggers](/product-docs/workflows/triggers/criteria-based) 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](/product-docs/workflows/pausing-and-resuming) 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](/product-docs/workflows/nodes/magic-enrichment) | AI-powered data enrichment that standardizes and fills in contact or company fields using a prompt you define |

### Messages

| Node                                                          | Description                                                                            |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [Send Email](/product-docs/workflows/nodes/send-email)        | Send an email to the contact                                                           |
| [Salesforce](/product-docs/workflows/nodes/salesforce)        | Take actions in Salesforce — link to campaigns, assign to lead queues, or create tasks |
| [Slack Message](/product-docs/workflows/nodes/slack-messages) | Send a notification or alert to a Slack channel                                        |
| [Email Alert](/product-docs/workflows/nodes/email-alert)      | Send an internal email notification to a team member                                   |
| [Webhook](/product-docs/workflows/nodes/webhooks)             | Send contact data to an external endpoint via HTTP                                     |

### Flows

| Node                                                                 | Description                                                                        |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Trigger Workflow](/product-docs/workflows/nodes/trigger-workflow)   | Start another workflow for the contact                                             |
| [True/False Branch](/product-docs/workflows/nodes/true-false-branch) | Split contacts into two paths based on whether a condition is true or false        |
| [If/Else Branch](/product-docs/workflows/nodes/if-else-branch)       | Route contacts down different paths by evaluating multiple conditions sequentially |
| [Field Branch](/product-docs/workflows/nodes/field-branch)           | Route contacts down different paths based on the value of a specific field         |
| [Exit](/product-docs/workflows/nodes/exit)                           | End the contact's journey through the workflow                                     |

### Delays

| Node                                                                               | Description                                                             |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [Time Delay](/product-docs/workflows/nodes/time-delay)                             | Pause the contact for a fixed duration (minutes, hours, days, or weeks) |
| [Wait Until Condition Met](/product-docs/workflows/nodes/wait-until-condition-met) | Hold the contact until a condition becomes true                         |
| [Wait For](/product-docs/workflows/nodes/wait-for)                                 | Hold the contact until a specific day and time                          |

### Data

| Node                                                                                   | Description                                                           |
| -------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [Update Audience](/product-docs/workflows/nodes/update-audience)                       | Add or remove the contact from an audience                            |
| [Update Field](/product-docs/workflows/nodes/update-field)                             | Set or clear a field value on the contact record                      |
| [Update Subscription Status](/product-docs/workflows/nodes/update-subscription-status) | Change the contact's email subscription status                        |
| [Update Campaign Member](/product-docs/workflows/nodes/update-campaign-member)         | Update a contact's campaign membership and status in your CRM         |
| [Remove Campaign Member](/product-docs/workflows/nodes/remove-campaign-member)         | Remove a contact from a CRM campaign                                  |
| [Assign Owner](/product-docs/workflows/nodes/assign-owner)                             | Assign a contact owner                                                |
| [Sync Contact](/product-docs/workflows/nodes/sync-contact)                             | Sync a contact to your connected CRM                                  |
| [Apollo Enrich](/product-docs/workflows/nodes/apollo-enrichment)                       | 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](/product-docs/liquid/overview) 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)

<Info>
  Nodes with text inputs that support dynamic values include [Magic Enrich](/product-docs/workflows/nodes/magic-enrichment), [Slack Message](/product-docs/workflows/nodes/slack-messages), [Email Alert](/product-docs/workflows/nodes/email-alert), [Salesforce](/product-docs/workflows/nodes/salesforce) (subject and description fields), and [Update Field](/product-docs/workflows/nodes/update-field).
</Info>

## 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](/product-docs/workflows/nodes/magic-enrichment) and [Apollo Enrich](/product-docs/workflows/nodes/apollo-enrichment) nodes near the beginning of your workflow so downstream nodes (emails, branches, webhooks) always operate on complete data.
