---
title: Overview
description: Learn how to build notiflows with Notiflows
---

A notiflow defines how and when notifications are delivered to your users. Each notiflow consists of a series of steps that control the flow of notification delivery.

## Notiflow Structure

Every notiflow contains:

- **Trigger Step** — The entry point that starts the notiflow when run via API
- **Channel Steps** — Send notifications through configured channels (email, SMS, push, etc.)
- **Control Steps** — Modify flow behavior (wait, digest, throttle)
- **Condition Steps** — Route notifications down different branches based on rules
- **End Step** — Marks the completion of a notiflow path

Steps are ordered sequentially by position. Condition steps create branches, allowing different recipients to follow different paths through the flow.

## Step Types

| Step | Purpose |
|------|---------|
| [Trigger](/docs/learn/building-notiflows/trigger-step) | Entry point — receives recipients, actor, and data from the API |
| [Channel](/docs/learn/building-notiflows/channel-step) | Send a notification via a configured channel |
| [Condition](/docs/learn/building-notiflows/condition-step) | Route notifications into branches based on conditions |
| [Wait](/docs/learn/building-notiflows/wait-step) | Delay execution for a duration |
| [Digest](/docs/learn/building-notiflows/digest-step) | Group notifications together |
| [Throttle](/docs/learn/building-notiflows/throttle-step) | Limit notification frequency |
| End | Terminate a notiflow path |

## Building a Notiflow

1. **Create a notiflow** — Give it a name and description
2. **Add steps** — Drag steps onto the canvas from the toolbar
3. **Configure channels** — Select which channel to use for each channel step
4. **Design templates** — Create the notification content with dynamic variables
5. **Test** — Preview and test your notiflow before publishing
6. **Publish** — Make the notiflow live and ready to run

## Example Flows

A simple order confirmation notiflow:

```
Trigger → Email → End
```

A follow-up reminder with a delay:

```
Trigger → Email → Wait (24 hours) → Push → End
```

A flow that routes based on user attributes:

```
Trigger → Condition
              ├─ Premium users → Email + SMS → End
              └─ Free users → Email → End
```

## Versioning

Notiflows use a versioning system to safely make changes without affecting live notifications. You edit a draft version, and when ready, publish it to make it live. See [Versioning](/docs/learn/building-notiflows/versioning) for details.

## Templates

Each channel step has an associated template that defines the notification content. Templates use Liquid syntax for dynamic content. See [Templates](/docs/learn/building-notiflows/templates) for details.
