How do dynamic conditions work inside flows?
Still have a question, spotted an error, or have a better explanation or a source we should cite?
Imagine you set up a welcome flow and, three days in, a contact buys something. Without dynamic conditions, they'd still get the "haven't bought yet" nudge. With dynamic conditions, the flow checks who they are right now and routes them accordingly.
Here's how it actually works. At specific decision points inside a flow, the system pauses and checks a live piece of data about the recipient. Not the data from when they entered the flow. The data as it stands at that exact moment. That's the "dynamic" part.
So if your condition is "Is the subscriber currently in the VIP segment?" and they got promoted to VIP two days after entering the flow, the check will catch that. They go down the VIP path, not the standard one.
The four most common things you can check with a dynamic condition are:
- Segment membership. Are they currently in a named group or not? (The key word is "currently.")
- Engagement history. Did they open or click a specific email, or convert from a previous step?
- Field values. What does a data field say about them right now? Location, preference, plan type, lifetime spend.
- Behavioral history. What have they actually done? Pages visited, products browsed, purchases made.
A real example helps. Say you're running a post-purchase flow in Klaviyo. Three days after the first purchase, you add a condition: "Has Purchase Count greater than 1?" If yes, they go to a loyalty track. If no, they get a gentle second-purchase nudge. That split is powered by a dynamic condition reading the purchase count field at the moment the flow reaches that step.
One thing that trips people up: the condition only checks data you actually have available. If purchase count isn't being synced to your ESP from your store, the condition can't evaluate it. Before building complex logic, check that your data fields are populated and current. (This sounds obvious. It's where most broken flows come from.)
Dynamic conditions are also what make behavior-based filtering possible inside flows. Instead of sending everyone the same path, you're essentially asking the flow to re-evaluate each person at each fork in the road.
If you want to go deeper on the segmentation side of this, the question on static vs dynamic segmentation is a natural next read. And if you're trying to build something and it's not behaving the way you expect, our SOS hotline is free.
Contributors
Who worked on this answer
Every name links to their profile. Every company links to their site. Real people, real accountability.