Configuring it
Three parts: the variable, the comparison, and, for most comparisons, a value.
Comparison is case-insensitive and ignores surrounding spaces, so
Pro matches pro . The panel summarises the wiring in a sentence (runs take the Yes branch when the variable matches, the No branch otherwise), so there’s no guessing which handle is which.
Which variables you can pick
The picker offers up to three groups:- Store variables, available on every trigger, resolved from the store the flow is running for.
- Trigger variables, carried by the event itself:
subscription_plan,charge_name,event_quantityand the rest. - Event properties, on the two triggers with a metered event behind them, Custom event is tracked and Usage view crosses a threshold: the properties your app sends with the event.
Event properties
When the trigger names one event, the picker lists the properties that event’s recent rows actually carried, each with the share of them holding it:total_price · on 100% of recent events, e.g. 512.5. It’s a sample of your history, so it tells you up front what a skip counter would otherwise tell you afterwards.
On Custom event is tracked that is the custom event the trigger watches. On Usage view crosses a threshold it is the event the chosen view reads, since a view is defined over exactly one event key. Pick neither and the picker has nothing to sample, so you type the property instead.
It is a sample, not a rule. Use another property… takes any property path you type, which is the case that matters when the release you’re shipping starts sending something your history has never held. Nothing about the sample gates saving or activation.
An event property has no declared type: its shape is yours, and the same property can arrive as a number in one release and a word in the next. So every comparison is offered, and the one you pick is what says how the value is read:
A value the comparison can’t read never matches: is greater than 500 against
"expensive" takes the No branch rather than erring. And a bound the comparison can’t read is refused at activation: you can’t activate a flow comparing a number against a word.
Contact variables can’t be used here. Conditions are evaluated before a recipient is known, so a per-recipient value has nothing to resolve against; they exist in the email editor only.
Empty values
A variable the trigger didn’t carry resolves to an empty string, which is exactly what is empty tests. That’s the honest way to branch on “did this event carry a plan name at all” instead of comparing against a blank string. This is how a missing event property behaves too, and it’s deliberate: an absentproperties.total_price is never treated as 0. The condition takes the No branch, negative comparisons included. Silence is not disagreement.
Deleted variables
Custom fields join the variable catalog ascustom_field_<handle>. Delete the field and the condition references a variable that no longer exists, so the builder flags it and blocks activation.