Klaviyo flow not branching correctly? Your event property coverage is the bug
Every DTC operator has built a Klaviyo flow that should split on a customer property (is_first_order, lifetime_value, last_order_source) and watched it silently send the same email to everyone. The flow logic looks correct. The branching split shows up in the visual editor. Profiles are flowing through. But the branches don't actually split.
The fix is almost never the flow. It's the event properties on the underlying trigger event. Klaviyo flow conditions evaluate against the event payload, not against profile properties (mostly). If the property you're branching on isn't present on the triggering event, the branch defaults to the false path. Silently.
The diagnostic
Open Klaviyo → Analytics → Metrics → pick the metric your flow is triggered on (Placed Order, Started Checkout, etc.) → click into a recent event → look at the Event Properties panel.
Is the property your flow is branching on present? Is it spelled exactly the same way? Is the value the right type (string vs number vs boolean)?
If any of those is no, your flow is silently defaulting to the false branch every time.
Three common cases
- Branching on is_first_order but the property isn't on the event. Fix: enrich the Placed Order event with is_first_order via the Klaviyo API at order-creation time, or use Shopify Flow to compute it and pass it through.
- Branching on a customer property that should be a profile property. Profile-based conditions are checked against the profile at evaluation time, not at trigger time. Make sure you're using the Klaviyo profile property condition, not the event property condition.
- Branching on a numeric range but the property is a string. lifetime_value > 200 won't match '250.00' as a string. Convert at the source or use Klaviyo's number-coercion conditions.
How DataGap detects this
We pull your Klaviyo flow definitions and event property volumes via the API. If a flow branches on event.is_first_order but the underlying metric never carries that property, we flag it as a critical gap with the exact flow name. Audit takes 10 minutes; $167 one-time.
DataGap connects to your Shopify store via read-only OAuth and returns a ranked list of tracking gaps in 10 minutes. $167 one-time. No subscription.
Run a free auditFrequently asked
Klaviyo's editor doesn't statically check whether the property you're branching on actually exists on the triggering event. The flow runs, the condition silently evaluates false, and you have to inspect the analytics to spot it.