How to set up campaign sequences: delays and conditions
A sequence is the ordered set of steps — emails and/or LinkedIn actions — that runs automatically for every lead you enroll. Two controls shape how it plays out: each step's Delay (days) + Hours decides when it runs, and a Condition step decides which way the path branches based on what the lead does (accepted, replied, opened). This guide walks through both, with worked examples, and shows the Use Preset shortcut that builds a proven flow for you so you only edit the wording.
What is a sequence?
A sequence is an ordered list of steps that WarmySender runs automatically, one after another, for each lead in your campaign. A step can be a cold email, a LinkedIn action (a connection invite, a message, an InMail, a profile view), or a Condition that branches the path. You build the sequence once in the campaign builder, and every lead you enroll travels through the same steps on their own personal schedule — so you set it up a single time and it runs hands-free.
WarmySender is a 4-pillar outreach platform — Cold Emailing, Email Warmup, LinkedIn Outreach, and Multichannel sequences. A sequence can mix email and LinkedIn steps in a single campaign, which is what makes it a multichannel sequence — the same lead can get an email and a LinkedIn touch as part of one coordinated flow.
How step delays work (the Day N timeline)
Every step has two timing fields — Delay (days) and Hours — and they control how long the step waits after the previous step before it runs. The first step is special: Day 0 means it's sent as soon as a lead is enrolled. Each later step then waits its own delay on top of where the lead already is, and the builder shows a running estimate — "Estimated send: ~Day N after enrollment" — under each step so you can see the whole timeline at a glance.
The helper text under the field says it plainly: "When this step runs after the previous one. Day 0 = sent as soon as a lead is enrolled; Delay 2 = two days later." Set Hours when you want a finer gap than a whole day (for example a 4-hour wait between two same-day touches).
Worked timeline example
Say you build a simple three-step email sequence with these delays:
- Step 1 — Initial Outreach. Delay 0 days → sent on Day 0 (the moment the lead is enrolled).
- Step 2 — Follow-up 1. Delay 3 days → runs 3 days after step 1, on Day 3.
- Step 3 — Final Follow-up. Delay 5 days → runs 5 days after step 2, on Day 8.
So a lead enrolled on a Monday gets the first email that day, the second email the following Thursday, and the last email the Tuesday after that. The "~Day N" estimate on step 3 reads ~Day 8 — the delays simply add up down the sequence. Each lead's clock starts from their own enrollment moment, so people who join later are automatically on the same relative cadence.
A few practical notes on timing: delays are measured from when the previous step actually completes, and sends still respect your campaign's sending window, active days, and daily limits — so if a step lands on a paused day or outside your sending hours, it goes out at the next allowed time rather than breaking the cadence. The timeline is your plan; account-safe pacing is always the floor.
How conditions (YES / NO branching) work
A Condition step branches the path on what the lead does. You pick a Condition Type (for example LinkedIn Invite Accepted, LinkedIn Reply Received, or Email Opened) and a wait window, and then you choose where each side goes. Each branch — both If YES and If NO — can either send the lead on to a later step or End the sequence, so a lead simply stops the moment that branch is taken. The builder spells it out: "YES = it happened within the timeout; NO = it did not." Pick End the sequence on a branch when nothing more should happen down that path — there's no need to add a blank, do-nothing step just to finish a lead off.
This is what makes a condition the natural place to stop a lead the instant they respond. For example, branch on Email Opened or LinkedIn Reply Received and set the YES side to End the sequence — anyone who opens or replies drops out cleanly, while the NO side carries on to your next nudge. You can choose End the sequence on either side (or both), whichever matches the path you want to close off.
One thing you usually don't need a condition for: stopping someone who replies. WarmySender already does that for you — Stop-on-Reply is on by default, so the moment a lead replies to one of your emails, their remaining follow-ups are cancelled automatically and they won't get any further messages in that campaign. So for the common case of "stop emailing anyone who answers," you don't have to build a reply condition at all — just write your follow-ups and a reply ends them. Reach for a reply or open condition when you want to do something more specific on a response (for instance, route repliers down a different branch, or end the sequence on a LinkedIn reply, where you set the branch yourself).
The condition types you can branch on include:
- LinkedIn Invite Accepted
- YES once the person accepts your connection request. The classic gate before sending a first LinkedIn message — you can only message a 1st-degree connection, so you wait for the accept first.
- LinkedIn Reply Received
- YES once the person replies to your LinkedIn message. Use it to stop following up the moment someone responds.
- Email Opened
- YES once the lead opens your email within the window. Handy for routing openers and non-openers down different follow-ups.
- Email Replied / Email Clicked / Email Bounced
- Branch on whether the lead replied, clicked a link, or the email bounced — so engaged leads and quiet leads can take different paths.
On a LinkedIn-only campaign the builder shows the LinkedIn condition types; on an email-only campaign it shows the email ones; on a multichannel campaign you get all of them. The wait window (days) is how long the condition waits for the event before it takes the NO path.
Worked LinkedIn example
Here's the most common branch — invite, wait for the accept, then message only the people who accepted:
- Step 1 — Connection Request (a Send Connection Invite action), Delay 0 → the invite goes out on Day 0.
- Step 2 — Wait for Accept (a Condition, type LinkedIn Invite Accepted, wait window 7 days). If YES → go to the Follow-up Message. For NO, choose End the sequence (or simply leave NO blank) so the lead stops if they never accept.
- Step 3 — Follow-up Message (a Send Message action), Delay 1 day → a day after the accept, your message lands.
So someone who accepts on day 2 gets your message on day 3; someone who never accepts within 7 days quietly drops out of the sequence with no message sent. That's exactly the behaviour you want — you only message people who connected, and you never pester people who didn't.
Combining several conditions in one step (AND / OR)
A Condition step isn't limited to one signal any more. Click + Add condition and a joiner appears between the rows — set it to AND (every condition must be true) or OR (any one condition is enough). One step uses a single joiner for the whole list, so the rows are all AND or all OR, never a mix.
Two of the conditions now take a counting operator plus a number: Email Opened and Link Clicked accept at least, more than, exactly, at most, or fewer than. That lets you branch on how engaged someone actually is — "opened at least 3 times" is a genuinely warm lead, where "opened at all" is just a pixel firing once. Link Clicked sits at "at least 1 time" by default, which simply means they clicked.
The rest stay one-time signals that either happened or didn't, with no number attached: Email Replied, Email Bounced, Wait Timeout, LinkedIn Invite Accepted, LinkedIn Reply Received, and Has LinkedIn Profile. There is no "didn't happen" condition — every condition asks whether something happened, and the If NO branch is the path for everyone it didn't happen to.
Worked example — "opened at least 2 times OR clicked"
- Add a Condition step to your sequence.
- Set the first row to Email Opened, operator at least, number 2.
- Click + Add condition and set the joiner to OR.
- Set the second row to Link Clicked, left at "at least 1 time".
- Set your wait window, then point If YES at your warm follow-up and If NO at a different angle — or End the sequence.
Anyone who re-opened your email or clicked a link takes the YES path; everyone else takes NO. Swap the joiner to AND and the same two rows become "opened at least 2 times and clicked at least once" — a much narrower, hotter group.
Why LinkedIn conditions stay on their own step
When a LinkedIn signal decides a branch, WarmySender also updates how it treats that person on LinkedIn from then on — for example marking them as connected so no further invite attempts are made. That follow-on action is only safe and unambiguous when a single LinkedIn signal made the decision: in a step reading "invite accepted OR email opened" we couldn't tell which one fired, so we'd risk acting on LinkedIn based on something that never happened there. Account safety always wins, so a LinkedIn condition stays single. The workaround takes seconds — put the LinkedIn condition in its own Condition step and send its If YES branch into a second Condition step holding your email conditions.
No brackets, no nesting — chain steps instead
One Condition step is a flat list with a single joiner. To express something like "(opened at least 2 times OR clicked) AND hasn't replied", use two Condition steps in a row: the first holds the open and click conditions joined by OR, and its If YES branch feeds a second Condition step on Email Replied, where If NO goes to your follow-up and If YES ends the sequence. Chaining Condition steps is how you build anything more complex, and it reads more clearly in the builder than nested brackets ever would.
One timing behaviour worth knowing
Some conditions are already true for everyone the moment the step is reached — "fewer than 2 opens" is true for a lead with zero opens, which is everybody at the start. If the step decided instantly, every lead would be pushed down the no-engagement path before they'd had any chance to engage. So conditions of that shape wait out the step's full wait window before deciding. Conditions that can only become true, like "opened at least 2 times", behave the other way: the moment they're satisfied the step decides and the lead moves on immediately. Practical takeaway — give any step that branches on low or absent engagement a realistic wait window.
Your existing campaigns are unaffected. Every sequence built before this keeps behaving exactly as it did — nothing to migrate, re-save, or re-launch. Multi-condition is purely additive: a step only uses the new behaviour once you deliberately add a second condition or pick a counting operator. Full walkthrough: how do I combine multiple conditions in one sequence step?
The shortcut: start from a proven preset
You don't have to build the delays and the accept-condition by hand — click Use Preset on the Sequence step and pick a proven template, and the whole flow is assembled for you. The LinkedIn 3-Step preset, for example, drops in exactly the flow above: a Connection Request on Day 0, a Wait for Accept condition with a 7-day window already wired to branch YES to the message (and NO left blank to stop), and a Follow-up Message a day later. Then you just edit the wording of the invite and the message and you're ready to launch.
There are presets for the common shapes — a 3-Step Email Drip, a 5-Step Nurture, the LinkedIn 3-Step, and several multichannel flows that mix email and LinkedIn with accept/open conditions already set up. Using a preset is the fastest way to get a correct, account-safe sequence; everything in it stays fully editable, so treat it as a tested starting point rather than a fixed recipe. If you'd rather build from scratch, click Add Step and add steps one at a time instead.
A note on LinkedIn pacing and safety
When your sequence includes LinkedIn steps, keep a comfortable gap — 1 to 2 days — between actions rather than stacking several LinkedIn touches on the same day. WarmySender automatically keeps each connected LinkedIn account within its safe daily limits and eases a newly connected account up gradually over its first few weeks, because account safety always comes before speed — a restricted LinkedIn account is far costlier than a slightly slower sequence.
This also means your delays are a request, not a guarantee of instant sending: if a step would push an account past its safe daily limit, that step waits for the next available slot instead of forcing the action through. You'll never get a burst of catch-up actions after a quiet stretch. For the full picture of how many actions are allowed per day by account type, see LinkedIn sending limits & account tiers and how invite, message, and InMail caps work together. One more good habit: when a Send Message step follows a Send Connection Invite, always put a Wait for Accept condition between them — otherwise the message is skipped for anyone who hasn't accepted yet.
People also ask
Common adjacent questions about delays and conditions in a sequence.
What does Day 0 mean?
Day 0 is the moment a lead is enrolled in the campaign — a step with a Delay of 0 days is sent right then. Every later step's "~Day N" estimate counts forward from that enrollment moment, so Day 3 means three days after the lead joined the campaign.
How do I add a delay between two steps?
Open the step you want to delay and set its Delay (days) (and optionally Hours) field. The delay is measured from when the previous step runs, so a Delay of 2 on step 3 means step 3 runs two days after step 2. The running "~Day N after enrollment" line under the step shows where it lands overall.
What's the difference between a delay and a condition?
A delay only controls timing — how long to wait before the next step. A condition controls which path the lead takes based on what they did (accepted, replied, opened), branching to one step on YES and another on NO. Use a delay for "wait, then send"; use a condition for "if they did X, do this — otherwise do that."
What happens on a branch if I set it to End the sequence?
The lead simply stops on that branch — they reach the end of the sequence with no further steps and get no more messages. Both the YES and NO sides of a condition offer End the sequence, so you can close off whichever path shouldn't continue. It's the usual choice for the NO side of a "Wait for Accept" gate: people who accept get the message (YES), and people who never accept within the wait window end the sequence (NO), so you never message someone who didn't connect. (Leaving NO blank does the same thing for backward compatibility, but picking "End the sequence" makes your intent clear.)
Can I branch on whether someone replied?
Yes — though for the common "stop emailing anyone who replies" case you usually don't even need to: WarmySender's Stop-on-Reply is on by default, so a reply automatically cancels that lead's remaining follow-ups. If you want to do something more specific on a response, add a Condition step with the type LinkedIn Reply Received (or Email Replied on the email side) and set the YES path to End the sequence (or route it down a different branch), while the NO path sends another nudge.
How long should the Wait for Accept window be?
Seven days is a sensible default and the value the LinkedIn presets use — long enough that most people who'll accept have done so, without holding leads in limbo forever. You can set any wait window from 1 to 30 days. Leads who accept earlier move on as soon as they accept; you don't have to wait out the full window.
Do I have to build the accept condition myself?
No — click Use Preset and choose the LinkedIn 3-Step template. It builds the Connection Request, the Wait for Accept condition (7-day window, YES wired to the message, NO left blank), and the Follow-up Message for you. Then you just edit the wording. Everything stays editable afterward.
Can a single sequence include both email and LinkedIn steps?
Yes — that's a multichannel sequence. You can mix cold-email steps and LinkedIn steps in one campaign, and you can branch across channels (for example, send a LinkedIn invite only to people who didn't open your email). The LinkedIn side still respects each account's safe daily limits; the email side respects your sending window and daily caps.
How do I make a sequence stop after a step?
Add a Condition step at the point you want a lead to potentially finish, then set the relevant branch to End the sequence. Both the YES and NO sides offer "End the sequence," so you can stop a lead the moment a chosen thing happens (set YES to End the sequence — for instance the moment they reply or open) or when it doesn't (set NO to End the sequence). You never need to add a blank, do-nothing step just to finish a lead off — ending the branch does it cleanly. And remember that a reply already ends a lead's follow-ups on its own, since Stop-on-Reply is on by default.
Want a second pair of eyes on your sequence before you launch? Email [email protected] with the campaign name and we'll happily check the delays and branches over.