Why Can’t I Use Certain Event Data in Segments or Flow Splits?
Hey Klaviyo Community,
We’ve seen a lot of questions come up around using event data in segments or conditional splits — especially when it comes to fields like product names or categories from an order. If you’ve ever run into a situation where you think data should be available for filtering, but it’s not, this post is for you.
The Core Concept: Top-Level vs Nested Data
In Klaviyo, only top-level event data can be used in segments and conditional splits.
But what does that actually mean?
Top-Level Data = Filter-Friendly
Top-level data is any field that sits directly on the event — no digging through arrays or nested objects needed.
Example — Placed Order Event:
{
"event": "Placed Order",
"email": "customer@example.com",
"total_price": 49.99,
"shipping_country": "USA"
}
These fields (total_price, shipping_country, etc.) can be used in filters and splits, like:
- total_price > 50
- shipping_country = USA
Nested Data = Not Directly Usable in Filters
Nested data lives inside arrays or objects within the event. That makes it inaccessible for segments and splits — even though it’s still viewable in the event’s JSON.
Example of Nested Data:
"items": [
{
"product_name": "Wireless Headphones",
"price": 29.99
}
]
You won’t be able to create a filter like:
- items.product_name CONTAINS "Headphones"
So… What Can You Do?
If you want to filter based on product name or other nested info, consider flattening the data before it reaches Klaviyo.
Instead of:
"items": [
{"product_name": "Wireless Headphones"},
{"product_name": "USB Charger"}
]
Send something like:
"all_product_names": "Wireless Headphones, USB Charger"
Then you can filter with:
- all_product_names CONTAINS "Wireless Headphones"
Quick Summary
Can I use this in Segments/Flows? | Top-Level Data | Nested Data |
Segments | Yes | No |
Flow Conditional Splits | Yes | No |
Email Templates (event variables) | Yes | Yes |
If you’ve ever been confused about why some data works and some doesn’t — you're not alone. Hopefully this helps clarify how Klaviyo handles different types of event data.
You can also find a solution recipe here that highlights how to flatten data: Transform event data to access nested attributes for segmentation & Flow filtering
Have tips or creative workarounds for using nested data? Share them below and let’s learn from each other.