Sequences
Multi-step cadences across seven channels that run themselves and stop on a reply.
A sequence is a multi-step cadence: email on day 0, a call on day 2, a LinkedIn message on day 5, a breakup email on day 12 — enrolled once and then running itself, and stopping the moment someone replies.
Sequences are Growth and above.
In this guide
- Getting to the page
- Building a cadence
- The seven channels
- Automatic vs manual steps
- Cumulative days, not delays
- Conditions
- The timezone
- Enrolling an audience
- What stops a cadence
- Variants and reporting
- Troubleshooting
1. Getting to the page
Click Sequences in the Marketing section, at /client/sequences. It sits after Campaigns deliberately: a sequence is the step you take once you have a template, a list, and have sent at least once.
The header shows the sequence name and its cadence — "5 steps · day 0, 2, 5, 9, 14" — or "No steps yet".
2. Building a cadence
A sequence is an ordered list of steps. Each step has:
- A channel — how it reaches the prospect.
- A day — the cumulative day it lands on.
- A send window — the time of day it may go.
- Content — a template or copy written inline.
- An optional condition — see below.
You must add at least one step before the sequence can be activated or anyone can be enrolled. The database refuses an enrolment into an empty cadence rather than silently creating one that never sends.
3. The seven channels
| Channel | Mode | What happens |
|---|---|---|
| Agent Call | Automatic | A voice agent places the call at the scheduled time, with no one pressing dial. You choose which agent speaks. If an answering machine picks up, the agent can leave a scripted message rather than hang up. The transcript and recording land on the timeline. |
| Rep Call | Manual | You make this call. On the due day it becomes a task with a notification and a button that opens the dialer with the number loaded. The step stays open until you mark it done, so a missed call reads as missed. |
| Automatic | Sends from your connected sending address with your signature, and appears in your Sent. Because it is a real email from you, a reply threads back into your inbox and stops the rest of the cadence for that person. | |
| SMS | Automatic | Sends a text. Replies stop the cadence; STOP adds the person to the do-not-contact list. Needs an SMS-capable sending number — until one exists, SMS steps do not send and say so. |
| Manual | LinkedIn has no API to send through. On the due day the message is written for you against that prospect, with a copy button beside a link to their profile. Needs their profile URL, entered at enrolment. | |
| Manual | Same as LinkedIn: the message is written for you, with a copy button beside a wa.me link that opens the chat. Needs their WhatsApp number, entered at enrolment. | |
| Task | Manual | A reminder for anything the other channels don't cover — post something, check a trigger, get an intro. Becomes a task on the due day and stays open until you close it. |
4. Automatic vs manual steps
Automatic steps (agent call, email, SMS) run on their own.
Manual steps (rep call, LinkedIn, WhatsApp, task) become a task with a notification. The cadence waits on them — the step stays open until a person closes it, so a skipped call is visible rather than silently counting as done.
5. Cumulative days, not delays
Steps are dated by the cumulative day they land on, not by a delay from the previous step. A step on day 5 is five days after enrolment, whatever happened in between.
This is the difference between a cadence you can read at a glance and one you have to add up.
6. Conditions
A step can be gated on what happened to an earlier one:
| Condition | Fires when |
|---|---|
opened | They opened the referenced step. |
not_opened | They did not open it. |
clicked | They clicked a link in it. |
not_clicked | They did not click. |
no_reply | They have not replied. |
Two fields, not a branching graph. "Send the breakup only to people who never opened anything" is the case that actually comes up, and a graph would need a canvas to stay readable.
7. The timezone
A sequence has one timezone, and every step's send window is read in it. It is a real timezone, not a fixed offset, so a 9:00 step stays at 9:00 across a daylight-saving change rather than drifting to 8:00 or 10:00.
8. Enrolling an audience
Pick an audience and enrol it. The resolved recipient count is shown before you commit.
Channels needing a per-prospect fact — LinkedIn needs a profile URL, WhatsApp needs a number — collect it at enrolment, so a step cannot arrive with nothing to act on.
Enrolment is blocked until the sequence has at least one step, and until a sending domain is verified for email steps.
9. What stops a cadence
A cadence stops for one person when:
- They reply — to an email or an SMS. This is the main one, and it is automatic.
- They unsubscribe or reply STOP.
- A disposition stops it — a call outcome that says stop calling.
- You stop it by hand, for one person or for the whole sequence.
Runs are claimed under a lock with skip-locked semantics, so two overlapping ticks cannot pick up the same step and send it twice. The engine deliberately trades a possible lost step for a guaranteed no-duplicate-send — for outbound email that is the right way round.
10. Variants and reporting
Steps can carry variants for A/B testing, with a variant report showing how each performed. Per sequence you see enrolled, active, completed, replied and stopped, plus per-step open, click and reply rates.
11. Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The page shows an upgrade screen | Sequences need Growth or above | See Plans & Subscriptions |
| Steps sit waiting and never send | No verified sending domain | Settings → Email |
| Cannot activate the sequence | It has no steps | Add at least one |
| Cannot enrol | Same — the database refuses an empty enrolment | Add a step first |
| SMS steps don't send | No SMS-capable number | Configure one |
| Someone got a step after replying | They replied outside the threaded channel | Stop them manually |
| Send times drifted by an hour | A fixed offset instead of a timezone | Set a real timezone on the sequence |