# Steps, waits and A/B variants

> How to build a sequence in the EmailPal editor. Up to 10 steps, waits in minutes, hours or days, up to 6 variants per step, plus variables, fallbacks and spintax.

Source: https://emailpal.io/help/campaign-steps-and-variants

## Steps

A sequence is a list of steps. Step 1 goes out first, as soon as a lead is picked up inside your schedule. Every later step goes out a wait after the previous email.

| Item | Limit or default |
| --- | --- |
| Steps per campaign | 10 |
| Wait before a new step | 2 days |
| Wait range | 0 to 365 minutes, hours or days |
| Variants per step | 6 (labelled A to F) |

Use **Add step** to append a step. Use the up and down arrows to reorder and the bin to delete. The editor autosaves.

A step that has already gone out to at least one lead is locked with a padlock. It cannot be moved or removed, but you can still edit its wording and its wait.

## Waits

Set the wait in the **Send ... after the previous email** row. The unit can be minutes, hours or days.

Hour and minute waits are elapsed time. Day waits count calendar days in the time zone of the campaign's first schedule. Either way, an email only goes out inside a schedule window. [Schedules and time zones](/help/campaign-schedules-and-time-zones).

## Writing the email

Each variant has a subject and a body. **Start from a template** on the first email gives plain starting points. Nothing is sent until you launch.

**Insert variable** puts a variable at the cursor. The preview lets you pick a real lead and a sending mailbox to see exactly how the email renders.

### Variables

| Group | Variables |
| --- | --- |
| Lead | `{{firstName}}`, `{{lastName}}`, `{{companyName}}`, `{{jobTitle}}`, `{{personalization}}`, `{{phone}}`, `{{website}}`, `{{location}}`, `{{linkedin}}`, `{{email}}` |
| Sender | `{{sendingAccountName}}`, `{{sendingAccountFirstName}}`, `{{sendingAccountEmail}}`, `{{accountSignature}}` |
| Link | `{{unsubscribeLink}}` |

Every custom field on your leads is also available as `{{fieldname}}`. [Importing leads and verification](/help/importing-leads-and-verification).

### Fallbacks and spintax

- **Fallback.** `{{firstName | there}}` sends "there" when the lead has no first name.
- **Chained fallback.** `{{firstName | lastName | for you}}` tries each in turn.
- **Spintax.** `{{RANDOM | Hi | Hello | Hey}}` picks one at random for each email.

A variable with no fallback shows as a launch warning, because a lead missing that field would get a blank. A `{{` that is never closed, or a variable that does not exist, is a launch blocker.

### The unsubscribe link

The first email must include `{{unsubscribeLink}}`. The editor has a button that adds an unsubscribe line to the end of the body. Later emails get an "Unsubscribe" link added automatically if they have none. [Launch checklist](/help/campaign-launch-checklist).

### Plain text

In the campaign's **Settings** under **Advanced options**, **First email as plain text** is on by default, so only the first email is sent without formatting. **Send as plain text** applies to every email.

### Links

With **Track link clicks** on (the default), links are rewritten so clicks are counted. Unsubscribe links and `mailto:` links are never rewritten. Open tracking is not offered. [Campaign analytics and click tracking](/help/campaign-analytics-and-click-tracking).

## A/B variants

Use **Add variant** on a step to add another version of the same email. Each variant has its own subject and body.

- Leads are shared evenly between the enabled variants.
- **Enabled** turns a variant on or off without deleting it. At least one variant must stay enabled.
- **Pick as winner** makes that variant the only one that sends from here on. **Winner (click to clear)** goes back to testing every enabled variant.
- Per-variant sends, clicks and replies are in **Analytics** under **Steps and variants**.

Test one change at a time, such as the subject line or the opening sentence. Opens are not tracked, so judge variants on replies and clicks.

## FAQs

### Can I use my own custom fields in the email?

Yes. Imports create a custom field for every extra column in your CSV, and each one works as `{{variable}}`.

### What does a fallback do?

It is the text used when a lead has nothing in that field. Add one to every variable.

### Why can't I delete or move a step?

It has already gone out to at least one lead, so the editor locks it. You can still edit the wording and the wait.

### Can I edit a campaign that is running?

Yes. Changes apply to emails that have not been sent yet.

## Need More Help?

[Create a campaign](/help/create-a-campaign), [Launch checklist](/help/campaign-launch-checklist), [Schedules and time zones](/help/campaign-schedules-and-time-zones).
