How do I combine multiple conditions in one sequence step?

Short answer: open a Condition step in your campaign sequence, click + Add condition to add a second row, and pick AND or OR on the joiner that appears between the rows. AND means every condition must be true; OR means any one of them is enough. For Email opened and Link clicked you also choose an operator — at least, more than, exactly, at most, fewer than — and a number, so you can branch on "opened at least 2 times" rather than just "opened at all". The builder shows a plain-English summary of exactly what you built before you save, and your If YES and If NO branches work exactly as they always have.

WarmySender is a 4-pillar outreach platform — Cold Emailing, Email Warmup, LinkedIn Outreach, and Multichannel sequences. Branching is what makes a multichannel sequence feel personal instead of a broadcast: the person who read your email three times gets a different next touch than the person who never opened it. If you are new to sequences, start with how to set up campaign sequences, delays and conditions — this page picks up where that one leaves off.

What changed

A Condition step can now hold several conditions at once — up to five in a single step — instead of testing one signal. On top of that, opens and clicks are counted, so the same signal can drive three different branches depending on how many times it happened.

Before, a Condition step asked one question: did this happen, yes or no? That is fine for "did they accept the invite", but it flattens everything interesting about email. Someone who opened your message five times is not the same lead as someone who opened it once by accident, and until now your sequence could not tell them apart.

Worked example: "opened at least 2 times OR clicked"

This is the branch most people want first, and it takes about a minute to build. It catches every genuinely interested lead — the ones who kept coming back to your email, plus the ones who went straight to your link — and sends them somewhere different from the people who ignored you.

  1. Add a Condition step at the point where you want the path to split, typically right after the email whose engagement you want to react to.
  2. Set the first condition. Leave the first row on Email opened, set the operator to at least, and type 2 in the number box. The row now reads "Email opened at least 2 times".
  3. Add the second condition. Click + Add condition. A joiner appears between the two rows — set it to OR, because either signal on its own is good enough for you.
  4. Set the second condition. Change the new row to Link clicked and leave it at at least 1 time. That is simply "they clicked at all" — one click is one click.
  5. Give it a realistic wait window. Set Wait window (days) to something honest — 4 days is a good starting point for an open-or-click check. That is how long the step waits for the engagement before it gives up and takes the NO path.
  6. Wire up both branches. Point If YES at your warm follow-up step — the one that actually asks for the meeting. Point If NO at a different-angle email, or choose End the sequence to stop cleanly.

Before you save, the builder echoes back exactly what you assembled: "Goes down the YES path when: Email opened at least 2 times OR Link clicked at least 1 time", with the note "Any one condition is enough." If that sentence does not describe what you meant, fix it there and then rather than discovering it three days into a campaign.

What each lead actually experiences

The five operators, and when each one earns its keep

Email opened and Link clicked are counted, so each one gets an operator and a number. Choosing the right operator is really about choosing which story you are reacting to.

Operator What it means When it earns its keep
at least That many or more. "Opened at least 2 times" — repeat interest, worth a real call-to-action.
more than Strictly above the number. "Opened more than 3 times" — they keep coming back; get to the point and ask.
exactly That number, no more and no less. "Opened exactly 1 time" — they looked once and moved on. Try a different subject line.
at most That many or fewer. "Clicked at most 1 time" — mild curiosity. Send the short version, not the long pitch.
fewer than Strictly below the number. "Opened fewer than 2 times" — the message did not land. Change the angle entirely.

Which conditions take a number

Only opens and clicks are counted. Everything else is a one-time signal that either happened or it did not, so it takes no number at all.

Condition Takes a number? Notes
Email opened Yes Operator plus a number of times. Can be combined with other conditions.
Link clicked Yes Operator plus a number of times. "At least 1 time" simply means they clicked at all.
Email replied No They answered, or they did not. Can be combined.
Email bounced No The message bounced, or it did not. Can be combined.
Wait timeout No The wait window ran out. Can be combined.
LinkedIn invite accepted No Stays on its own step — see below.
LinkedIn reply received No Stays on its own step — see below.
Has LinkedIn profile No Stays on its own step — see below.

Looking for a "did not happen" condition? There is not one, and you do not need it. Every condition asks whether something happened — the If NO branch is the path for everyone it did not happen to. So "has not replied" is an Email replied condition with your follow-up on the If NO branch.

AND or OR: matching all versus matching any

One Condition step uses a single joiner for the whole list, so every row is joined the same way. Think of it as match-all versus match-any.

You cannot mix the two inside one step — the joiner applies to the whole list. That is what keeps a step readable at a glance, and it is why anything more layered is built by chaining steps instead.

Two more examples worth stealing

The direct ask: "opened at least 3 times AND clicked"

Someone who opened your email three times and clicked your link has already sold themselves — the only thing left is to make saying yes easy. Build a Condition step with Email opened / at least / 3, join it with AND, and add Link clicked / at least / 1. Point If YES at a short, low-friction ask — two sentences and a single question, no re-pitch — and If NO at your normal follow-up. Everyone still gets a next touch; the warm ones just get a better one.

Want to add "and they have not replied yet"? You mostly do not have to: Stop-on-Reply is on by default, so anyone who answers is already pulled out of the sequence automatically and will not receive further follow-ups. If you want it explicit anyway, chain a second Condition step as shown below.

Across channels: connected on LinkedIn, then engaged by email

LinkedIn conditions live on their own step, so you chain them. This flow only sends a direct message to people who connected and then showed interest in your email:

  1. Condition step — LinkedIn invite accepted, wait window 7 days. If NO goes to End the sequence. If YES goes to the next Condition step.
  2. Condition step — Email opened at least 1 time OR Link clicked at least 1 time, wait window 4 days. If YES goes to your direct LinkedIn message. If NO goes to a softer touch, or End the sequence.

Two simple steps, and the result is a genuinely multichannel branch: the LinkedIn signal opens the door, and the email engagement decides how directly you walk through it.

No brackets — chain Condition steps instead

Nesting is not supported. One Condition step is a flat list where every row is joined by the same single AND or OR. You cannot mix the two inside one step, and you cannot nest brackets. That is deliberate: a flat list is readable at a glance, and mixed precedence inside a single box is where branching logic quietly starts lying to you.

Anything more complex is built by chaining steps. Say you want "(opened at least 2 times OR clicked) AND has not replied":

  1. First Condition step — Email opened at least 2 OR Link clicked at least 1. If NO goes to End the sequence. If YES goes to the second Condition step.
  2. Second Condition step — Email replied. If YES goes to End the sequence, because they already answered and there is nothing left to send. If NO goes to your follow-up.

Only leads who engaged and have not replied reach that follow-up — exactly the bracketed expression, expressed as two plain steps that anyone can read six months later. Both branches of every Condition step can either go to a later step or End the sequence, so you never need a blank do-nothing step just to finish someone off.

Why a LinkedIn condition stays on its own step

Account safety always wins. 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 and stopping any further invite attempts. 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 could not tell which one fired, so we would risk acting on LinkedIn based on something that never happened there. Rather than guess, a LinkedIn condition is always on its own step.

This applies to LinkedIn invite accepted, LinkedIn reply received, and Has LinkedIn profile. If you try to combine one with another condition, the builder tells you plainly that the condition works on its own and suggests chaining another Condition step.

The workaround takes ten seconds and reads better anyway: put the LinkedIn condition in its own Condition step, and send its If YES branch into a second Condition step holding your email conditions — exactly the cross-channel flow shown above. The same care applies to pacing: WarmySender keeps every connected LinkedIn account inside safe daily limits, and a step waits for the next available slot rather than pushing an account past them.

The timing detail people get wrong

Some conditions are true for everyone the moment the step is reached. "Opened fewer than 2 times" is perfectly true for a lead with zero opens — which is everybody, at the start. If the step decided instantly, your entire audience would be pushed down the no-engagement path before they had any chance to engage at all. So conditions of that shape wait out the step's full waiting window before deciding, giving each lead the time you configured.

Practical takeaway: put a realistic Wait window (days) on any step that branches on low or absent engagement. A 1-day window on "opened fewer than 2 times" is really just asking "did they read it within 24 hours", which is usually not what you meant. Three to five days is a fairer read of whether someone is genuinely cold. The builder reminds you of this inline whenever you pick one of those operators. Sending still respects your campaign's schedule and pacing, so a branch runs at the next allowed time rather than breaking your sending window — see how campaign sending schedule and pacing works.

Your existing campaigns are completely unaffected

Nothing changes for any sequence you already built. Every one of them keeps behaving exactly as it did. There is nothing to migrate, nothing to re-save, and nothing to re-launch — no campaign needs pausing or rebuilding, and leads already sitting on a condition step carry on untouched.

Multi-condition is purely additive. A Condition step only starts using the new behaviour once you deliberately add a second condition or pick a counting operator. Until then it evaluates the single signal it always did, with the same YES and NO branches going to the same places. And remember that both branches can always either continue to a later step or End the sequence, and that Stop-on-Reply is on by default — so you rarely need a reply condition just to stop someone who answers.

Frequently asked questions

How do I say "opened at least 2 times OR clicked"?

Add a Condition step to your sequence. Leave the first row on Email opened, set its operator to "at least" and type 2. Click "+ Add condition" — a joiner appears between the two rows, and you set it to OR. Set the second row to Link clicked and leave it at "at least 1 time", which simply means they clicked at all. The builder echoes back what you built: "Goes down the YES path when: Email opened at least 2 times OR Link clicked at least 1 time", with the note "Any one condition is enough." Finally set your Wait window (days) and point If YES at your warm follow-up step and If NO at a different angle or End the sequence.

What's the difference between AND and OR in a condition step?

OR means any single condition is enough to take the YES path — "Email opened at least 2 times OR Link clicked at least 1 time" sends anyone who did either one down the YES branch. AND means every condition has to be true at the same time — "Email opened at least 3 times AND Link clicked at least 1 time" only takes YES for someone who both re-read your email and clicked through. OR casts a wider net and is the right default for catching engagement; AND narrows to your hottest leads. One step uses a single joiner for the whole list, so the rows are all AND or all OR, never a mix.

Which conditions take a number, and which are just happened-or-not?

Two conditions count: Email opened and Link clicked. Those get an operator — at least, more than, exactly, at most, or fewer than — plus a number, so you can branch on "opened at least 3 times" rather than merely "opened". Everything else is a one-time signal that either happened or did not, with no number attached: Email replied, Email bounced, Wait timeout, LinkedIn invite accepted, LinkedIn reply received, and Has LinkedIn profile. There is no "did not happen" condition — every condition asks whether something happened, and the If NO branch is the path for everyone it did not happen to.

Why can't I add a LinkedIn condition alongside other conditions?

Because a LinkedIn signal does more than pick a branch. When WarmySender sees that someone accepted your invite or replied on LinkedIn, it 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 that reads "invite accepted OR email opened", we could not tell which one fired, so we would risk acting on LinkedIn based on something that never happened there. Account safety always wins, so a LinkedIn condition stays on its own step. The workaround takes ten 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.

Can I use brackets or nest conditions inside one step?

No — and you do not need to. One Condition step is a flat list joined by a single AND or a single OR, never a mix and never nested. To build something like "(opened at least 2 times OR clicked) AND has not replied", use two Condition steps in a row: the first holds Email opened at least 2 times OR Link clicked at least 1 time, 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.

Will multi-condition steps change my existing campaigns?

No. Every sequence you built before this keeps behaving exactly as it did — there is nothing to migrate, re-save, or re-launch, and no campaign needs to be paused or rebuilt. Multi-condition is purely additive: a Condition step only starts using the new behaviour once you deliberately add a second condition or pick a counting operator. Until you do, your steps evaluate the single signal they always did, with the same YES and NO branches going to the same places.

Still not sure how to express the branch you have in mind? Email [email protected] with the campaign name and what you are trying to catch, and we will happily sketch out the steps for you.