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

# Campaign steps explained

Steps are what a campaign actually does. They run in order, top to bottom, and there are five kinds. This article covers each one, plus how branching and exit conditions work.

A campaign can hold up to 50 steps, counting steps inside branches.

***

### How steps run

Once a partner enters a campaign, Partnero works down the steps one at a time. Steps with nothing between them run immediately in sequence — a campaign that sends an email, adds a tag and removes another tag does all three at once.

The sequence pauses only at a **Wait** step. Waits are what give a campaign its shape over time, so put one wherever you want a gap.

***

### Wait

Pauses the sequence. Set an amount and a unit: **minutes**, **hours** or **days**.

The clock starts when the partner reaches the step, not when they entered the campaign. Two waits of three days in a row means six days.

Use a wait before every email after the first. Without one, a partner receives the whole sequence in the same minute.

***

### Send email

Sends one of your program's custom emails to the partner.

The dropdown lists the custom emails you have written for this program. Built-in program emails are not available here — a campaign sends your own content. You can preview or edit the selected email from the step, or click **Create new email** to write one without leaving the builder, starting either from blank or from a copy of an existing email.

The email goes out through your program's normal sending setup, so the sender name, sender address, reply-to address and branding are whatever you have configured under **Emails** in **Partner portal**. A campaign has no sender settings of its own. See [Email settings](/knowledge-base/program-emails/email-settings).

A few things can stop an email going out. In each case the campaign carries on to the next step rather than stalling:

| Situation | What happens |
| - | - |
| The partner has no email address | The step is skipped |
| The chosen email was deleted after the campaign was built | The step is skipped and the reason is logged |
| The partner has hit the daily campaign email cap | The send is deferred until the window clears, then carries on |

***

### Condition

Splits the sequence in two. A condition asks a question about the partner at the moment they reach it, then sends them down the **Yes** lane or the **No** lane. Each lane holds its own steps, and lanes can contain further conditions, nested up to three levels deep.

A condition checks one of two things:

**A metric.** Choose the metric, how it is compared and the value.

| Metric | What it counts |
| - | - |
| Signups | Referrals the partner has generated |
| Customers | Paying customers the partner has referred |
| Revenue (all time) | Total revenue the partner has generated |
| Revenue (recurring) | Recurring revenue, optionally over a recent window |

Comparisons available are *greater than or equal to*, *less than or equal to*, *less than* and *equal to*. Conditions can look downwards, which milestone entry triggers cannot — so a condition is how you ask "has this partner still not made a sale?".

**A tag.** Checks whether the partner currently has, or does not have, a given partner tag.

Steps placed after the condition, outside both lanes, run for everybody once their lane finishes. Put the shared ending there rather than duplicating it in both lanes.

#### Leaving a lane empty

The two lanes behave differently when empty, which is worth knowing before you rely on it.

* An empty **Yes** lane is fine: partners who match simply carry on to whatever follows the condition.
* An empty **No** lane **ends the campaign** for partners who do not match. They leave at that point and receive nothing further, including any steps after the condition.

So a condition with an empty No lane acts as a gate: match and continue, or stop here. If what you wanted instead was "skip the extra email but carry on", put the extra email in the Yes lane and leave the No lane empty only if stopping is genuinely what you mean. Otherwise, give the No lane at least one step.

***

### Add tag and remove tag

Adds or removes one or more partner tags. Both steps let you select several tags at once. The partner's tag history records the campaign as the source, so you can see later why a tag was applied.

Tagging from inside a campaign is useful for three things:

* Recording how far a partner got, so you can segment on it later
* Setting up the condition a later step in the same campaign checks
* Starting or stopping something else — another campaign or an automation can use **Tag is assigned to partner** as its own trigger

<Warning>
  A tag step can start another campaign whose entry trigger is **Tag is assigned to partner**. That is useful on purpose, but it also means two campaigns can chain into each other without it being obvious from either one. Check what else listens for a tag before adding it from a campaign.
</Warning>

***

### Exit conditions

Exit conditions are not steps. They sit on the **Exit** card at the bottom of the builder and are checked before *every* step, including the first.

A partner who matches leaves immediately and is recorded as having left early, not as having completed the campaign.

Each condition checks a metric or a tag, using the same options a condition step has, and you can add up to ten. With more than one, choose whether a partner leaves when **any** match or only when **all** do.

Exit conditions are optional. With none set, partners stay until the last step.

The most useful pattern is to exit on success. A sequence chasing a partner's first sale should exit on *Customers greater than or equal to 1*, so the reminders stop the moment they work rather than nagging somebody who has already done the thing.

***

### When a step cannot run

Two different things can go wrong at a step, and they have different consequences.

**Skipped.** The step could not do its job, so Partnero passes over it and the partner carries on to the next one. A send-email step is skipped when the partner has no email address or the chosen email has been deleted. A wait with no duration is skipped rather than parking somebody forever. An add-tag step applies the tags it recognises and skips only the ones it does not, so one unknown tag does not stop the rest.

**Failed.** A step errored unexpectedly. The partner does *not* move on — the enrollment stops there and is marked failed. This is deliberate: it means a temporary problem cannot quietly skip somebody's email.

Both outcomes are recorded against the step on the campaign overview, with the reason, so a column of skips or failures tells you which step to look at.

***

### Every step has to be filled in

A campaign saves in any state, so you can build it over several sittings. But it will not switch on until every step is complete, because enabling it would enrol real partners into steps that cannot run.

When you try to enable an unfinished campaign, Partnero lists what is missing:

* *Step 2: choose an email to send.*
* *Step 4: set how long to wait.*
* *Step 5 / Yes / step 1: choose at least one tag to add.*

Steps inside a branch are named by the path taken to reach them, so *Step 5 / Yes / step 1* is the first step of the Yes lane of the fifth step.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.