> For the complete documentation index, see [llms.txt](https://support.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.parvenu.io/features/flows.md).

# Flows

Build a repeatable pipeline that finds, enriches, filters and exports leads for you - on demand, on a trigger, or on a schedule.

A **Flow** is a pipeline you build once and re-use. It starts with a trigger, runs a series of steps over every lead, and finishes by sending the results somewhere - a campaign, your CRM, a Google Sheet, or another Parvenu list.

Flows replace the old Rules Engine. Anything you could do with an automation you can do in a Flow, plus sourcing new leads, AI steps, branching, waiting and looping.

## How a Flow is built

Every Flow has the same shape:

**Trigger → Steps → Export**

| Part                       | What it does                                                                                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Trigger**                | Decides when the Flow runs. A new lead landing in a list, a contact matching one of your ICPs, a Smartlead campaign running low, or an inbound webhook. |
| **Sources**                | Bring new leads into the list - Lead Search, LinkedIn, Sales Navigator, Maps, Jobs, domains.                                                            |
| **Enrichment**             | Add data to each lead - emails, phone numbers, LinkedIn profile, company details.                                                                       |
| **AI**                     | Score, research, personalise, or read the company website.                                                                                              |
| **Conditions and control** | Branch on a field, repeat earlier steps, or pause a lead.                                                                                               |
| **Transform**              | Tidy names and move values between fields.                                                                                                              |
| **Export**                 | Send the finished lead to a campaign, CRM, Sheet, or another list.                                                                                      |
| **Notify**                 | Post to Slack while the run happens or when it finishes.                                                                                                |

### Run steps vs. lead steps

Two kinds of step behave differently, and it helps to know which is which:

* **Run steps** happen once per run. All the Sources are run steps - they go out, find leads, and add them to the list.
* **Lead steps** happen once per lead. Every enrichment, AI step, condition and export is a lead step - it runs against each row in turn.

## Build a Flow

1. Open [**Flows**](https://app.parvenu.io/app/flows) in Parvenu.
2. Click **+** to start a blank Flow, or pick one of the ready-made templates.
3. In the **Editor** tab, choose a **trigger**, then add your **steps** in the order you want them to run.
4. Click **Check** to catch anything that is missing or set up wrong.
5. Click **Run** to run it now - you see the credit estimate before anything starts. Or switch the Flow to **Live** so its trigger runs it for you, and use the **Schedules** tab to run it on a timetable.

{% hint style="warning" %}
Order matters. A step can only use data that an earlier step has already produced - **Mobile Phone** needs a LinkedIn URL, and **Send to Smartlead** needs an email address. If a lead is missing what a step needs, that lead fails at that step, and the run shows you why.
{% endhint %}

## Using data from earlier steps

Every step writes what it finds onto the lead, and any later step can use it.

In any text setting (a prompt, a Slack message, a search's location), click the **{ }** button next to the box and pick what you want, like **First Name** or **Company**. It shows as a colored tag and is filled in for each lead. A dropdown or number on a search step has a small **{ }** switch next to its name that lets it take a value from the run instead.

The list only shows what earlier steps can give you. Some common ones:

| In the Variables list                 | Comes from                                          |
| ------------------------------------- | --------------------------------------------------- |
| Full Name, First Name, Title, Company | Every lead                                          |
| Email, Linkedin, Website              | Every lead                                          |
| About, City                           | **LinkedIn Profile Lookup** or **Person + Company** |
| Company Name, Company Industry        | Any company step                                    |
| Linkedin Posts                        | **Recent LinkedIn Posts**                           |
| ICP Score, ICP Match, ICP Name        | **ICP Scoring** or **Multi-ICP Score**              |
| Personalize with AI                   | **Personalize with AI**                             |
| Research with AI                      | **Research with AI**                                |
| Scrape Website with AI                | **Scrape Website with AI**                          |
| Job titles to search, Location        | **Research the prospect**                           |
| Title, Location (under Job)           | A job search                                        |

{% hint style="info" %}
To see every field a lead has, open a run, click the lead, and expand **Lead data (all fields)** at the bottom.
{% endhint %}

## Credits and estimates

Each step shows its credit cost in the Flow builder, and clicking **Run** shows an **estimate** - the worst-case cost for the number of leads in the list - before anything starts. Most steps only charge when they find something, so the real cost is usually lower than the estimate.

Sourcing, enrichment and AI steps use credits. Triggers, conditions, control steps, transforms, exports and Slack notifications do not. See [Credits](/settings/billing/credits.md) for current prices.

## Watch a run

Open the **Runs** tab on any Flow to see every run, newest first. Click a run to open it:

* The run's status, how many leads it has handled, and the credits used so far
* Every lead, with a status filter - a failed lead shows the reason underneath its name
* A step-by-step feed for the whole run, live while it is going
* Click a lead to see only its steps, and all of its data
* **Download CSV** for the results
* **Cancel** while the run is still going
* **Retry failed** to re-run just the leads that failed

## Steps reference

* [Triggers](/features/flows/triggers.md)
* [Sources](/features/flows/sources.md)
* [Enrichment and AI Steps](/features/flows/enrichment-and-ai-steps.md)
* [Conditions, Control and Transforms](/features/flows/conditions-control-and-transforms.md)
* [Exports and Notifications](/features/flows/exports-and-notifications.md)
* [Flow Examples](/features/flows/flow-examples.md)
