> 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/triggers.md).

# Triggers

The six ways a Flow can start.

Every Flow begins with one trigger. Triggers are free - they never use credits.

## Parvenu list

Starts the Flow when new rows arrive in a Parvenu list.

| Setting    | What it does                                                                              |
| ---------- | ----------------------------------------------------------------------------------------- |
| List       | The list to watch. New contacts added to it start the Flow.                               |
| Saved view | Optional. Pick one of your Saved Views and only the contacts in that view start the Flow. |

This is the everyday trigger. Point it at a list, and anything that lands there - a CSV upload, a Chrome extension save, a Source step in another Flow - gets put through the pipeline.

With a saved view picked:

* A contact starts the Flow **once**, the first time it matches the view.
* Contacts that do not match the view do not start the Flow.
* Leave **Saved view** empty to start the Flow for every new contact on the list.

## Contact is ICP

Starts the Flow when a contact on one of your lists matches an ICP. It works with both ICP Scoring and Multi-ICP Score, whether the scoring ran from the leads table, the API or another Flow.

| Setting             | What it does                                                           |
| ------------------- | ---------------------------------------------------------------------- |
| Which ICP           | **Any ICP**, or **A specific ICP** that you pick from your saved ones. |
| Only from this list | Optional. Leave it empty to start for a match on any of your lists.    |

* A contact starts the Flow **once per ICP**, the first time it matches. Scoring the same contact again does not start it again.
* A contact that matches two ICPs can start an **Any ICP** Flow twice, once for each.
* Only matches made **after** you switch the Flow on count. Older matches are not replayed.
* Later steps can use `{{trigger.icp_name}}`, `{{trigger.icp_score}}`, `{{trigger.icp_explanation}}` and `{{trigger.list_name}}`.

{% hint style="success" %}
Use a specific-ICP trigger per market: roofers who match go to the roofing campaign, HVAC owners to the HVAC one.
{% endhint %}

## Smartlead campaign running low

Starts the Flow when a Smartlead campaign is about to run out of leads to send. Use it to keep a campaign topped up automatically.

| Setting                             | What it does                                                                                                           |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Campaigns                           | Watch all campaigns, or only the ones you name.                                                                        |
| Run low when                        | Either **days of sending left** (leads left to email ÷ daily send limit) or a plain number of **leads left to email**. |
| Threshold                           | The number that counts as "running low".                                                                               |
| Check frequency                     | How often Parvenu checks.                                                                                              |
| Time of day, days of week, timezone | When checks are allowed to happen.                                                                                     |
| Cooldown hours                      | How long to wait before the same campaign can trigger again.                                                           |
| Include completed campaigns         | On by default.                                                                                                         |

**Leads left to email** are the leads in the campaign that have not been sent their first email yet. Leads already part-way through the sequence, finished, or blocked are not counted. The trigger's panel in the Flow builder shows the current number for each campaign it watches.

**Paused and draft campaigns are never refilled.** If a campaign is **PAUSED** or **DRAFTED** in Smartlead, the trigger skips it, even when it is out of leads, and the Flow builder shows why. Parvenu keeps watching it, so once you resume the campaign in Smartlead, refills start again with no change to the Flow.

{% hint style="info" %}
Smartlead marks a campaign **COMPLETED** when it runs out of leads. Adding leads revives it, so leave **Include completed campaigns** switched on if you want automatic refills.
{% endhint %}

{% hint style="success" %}
Pair this trigger with a **Send to Smartlead** export set to `{{trigger.campaign_id}}` and the new leads go straight back into the campaign that ran dry.
{% endhint %}

## New Smartlead Reply

Starts the Flow when a prospect's reply in Smartlead is filed under one of the reply categories you pick, such as **Interested**, **Meeting Request** or **Information Request**.

| Setting                           | What it does                                                                                                                   |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Campaigns to watch                | **All campaigns**, or **Pick campaigns** to choose one or more.                                                                |
| Reply categories                  | The categories that start the Flow. The list comes from your Smartlead account, including any you added.                       |
| Start again for the same prospect | **Once ever**: a prospect starts this Flow one time only. **Every time**: each new reply in a picked category starts it again. |

**You do not set up anything in Smartlead.** When you switch the Flow on, Parvenu adds the webhook for you, and when you switch it off, Parvenu removes it. The trigger's panel in the Flow builder shows where it is listening.

* **All campaigns** uses one account-level webhook in Smartlead, so every campaign is covered, including new ones you create later. Smartlead skips an account webhook for a campaign that already has a webhook of its own, so Parvenu also adds one to those campaigns. Archived campaigns are skipped.
* **Pick campaigns** adds a webhook to each campaign you pick.
* The Flow starts when Smartlead **files the reply under a category**, usually seconds to a few minutes after the reply arrives.
* If Smartlead sends the same reply twice, the Flow still starts only once for it.
* You need your Smartlead API key saved on the Integrations page.

Later steps can use:

| Field                              | What it holds                                                    |
| ---------------------------------- | ---------------------------------------------------------------- |
| `{{trigger.reply_text}}`           | What the prospect wrote, without the earlier emails quoted below |
| `{{trigger.reply_time}}`           | When they replied                                                |
| `{{trigger.reply_subject}}`        | The subject line                                                 |
| `{{trigger.reply_category}}`       | The category, e.g. Meeting Request                               |
| `{{trigger.campaign_name}}`        | The Smartlead campaign                                           |
| `{{trigger.location}}`             | The prospect's location as saved in Smartlead                    |
| `{{trigger.custom_fields.<name>}}` | Any custom field on the Smartlead lead                           |

The prospect's name, email, company, website, LinkedIn and phone fill the usual lead fields, so every step can use them.

{% hint style="success" %}
Pair it with **Reply in Smartlead thread**. That step already answers the prospect and campaign that started the Flow, so you only write the message.
{% endhint %}

## New Instantly Reply

Starts the Flow when a prospect replies in Instantly, or when their lead status changes to one you pick, such as **Interested** or **Meeting booked**.

| Setting                           | What it does                                                                                                               |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Campaigns to watch                | **All campaigns**, or **Pick campaigns** to choose one or more.                                                            |
| Start on                          | **Any reply**, or one or more lead statuses. Your own Instantly lead labels are in the list too.                           |
| Start again for the same prospect | **Once ever**: a prospect starts this Flow one time only. **Every time**: each new reply or status change starts it again. |

**You do not set up anything in Instantly.** When you switch the Flow on, Parvenu adds the webhooks for you, and when you switch it off or archive it, Parvenu removes them. The trigger's panel in the Flow builder shows each campaign it is listening in and what it listens for.

* **All campaigns** uses one workspace webhook per thing you picked, so every campaign is covered, including new ones you create later.
* **Pick campaigns** adds the webhooks to each campaign you pick.
* **Any reply** never starts on an automatic reply (out of office and the like). To act on those, pick the **Out of office** status instead.
* A status change has no reply in it, so Parvenu adds the prospect's latest reply from Instantly when there is one.
* If Instantly sends the same event twice, the Flow still starts only once for it.
* You need an Instantly API key saved on the Integrations page. Make it with the **all:all** permission (or at least webhooks, lead labels and emails).

Later steps can use:

| Field                              | What it holds                                       |
| ---------------------------------- | --------------------------------------------------- |
| `{{trigger.reply_text}}`           | What the prospect wrote                             |
| `{{trigger.reply_time}}`           | When they replied                                   |
| `{{trigger.reply_subject}}`        | The subject line                                    |
| `{{trigger.reply_category}}`       | What started the Flow, e.g. Any reply or Interested |
| `{{trigger.campaign_name}}`        | The Instantly campaign                              |
| `{{trigger.sent_from_email}}`      | The mailbox the campaign sent from                  |
| `{{trigger.unibox_url}}`           | A link to the conversation in Instantly             |
| `{{trigger.custom_fields.<name>}}` | Any custom field on the Instantly lead              |

The prospect's name, email, company, website, LinkedIn and phone fill the usual lead fields, so every step can use them. On the Runs tab, a reply run is labelled **Instantly reply** and a status run shows the status, e.g. **Instantly: Interested**.

## Inbound webhook

Starts the Flow when an outside system POSTs leads to the Flow's webhook URL.

| Setting       | What it does                                                             |
| ------------- | ------------------------------------------------------------------------ |
| Field mapping | Optional. Maps each key in the incoming payload to a Parvenu lead field. |

Use this to connect anything that can send a web request - a form, Zapier, Make, or your own app.

## Stop paid steps after (credits per run)

Every trigger has this setting. It is **off** unless you set it.

| Setting                                 | What it does                                                                                                       |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Stop paid steps after (credits per run) | Optional. Once one run has used this many credits, no new paid step starts. Leave it at 0 (or empty) for no limit. |

When a run reaches the limit:

* No new paid step starts. A paid step that has already started finishes, so a run can end slightly above the limit.
* Leads that had not reached their next paid step yet are marked **Skipped (credit cap reached)** in the list's log column.
* The run's status says the credit limit was reached, so you can see why it stopped.

{% hint style="info" %}
This is a hard stop for one run. It is different from a Slack spend alert, which only warns you and lets the run keep going.
{% endhint %}
