The step that splits a flow into True and False: the sixteen rule kinds, the rules filtered out per channel, the loop warnings, and where the step sits in a flow.
As long as a flow runs on one road, it says the same thing to everybody. The Condition step splits the road in two: it looks at the person, the conversation or the clock, makes its decision, and the flow continues from either True or . This guide covers the step's place in a flow, which rule kinds exist, what gets filtered out per channel, and what the pre-publish check looks at here.
False
💡 Building rules one by one, the difference between "All must match" and "Any is enough", and planning the two branches are covered step by step in The Condition step and branching. This article is about the step's behaviour inside the flow.
What it does
The Condition step sends nothing and changes nothing. It only looks and decides. Once it has decided, the flow continues from one of two branches.
The step has two outputs and they are fixed; you cannot add or remove any:
True — the rules matched.
False — they did not.
The step works on both channels. Because it sends nothing to the person, it has no relationship with the 24-hour window.
The step's settings
There are two settings.
The Rules dropdown takes two values: All must match (every rule has to hold) and Any is enough (one is sufficient).
Underneath sits the rule list. Add rules with Add rule and remove them with Remove rule. One step holds at most 20 rules.
Each rule has its own fields: a kind, an operator and, in most cases, a value. Some rules accept placeholders in the value field — that is how you compare one field against another (Comparing one field with another).
The sixteen rule kinds
These are the rule kinds available in the Condition step. What each does and how it is built is in the linked guides:
Trigger counter — counts how many times this condition has been passed. It differs from the rest: it has a side effect and must sit alone in its own step.
The exact meaning of the operators (equals, contains, empty, greater than…) is in Comparison operators.
Rules filtered out per channel
The rule list is filtered by the channel connected to your account. A rule with no counterpart does not appear in the menu:
Follow status only means something on Instagram; on WhatsApp the result is always "unknown".
The Post rule is only filled from comment and share context; in a WhatsApp conversation it is always empty.
These rules are not deleted from your older flows: the saved choice stays in the list and the pre-publish check warns you. The decision is yours.
What the pre-publish check looks at here
The Condition step produces more check lines than any other. What they mean:
Add a rule to the condition (error) — the rule list is empty. A condition with no rules always goes the same way.
A rule is incomplete (error) — a rule's value or field was left blank.
The trigger counter must be alone in its step (error) — the counter shares a step with another rule; the All/Any short circuit throws the count off.
This condition's value does not change within a run (warning) — every rule in a looping condition is of a kind whose value never changes in one run. The flow goes the same way on every turn and the loop never breaks. First contact, flow started by, post and channel always behave this way; in a loop with no waiting, follow status and messaging window do too.
The account's business hours are off (warning) — with the account's hours rule disabled, the Business hours condition always says "inside working hours".
Follow information is not always available (warning) — "unknown" is a real possibility; think about where the flow should go in that case too.
Unknown placeholder (warning) — the {{...}} key you typed into a rule value is not recognised and will be empty at run time.
An example
A café wants to answer messages differently outside opening hours.
They add the Any message trigger to the Start step.
They add a Condition step. Rules: All must match. One rule: Business hours → inside.
They connect a Message step to True: "Hi! We'll get back to you shortly ☕"
They connect another Message to False: "We're closed right now and open at 09:00. We'll answer first thing in the morning." After it they add an Action step applying the out-of-hours tag.
The result: one automation greets people two different ways and nobody is left unanswered.
Common mistakes
Leaving the False branch unconnected. The flow ends there quietly. Connect both branches; even if you do not want to say anything on one of them, put an End step there so your intent shows in the log.
Writing five rules under "All must match" and getting nobody through. The more rules, the narrower the True branch. Watch how many people take each branch on the automation's Stats tab.
Putting the counter in the same step as other rules. Publishing is blocked; the counter must stand alone.
Putting an unchanging condition inside a loop. If the "does not follow" branch returns to the same condition, the answer never changes and the loop never breaks.
Expecting follow status on a WhatsApp account. The result is always "unknown".
Trying to solve a three-way problem with one condition. To split three ways, chain conditions or use Random split or a message with buttons.
Limits
At most 20 rules in one condition step.
The outputs are fixed: True and False.
The trigger counter stands alone in its own step.
Follow status and post rules only mean something on Instagram.
The condition sends nothing to the person; it has no relationship with the 24-hour window.
Every rule kind is its own plan feature; with a rule out of scope, the run stops at the step.