Series
Automated multi-step journeys: contacts enter through triggers, flow through messages, timed waits, condition branches and actions, and leave via exit rules — with a goal to measure whether the sequence worked.
Overview#
Open Outbound → Series. A series is a graph of steps, not a single blast: "when someone signs up, send a welcome email; if they haven't opened it in 3 days, send a reminder; either way, continue with the tips sequence" is one series with one branch.
A series is draft until you press Set live. Going live publishes a snapshot of the graph: contacts already flowing through keep following the version they entered on, so editing a live series never strands anyone mid-step — republish to apply changes to new entrants. A live series can be paused (no new entries, runs hold) and archived.
Entry rules#
A series can have up to 5 entry points; a contact matching any of them starts a run:
| Entry point | Fires when |
|---|---|
| Enters a segment | A contact starts matching a saved segment — the workhorse trigger for lifecycle sequences. |
| Is created | A new contact appears — widget identification, import, or the API. |
| A date attribute comes up | N days before or after a date stored on the contact (a plan renewal, for example). The offset can be up to a year either way. |
| Manually | You enroll a contact or a whole segment by hand — for one-off runs over an existing list. |
Re-entry controls whether a contact who finished the series can enter again; when enabled, a minimum gap in days keeps repeat runs apart.
Steps, waits and branches#
| Step | What it does |
|---|---|
| Message | Sends the contact an email, a chat message, an in-app post (announcement), or a push notification over the channels you pick. Delivered by the same machinery as campaigns, with the same variables and skip rules. |
| Wait | Pauses the run for a fixed time — from 5 minutes up to 180 days. |
| Wait until | Waits for a condition to become true, up to a timeout — with two outgoing paths: condition met and timed out. "If they don't open the email within 3 days, remind them" is a wait-until on opened with a 3-day timeout. |
| Branch | Checks a condition right now and splits into yes / no paths. |
| Action | Changes the contact — set an attribute, or unsubscribe them from campaigns. |
| End | Explicitly finishes a path. |
Conditions — shared by Wait until, Branch, exit rules and the goal:
- Opened a message — the contact opened one of the messages sent earlier in this run. Only opens that happen after the wait starts count, and the builder only offers messages that are actually sent before the step.
- Is in a segment — matches a saved segment right now.
- Attributes match — any contact-attribute rule set (all / any matching).
- Can be reached by — the contact has an email address, or a device with push enabled.
- Is unsubscribed — opted out of campaigns.
- Random share (A/B) — a stable random percentage split: a given contact always lands on the same side of the same split.
Branches can merge back together — both sides of "reminded or not" can continue into one shared tail instead of duplicating it. Loops are not allowed: the builder rejects a graph where a path circles back on itself.
Exit rules and the goal#
Exit rules (up to 5) pull a contact out of the series early. Before each step the engine checks every rule; a match ends the run immediately. Typical use: "exit anyone who enters the Paying customers segment" — no more trial-nurture emails after they convert. Contacts who unsubscribe or disappear also stop receiving series messages.
The goal is a condition plus a window of 1–365 days: a contact who matches it within the window after entering counts as a conversion. The goal never changes what the series does — it exists purely so the report can tell you whether the sequence achieves what it was built for.
Stats and runs#
Each series tracks:
- Entered / Active / Completed / Exited / Goals — the top-line funnel.
- Per-step counters — how many runs passed each step, split into sent/ok, skipped, failed, and for branches the yes / no / timed-out outcomes, so you can see exactly where contacts flow.
- The runs list — every contact's run with its status (running, waiting, done, failed), current step, next wake-up time and end reason.
Limits#
| Limit | Value |
|---|---|
| Steps per series | 60 (longest path 30 steps deep) |
| Condition steps | 16 branches / wait-untils per series |
| Entry points / exit rules | 5 each |
| Wait duration | 5 minutes to 180 days |
| Live series | 30 per workspace |
These caps are safety rails — a runaway graph is the fastest way to send one contact forty emails. If you hit them, split the sequence into two series chained by a segment.