A **Drip Workflow** is an automated, multi-step email journey. A contact enters through a **trigger**, then moves through **sends**, **waits** and **branches** — each contact on their own durable timeline — until they **exit**. Welcome sequences, onboarding nudges, cart abandonment, renewal countdowns and win-backs are all drip workflows.

Workflows live under **Workflows** in the SendOps dashboard.


  A workflow is a small program in [SendFlow](/workflows/flow-reference), the workflow language. The **canvas** and the **source editor** are two live views of the same definition: edit either and the other follows. Because the language has no arbitrary jumps, every workflow renders as a clean top-to-bottom flowchart, and your comments survive round-trips. See [Authoring](/workflows/authoring).


## The mental model

```
trigger  →  steps (send / wait / branch / split / repeat)  →  exits
```

- **Trigger** — how contacts enroll: entering a [Segment](/audience/segments), an engagement **event** (open, click, delivery…), a custom **activity** (`activity.<name>`), or a **date** relative to a contact attribute. An optional `where` filter gates enrollment. See [Triggers & enrollment](/workflows/triggers).
- **Steps** — run in order for each enrolled contact. Waits park the journey (for a duration, until a date, or until a condition becomes true); branches choose an arm and **rejoin** afterwards; splits assign stable random cohorts; `repeat` is the only loop and is always bounded.
- **Named exits** — flow-level conditions (e.g. `exit "converted" when attr.plan != "trial"`) checked **before every step**. The moment a contact converts, they leave the journey — no more nudges. Exit names drive the conversion breakdown on the detail page.

## Lifecycle

A workflow is **draft** until you **activate** it; only active workflows enroll and step contacts. On activation it enrolls contacts who match its trigger going forward — and, if you ask it to, **back-enrolls those who already match** in one pass ([enrollment scope](/workflows/triggers#enrollment-scope)). **Pause** freezes every journey in place (contacts resume exactly where they were when you reactivate); **archive** ends the workflow and cancels its live journeys. Editing never disturbs contacts mid-journey: each journey is pinned to the definition version it enrolled under, and active runs finish on that version.

## Sending safely

Every send re-checks consent, respects a send window in the contact's timezone, and obeys a frequency cap — an org-wide default that any workflow can override with its own threshold, window, or `off`. You can also **hold sends for review** so a person approves each one before it goes out. See [Sends, consent & approval](/workflows/sends-and-approval).

## Monitoring

The workflow detail page shows live run counts by status, a per-node **funnel** on the canvas (how many journeys reached each step), the **exit breakdown** (conversions by exit name), and a per-contact **timeline** of every step a journey took. Managed workflows also keep full version history with restore.

## Managed vs git-backed

Workflows follow the same [managed vs git-backed authoring](/audience/managed-vs-git-authoring) convention as Segments: managed workflows are edited in the dashboard with version history and restore; git-backed workflows live as `.flow` files in your connected repository (declared under the `workflows` key of `sendops.json`) and are read-only in the app. **Promote** opens a PR that moves a managed workflow into your repo; **adopt** brings a git-backed one back under dashboard editing. Workflows can be organized with [tags and folders](/reference/tags-and-folders) like any other resource.

```json title="sendops.json"
{
  "workflows": {
    "trial-onboarding": {
      "path": "flows/trial-onboarding.flow",
      "name": "Trial onboarding"
    }
  }
}
```

Next: [Authoring: canvas & source](/workflows/authoring) · [Triggers & enrollment](/workflows/triggers) · [Sends, consent & approval](/workflows/sends-and-approval) · [SendFlow reference](/workflows/flow-reference).