# Cold email sequences explained

> What a cold email sequence is, how many steps to use, how long to wait, when to thread follow-ups as replies, and how reply branches and stop on reply work.

Source: https://docs.ayinbox.com/learn/cold-email-sequences/

A cold email sequence is the ordered set of emails a contact receives in one campaign, with a wait before each follow-up. It stops when they reply. In AY Inbox each step waits its own number of days after the previous one, a follow-up with no new subject is sent as a reply in the same thread, and stop on reply ends the sequence when the person answers.

A **step** is one email (or one action) in the sequence. A **follow-up** is any email step after the first. The **wait** is how many days a step holds after the contact's previous step, counted separately for every contact.

Sequence versus campaign [#sequence-versus-campaign]

The two words are often used interchangeably, but they hold different things:

|                   | Campaign                                                 | Sequence                                               |
| ----------------- | -------------------------------------------------------- | ------------------------------------------------------ |
| What it holds     | Leads, sender mailboxes, schedule, daily limit, tracking | The steps each lead receives, their waits and branches |
| Where you edit it | The campaign's **Settings** and **Schedule**             | The campaign's **Steps** tab, a visual canvas          |
| Answers           | Who, from where, when and how much                       | What and in which order                                |

Each campaign has its own sequence. To send different sequences to different audiences, use separate campaigns, or a [switch step or branch](/guides/sequences/#branching) inside one sequence.

How many steps and how far apart [#how-many-steps-and-how-far-apart]

The new-campaign flow suggests three emails: **Add the usual two follow-ups** adds one 3 days after the first email and another 7 days after it. Through the API, a follow-up's `wait_after` defaults to `3` days and the first email's to `0`.

| Limit                        | Value                                              |
| ---------------------------- | -------------------------------------------------- |
| Steps per sequence           | Up to `50`                                         |
| Wait before a step           | `0` to `60` days                                   |
| A/B variants per step        | Up to `5`, on top of the Original                  |
| Delay before the first email | Optional, up to `90` days after the contact enters |

A short, spaced sequence is easier to keep relevant than a long one. Each extra step is one more email to someone who has not answered, and a lead who never replies is still receiving mail from your mailbox. Spacing also keeps a mailbox's sending pattern natural; see [how many cold emails per day](/learn/cold-email-sending-limits/).

The [Advisor](/guides/advisor/) watches the shape of your campaigns: it flags a campaign that sends one email and stops, suggesting two or three short follow-ups 2 to 7 days apart, and flags follow-up spacing outside 2 to 14 days.

Waits are per contact. A contact waiting three days does not hold up anyone else: other contacts' first emails and due follow-ups keep going. A step whose wait ends outside the campaign's sending window waits for the next window; it is never sent late at night to catch up.

Same thread or new thread [#same-thread-or-new-thread]

Each email step has **Reply in thread** (`thread_reply` in the API), on by default.

* **On:** the follow-up goes out as a reply on the conversation the contact already has, with `In-Reply-To` and `References` headers pointing at the last message they received. It carries the subject the opening email was actually sent with, so it sits under the first email in their inbox.
* **Off:** the step writes its own subject and opens a new conversation. Every threading step after it replies on that new conversation.

Through the API, a step with no `subject`, or the same subject as the conversation so far, defaults to `thread_reply: true`; a step with a subject of its own defaults to `false`. Keep follow-ups in the thread unless you have a reason to change the subject, such as a different offer or a breakup email you want read on its own.

A/B variants [#ab-variants]

Any step can be tested with up to `5` variants (B through F) on top of the Original, with a traffic split you set. Leave a variant's subject or body blank to reuse the step's own. On a step that replies in the thread, variants vary the body only, because the conversation owns the subject.

Test one step at a time, and change one thing per variant, so a difference in reply rate has one explanation. Each variant shows sent, open, reply and bounce rates, and AY Inbox names a winner when it finds one. See [A/B variants](/guides/sequences/#ab-variants).

Reply branches and stop on reply [#reply-branches-and-stop-on-reply]

**Stop on reply** is a campaign-level switch. With it on, when a contact replies, the rest of their cold sequence stops. With it off and more than one step, the canvas warns you, because people who answered would keep receiving follow-ups.

**Stop on meeting booked** is the second switch, on by default. Once a contact books a meeting after joining the campaign, through your scheduling link or through AY Inbox booking it from a reply, the rest of their cold sequence stops. A reply branch they are already in keeps running. See [stop on meeting booked](/guides/sequences/#stop-on-meeting-booked).

**Reply branches** decide what happens next. A reply runs the path of the specific email it answers (matched by threading headers), so a reply to step one runs step one's branch. Conditions include:

| Condition                                       | Meaning                                                                                     |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `if replied`                                    | The contact replied                                                                         |
| `if replied: positive` / `negative` / `neutral` | The reply's intent                                                                          |
| `if reply intent is…`                           | An intent read by [inbox tagging](/guides/inbox-tagging/), such as wants pricing or not now |
| `if opened` / `if clicked`                      | Within a window of 1 to 60 days                                                             |
| `if didn't open` / `didn't reply`               | Checked after the full window                                                               |
| `if auto-reply / out of office`                 | The reply was automated, not human                                                          |

A reply branch can send an email, label the conversation, create a deal, notify your team or run an automation. Reply branches still run with stop on reply on, so turning it on is strictly safer.

Auto-replies and out-of-office messages are not human replies, so they do not stop the sequence. An out-of-office message instead holds the contact's next step until they are back (on by default, and switchable per workspace). See [out-of-office replies](/learn/out-of-office-replies/). To keep a thread going until a meeting is on the calendar, see [following up until a meeting is booked](/learn/follow-up-until-booked/).

Personalization in steps [#personalization-in-steps]

Every subject and body supports merge fields such as `{{.FirstName}}`, fallbacks for empty fields, conditionals and spintax. Fields you imported as custom fields are usable the same way. An [AI variable](/guides/ai-variables/) writes one snippet per recipient at send time and spends credits for each contact. Preview a step as a real lead before you launch, because the preview renders through the same engine as the send. See [personalization and expressions](/guides/expressions/) and [personalization that works](/learn/personalization/).

Building one by API [#building-one-by-api]

`POST /campaigns` accepts a `steps` array and connects the steps in order: each routes unconditionally to the next, waiting that step's `wait_after` days.

```json
{
  "name": "Q3 outbound",
  "stop_on_reply": true,
  "steps": [
    { "name": "Step 1", "subject": "Quick question, {{.FirstName}}", "body_plain": "Hi {{.FirstName}}...", "wait_after": 0 },
    { "name": "Step 2", "subject": "", "body_plain": "Just bumping this...", "wait_after": 3 },
    { "name": "Step 3", "subject": "", "body_plain": "Last note from me...", "wait_after": 4 }
  ]
}
```

Here step 2 goes out 3 days after step 1 and step 3 four days after step 2, both as replies in the first email's thread. Routing has no implicit next step: a step with no outgoing connection ends the flow, so add branches on the canvas or through the steps endpoints. Field-level detail is in the [campaigns API reference](/api/reference/campaigns/), and the full canvas is in [sequences and steps](/guides/sequences/) and [campaigns](/guides/campaigns/).

## Frequently asked questions

### What is a cold email sequence?

A cold email sequence is the ordered set of emails one contact receives in a campaign: a first email, then follow-ups that each wait a set number of days. It ends when the steps run out or, with stop on reply on, when the contact replies.

### How many follow-ups should a cold email sequence have?

AY Inbox's suggested default is a first email plus two follow-ups, sent 3 and 7 days after the first. A sequence can hold up to 50 steps, but each extra step is one more email to someone who has not answered.

### Should cold email follow-ups be sent in the same thread?

Usually yes. In AY Inbox a follow-up with no subject of its own is sent as a reply in the same conversation, carrying the original subject. Give a step its own subject only when you deliberately want a fresh conversation.

### What is the difference between a campaign and a sequence?

The campaign holds who you send to, which mailboxes send, the schedule and the limits. The sequence is the steps inside it: what each contact receives and when.

### Can a cold email sequence react to how a prospect replies?

Yes. In AY Inbox a reply runs the branch of the email it answers, with conditions such as replied, positive or negative intent, a reply intent like pricing or not now, opened, clicked or out of office. A branch can send an email, label the thread, create a deal, notify the team or run an automation.
