Help CenterContacts & sequences

Building and running sequences

By Clint ParsleyLast updated

In short. A sequence is a chain of email, wait, and condition steps. It always opens with an email, conditions branch on engagement, and a detected reply stops the sequence for that contact.

A sequence is a multi-step outreach flow: emails, waits between them, and conditions that branch on what the contact did. Sequence emails send through your connected mailbox, from your address, paced under the mailbox's daily cap (250 to 1,000, depending on the kind of account), so a sequence reads like personal follow-up rather than a campaign. Outlook.com's limits can be lower for non-subscribers and new accounts, which is why a personal Outlook mailbox gets the lowest cap.

If you've connected more than one mailbox, a contact's emails go through the one that was your default when you enrolled them, even if you change your default later. If you disconnect that mailbox, they move to your current default. If a move to the Free plan parks it, they move to your current default until a paid plan brings it back, and then they return to it. If that mailbox needed reconnecting before it was parked, their emails send from your sending domain until you reconnect it. Contacts you enrolled before you connected any mailbox follow whichever mailbox is your default.

Contact enrolledManually or from a listEmail stepAlways the first stepWaits + conditionsBranch on opens, clicks, scoreReply detectedRemaining steps stopAll steps completeEnrollment ends
One contact's path through a sequence. A detected reply stops the remaining steps for that contact.

What are the building rules?

The builder enforces three structural rules rather than letting a broken sequence fail at runtime:

  1. The first step is always an email. A sequence that opens with a wait or a condition has nothing to wait on or measure.
  2. A condition step must follow an email step, because conditions evaluate that email's outcome.
  3. Condition jumps only point forward. A jump back would loop a contact through the same steps forever, so the builder won't let you create one.

Waits are in days or hours, and long waits are exact: a step scheduled for Thursday runs Thursday.

What can conditions branch on?

Whether the previous email was opened or clicked, and the contact's engagement score against a threshold you set. Each condition has a yes-branch and a no-branch, and either branch can continue to the next step, jump forward to a later step, update a contact field, or unenroll the contact. There is also a "Replied" trigger where reply detection is available, and it works differently: a condition only runs for contacts whose enrollment is still active, and a reply detected while they are active ends that, so the Replied condition is never true for a contact who reaches it. Its yes-branch never runs, the builder says so and will not take actions there, and the no-branch is where you put what should happen for the contacts who do reach it.

A new condition starts with both branches empty, and an empty branch sends the contact on to the next step. Add an action when you want something else to happen: "Add action" puts in a jump with no target yet, and the sequence cannot be activated, or saved while active, until you pick one. A branch can hold several actions, and they run from the top. Field updates all apply, up to the first jump or unenroll, which settles where the contact goes; anything listed below it is ignored. A branch may show a "No action (does nothing on its own)" row; it is exactly that, so an action underneath it still runs.

One caveat worth carrying in from the open-rates guide: opened-based conditions inherit open tracking's blind spots, so branch on clicks or score where the decision matters.

Can a condition hand a contact to another sequence?

Yes. A condition branch can end with Hand off to another sequence. A contact who takes that branch leaves this sequence and starts the one you picked, from its first email. If that sequence has a scheduled start in the future, the contact waits for it. Nothing listed after a hand-off on the same branch runs, and the builder says so.

Sequence AHand-off 1Sequence BHand-off 2Sequence CHand-off 3Sequence DHand-off refusedContact stops in DHand-off limit reached
One contact can be handed off 3 times. A reply to any of these sequences stops all of them.

One contact can be handed off three times at most: A to B, B to C, then C to D. If D tries a fourth hand-off, it fails and the contact stops in D. Separately, the builder won't activate a sequence whose hand-offs lead back to itself, and the error names the path of the loop.

The sequence you hand off to has to be active when the contact gets there. The picker lists drafts and paused sequences as well, marked as such, because you may be about to activate them. A contact who reaches the hand-off before you do isn't handed off; they stop in the first sequence. A contact who is already in the target, active or paused, isn't handed off either. The first sequence stops for them, and nobody is enrolled twice.

A reply stops the whole chain. If the contact replies to an email from any sequence in the chain, every sequence they are still in from that chain stops for them, not only the one they replied to.

Emails in the next sequence go out from the mailbox of the teammate who enrolled the contact in the first sequence, unless the next sequence picks a From on one of your sending domains, which then sends through that domain. The channel carries over as well.

When a list was too big for the mailbox's daily cap, its emails went out through a sending domain instead (your own verified domain if you have one, otherwise the shared SEMAOS domain), and a contact handed off from that list keeps sending that way. That teammate's permission to send is checked again at each hand-off, so if they have been made draft-only since, the hand-off fails. Removing them from the team stops their contacts outright, so those contacts never reach a hand-off. If their seat is suspended, the contact waits at the condition step until the seat comes back. The condition is then checked again, so a contact who opened or clicked in the meantime can take the other branch.

Why did a hand-off fail?

When a hand-off can't happen, the contact stops in the first sequence at the condition step, and that sequence's enrollments page says why. Here B stands for the sequence the contact was being handed to.

The enrollments page saysWhat happened
Hand-off failed: B wasn't activeB was a draft, paused or archived when the contact reached the hand-off.
Hand-off failed: already in BThe contact was already active or paused in B.
Hand-off failed: the sequence it hands off to no longer existsB was deleted.
Hand-off failed: the contact replied to B beforeThe contact replied to B in the past, and a contact who has replied to a sequence isn't enrolled in it again.
Hand-off failed: the contact is suppressed, opted out or has an invalid addressThe same check every enrollment and every send runs.
Hand-off failed: the member who enrolled them can't sendThat teammate is set to draft-only.
Hand-off failed: the member who enrolled them was removedThat teammate is no longer on the team. Removing a teammate normally stops their contacts first, so this is rare.
Hand-off failed: the chain had already handed off 3 timesIt would have been the contact's fourth hand-off.

"Hand-off failed: B sends from a mailbox that the member who enrolled them didn't connect" means B sends every email from one teammate's connected mailbox, so only contacts that teammate enrolled can be handed off to it.

Your account's status doesn't fail a hand-off. If the account is paused for an unpaid invoice, suspended from sending, read only, canceled, or in any other state that stops sending when a contact reaches the hand-off, the contact waits at the condition step, the same way an email step waits. Their row reads "Plan limit reached" and "Held before the hand-off to B". Once the account is active again they pick up, usually right away and within a day at most. The condition is checked again first, so a contact who opened or clicked in the meantime can take the other branch. If B was paused or archived while they waited, the hand-off fails when the hold lifts and the contact stops, as it would for any contact reaching a B that isn't active.

Where do hand-offs show up?

On the first sequence's enrollments page, a handed-off contact reads "Handed off to" with the sequence's name, linked, and is placed at the condition step that moved them. In the next sequence, their row says "From" and the name of the sequence that handed them off. A contact stopped by a reply elsewhere in the chain reads "Stopped: replied in" and the sequence where the reply landed. A contact waiting at the hand-off, on a suspended seat or on your account's status, reads "Held before the hand-off to" and the target.

The Unenrolled count on a sequence's page includes hand-offs. The line under it gives hand-offs and failed hand-offs separately from goal met, because a hand-off moves a contact along rather than finishing their sequence. The sequence's analytics page has a Handed off card. A sequence that other sequences hand off into lists them under "Handed off from", on its page and in the builder.

A condition step that hands off says where to. In the builder, on the sequence's page and in the analytics step table, its summary names the sequence, as in "then hand off to Bravo". If that sequence has since been archived or deleted, it reads "an archived or deleted sequence" instead.

What about archiving, pausing and copying?

You can't archive or delete a sequence while an active sequence hands off to it. The message names those sequences, so you know which hand-offs to remove first. A paused sequence doesn't block the archive, but once its target is archived, the paused sequence can't be resumed until you change or remove that hand-off. A copy of a sequence keeps its hand-offs and points at the same sequences as the original.

How do contacts get enrolled?

Enroll individual contacts from their pages, or enroll a list. Dynamic lists evaluate their filter at enrollment time, so "everyone whose score is above 60" means above 60 right now, not whoever qualifies later. Suppressed, opted-out, and invalid-email contacts are skipped at enrollment and again at every send, on the same checks every channel runs. A contact who is already in the sequence is skipped too, and that includes one whose enrollment is paused.

Some enrolled contacts pause, and each pause lasts as long as its cause:

  • A daily sending cap. If a list stops partway because it hit a daily sending cap, the paused contacts pick up on their own once the cap resets, and you don't need to enroll them again.
  • A plan limit, until whatever is blocking your sends clears (a top-up, the cycle reset, or support lifting a sending suspension).
  • A paused sequence, until you resume it.
  • A disconnected mailbox on the Free plan, until you reconnect it.
  • A suspended seat. Contacts enrolled by a teammate whose seat is suspended wait until that seat comes back. An upgrade brings suspended seats back up to the new plan's included seats, oldest members first; a teammate past that number stays suspended, and so do the contacts they enrolled. Nothing sends for a suspended seat in the meantime, on any channel, and the system never moves those contacts to someone else's mailbox on its own.

An admin can unenroll a paused contact on the sequence's enrollments page and enroll them again. They then start the sequence over from the first email, and send the way the admin's own enrollments do (usually from the admin's mailbox).

Removing a teammate, suspended or not, unenrolls every contact still active or paused in a sequence they enrolled, and the remove dialog says how many contacts that is. Emails already sent stay in your history. To keep any of those contacts going, enroll them again after the removal; they start over from the first email and send the way your own enrollments do.

To unenroll many at once, tick their rows, or the box in the header, which takes every active or paused contact on the page (up to 50), and choose the Unenroll button that appears, which shows how many you picked. Repeat on the next page for more.

To see where contacts are, open the sequence's page or its analytics page. Each step on the sequence's page, and the In step now column of the analytics step table, shows how many active contacts are on that step right now. A wait step gives the count and when the wait ends, as in "2 contacts in this wait", followed by the date and time in your timezone. An email step counts the contacts queued for it, and a condition counts the contacts waiting on its check. Paused contacts aren't included; the Paused count above the table has them. If SEMAOS can't read these counts, the column shows a dash, and the rest of the page still loads.

You can also schedule a sequence start for a future date and time instead of launching immediately. The scheduler interprets the time in your browser's timezone, and says so next to the field.

Who does a sequence send from?

Send from in the builder offers up to three kinds of sender:

  • Each enroller's own default mailbox is where every new sequence starts. Each contact's emails go out through the connected mailbox of whoever enrolled them. On a paid plan, if that person has no connected mailbox, their contacts get your default sending address instead. On a paid plan, if someone enrolls more contacts at once than their mailbox has left to send today, that whole batch goes out through SEMAOS instead, from your verified sending domain or, if you don't have one, the shared SEMAOS domain. That's decided once, when they enroll. On the Free plan every email goes through the enroller's mailbox.
  • My mailboxes lists the mailboxes you've connected that are working. Pick one and every step sends from it (the next section explains the rules that come with that).
  • Sending addresses lists an address on each of your verified sending domains. Pick one and every step goes out from that address through SEMAOS, not through anyone's mailbox. A domain in its first three weeks has a daily warmup limit, and the builder shows it under the picker. If you haven't connected a mailbox yourself, the list also has your default address and the shared SEMAOS address. The shared address only applies to contacts whose enroller has no working mailbox; everyone else's contacts still go out through the enroller's mailbox. Your default address works the same way, unless it's on one of your verified domains: then it acts like any other address on that domain, and every contact's emails go out through SEMAOS under that domain's warmup. Free has no sending addresses, because on Free everything goes through mailboxes.

On a paid plan, each email step can also set its own From address, which has to be on one of your verified domains. Leave it blank and the step uses the sequence's choice. Free doesn't offer this, and the builder hides it when the sequence sends from a connected mailbox, yours or a teammate's.

Can a sequence send from one particular mailbox?

Yes. In the builder, Send from starts with "Each enroller's own default mailbox". That's the default, and it means each contact's emails go out through the connected mailbox of whoever enrolled them. Below it, under My mailboxes, are the mailboxes you've connected that are working. Pick one and every step of the sequence sends from it.

Only you can enroll contacts into a sequence that sends from your mailbox. A teammate who opens it sees "Sends from" with your name and the address, and the enroll page tells them that only you can enroll. The sequence also has a single sender, so steps can't override the From address and the builder hides that field on each email step.

The sequence's own page names that mailbox next to From address, and adds a note when it needs reconnecting or your plan parked it. Since its emails never go through a sending domain, the enroll page shows no domain warmup warning for it. If the mailbox needs reconnecting or your plan parked it, the enroll page says so. You can still enroll, and those contacts wait until the mailbox can send again.

If the mailbox disconnects or stops working, its contacts wait on every plan, and their rows read "Waiting for rep@acme.com to reconnect" with the mailbox's address. Nothing goes out from your workspace's sending address in its place. Reconnect the same account and they pick up where they stopped.

If your account moves to the Free plan, each person keeps one mailbox and the others are parked (see the plans guide). A sequence that sends from a parked mailbox waits as well, and reconnecting won't bring the mailbox back, because Free allows one mailbox per person. Its rows read "Waiting: your plan parked rep@acme.com". The contacts pick up once the account is on a plan that allows the mailbox (if the mailbox needed reconnecting before it was parked, reconnect it then). Or set Send from to "Each enroller's own default mailbox", and they continue from each enroller's default mailbox. Moving to Free also pauses running sequences, so resume the sequence too.

The mailbox's daily cap still applies. If you enroll more contacts than it can send today, the extra ones aren't moved to your sending domain. They wait and go out from the next day, as the cap allows. The cap resets at midnight UTC, and waiting contacts start again shortly after.

You can't choose a mailbox, or switch to a different one, while the sequence has active or paused contacts. Let them finish or unenroll them first. You can go back to "Each enroller's own default mailbox" or a sending address at any time. Contacts already in the sequence then keep sending from the mailbox they started with for as long as it works.

An admin who opens a sequence that sends from a teammate's mailbox can take that mailbox off it with Clear the pin, but can't switch it to a different mailbox. After you save, the sequence sends the way "Each enroller's own default mailbox" does.

Removing the teammate who connected the mailbox clears it from the sequence and pauses the sequence if it's running. When you resume it, it sends from each enroller's own mailbox unless you choose another. A copy of the sequence doesn't keep the mailbox either. It sends from each enroller's own mailbox until you choose one. The Duplicate confirm says so, both in the sequence list and on the sequence's own page.

What stops a sequence for a contact?

Four things: a detected reply (always for a connected Outlook mailbox; for emails sent through SEMAOS's sending domain, when reply detection is on under Settings → Sending), completing the final step, a manual unenroll, or the contact becoming suppressed. The reply exit is the one that matters most in practice; it's the whole reason sequence sending lives on the mailbox channel, where replies land in your real inbox and can be matched to the thread.

Pausing a sequence freezes every enrollment where it stands; resuming picks them all back up immediately, including steps whose time already passed while paused. While it's paused the enrollments read as Paused, and nothing sends. Note that if a scheduled start passed while you were paused, everything becomes due the moment you resume.

How many sequences can be active?

That's a plan limit: 2 on Free, 5 on Solo, 10 on Starter, unlimited on Team and Business. Drafts and paused sequences don't count against it. Activating one past the cap returns a clear error naming the limit; the plans guide has the full table.

Do I need templates before I start?

No. Every email step has a New template button next to its picker, so you can write the email where you are instead of leaving to the Templates page and losing the sequence you were building. It opens the same simple editor the Templates page uses, and the template you save is selected on the step straight away and available everywhere else afterwards.

Sequence emails use the simple editor rather than the drag-and-drop one, on purpose: a sequence step is a personal, one-to-one message, and plain text with light formatting reads that way. Broadcasts are where the designed layouts belong.

Insert merge field sits in the editor's toolbar and works in the subject line and preheader too — the token goes wherever your cursor was. When you pick one it asks what to use if that field is empty, so {{contact.first_name}} becomes {{contact.first_name | there}} and a contact with no first name reads "Hi there," instead of "Hi ,". You can skip it, and fields that are always filled in (the unsubscribe link, the date, your mailing address) don't ask.

In the message you can also just type {{. A list of fields opens and narrows as you keep typing, so {{fi brings First name to the top. Pick one with the arrow keys and Enter (or Tab), or click it, and it asks for the same fallback. Escape closes the list and leaves what you typed. The list only opens in the message, so in the subject and preheader use the button or type the whole field.

The preheader is the line an inbox shows after the subject, before the email is opened. It's hidden in the opened email and appears only in that preview. Leave it blank and the inbox shows the first words of your body instead. A short preheader is fine: the rest of the line is padded, so your body text doesn't run on after it. You can write up to 200 characters, but most inboxes show far fewer (roughly 40 to 100, depending on the app and the screen), so put the point first. Both template editors have a Send test to me button, and the test includes the preheader, so you can check how it reads in your own inbox.

Can I copy a sequence?

Yes. Duplicate appears on every sequence in the list and on the sequence's own page, whatever its status. That includes archived ones, which is the only way to get an archived sequence's work back into use.

The copy carries the description, the from-address, and every step. Condition branches still point at the steps they pointed at before, so a copied sequence branches the way the original did. It arrives named "Copy of" the original and opens in the builder. If you already have a copy by that name, the new one is numbered ("Copy of Welcome (2)") so the two are never confusable in the list.

Duplicate asks you to confirm first, because the copy is saved as soon as you agree. You can delete an unwanted copy afterwards, but it is easier not to make one.

Some things stay behind. The copy is always a draft, whatever the original was, so copying alone can't push you past your active-sequence cap. Enrollments don't travel either, because a contact is enrolled in one specific sequence, so the copy's stats start at zero. Neither does a scheduled start: by the time you copy a sequence its start time has usually passed, so the copy runs as soon as you activate it unless you set a new one.

Can I delete a sequence?

Yes, once nothing is moving through it. Delete sits next to Duplicate on every sequence in the list and on the sequence's own page, and it works whatever the status: draft, paused, archived, even active. What it checks is enrollments, not status. If contacts are still working through the sequence, or are paused partway and due to resume, Delete is unavailable and says how many are left. Unenroll them, or wait for them to finish.

Deleting removes the sequence and its enrollment records, and it can't be undone. The emails it already sent are kept. They stay in your send history with their recipients, subjects and results, and their unsubscribe links keep working, because a sent email is a record of something that happened and doesn't belong to the sequence any more. What you lose is this sequence's own reporting: the enrollment counts and the per-step numbers.

Archiving is the gentler option and does something different: it stops the sequence and keeps everything, including the reporting. Contacts still working through it are ended, so an archived sequence has no one active in it, but the record of who went through stays on its View enrollments page. A running sequence with contacts in progress has to be paused before you can archive it, and that includes contacts waiting on a daily sending limit; once it's paused, Archive ends them. Archive when you're finished with a sequence but want its numbers. Delete when you want it gone.