Building a condition
A Condition step splits the people in a flow into two paths — a Yes path and a No path — based on what you know about them. A Goal uses exactly the same builder to describe an outcome.
You never type the values
This is the thing worth knowing up front, because the old condition editor worked the other way round and people still expect it to.
Every part of a condition is chosen from a list built from your own data:
- the event comes from a list of the events your account can actually receive, with plain-English names like "Placed Order" — not codes you have to remember;
- the properties you can filter that event by are the ones that event actually carries, and each offers only the operators that make sense for its type (an amount offers "is at least", a name offers "contains");
- tags and audiences are pickers of the tags and lists you really have;
- contact properties include any custom field your imports or connections have registered.
If you find yourself guessing at a value, that is a bug, not your mistake.
The kinds of condition
Choose the kind first; the rest of the row changes to match.
- What someone has done (or not done) — orders, site activity, email engagement. Counting, over a period, optionally filtered by the event's own properties.
- If someone can or cannot receive marketing — real deliverability, not just the opt-in flag. This is what the send pipeline will actually accept.
- Customer value and order history — lifetime value, order count, average order value.
- If someone is in or not in a list.
- Properties about someone — name, email, or a custom field.
- If someone has a tag.
- When something happened to the profile — joined, last messaged, or a date field such as a renewal date.
- Where someone is — country, city, region, or EU/GDPR.
- A nested group — for mixing AND and OR together.
"Has not done this" is a count of zero
There is no separate "did not" condition, and looking for one is the most common way people get stuck.
"Has not purchased" is the Placed Order event with the frequency set to zero times. The frequency list reads in plain English — "at least once", "zero times" — so you are not asked to type a 0 or a 1.
This is how you build "keep emailing until they buy". See Condition recipes for that one written out.
Combining conditions
Add rows and set the connector between them to AND or OR. AND binds tighter than OR, the way it does in arithmetic — so A AND B OR C means (A AND B) OR C.
For anything more involved, add a nested group, which is a condition containing its own conditions with its own connector. Two levels of nesting is usually the point where a second Condition step further down the flow is clearer than one very clever rule.
"Since they entered this flow"
Inside an automation, every timeframe offers one extra option that segments do not have: since they entered this flow.
It is almost always the one you want. "Has not purchased" over all time excludes anyone who has ever bought from you, which quietly empties a win-back or onboarding sequence before it sends anything. Anchored to the flow, it means "has not purchased since this sequence started", which is what you meant.
An empty condition matches nobody
A Condition step with no rules sends everyone down the No path. That is deliberate — an unfinished rule should not silently apply to your whole list — and the pre-publish checks flag it before the flow goes live.
Next: open your automation, click a Condition step, and pick the kind of condition from the first dropdown.
Related articles
Ask Agent PK in your dashboard
Agent PK answers from these same articles, looks at your own account, and can do the task for you once you confirm. Open it from the top bar in the dashboard.