Klaviyo Segmentation Fields: Every Field You Can Segment On
Short answer. Klaviyo's segment builder exposes six families of fields: native profile properties, custom properties, event conditions, predictive data, geolocation, and custom objects. Each family has its own operators, its own rules for showing up in the interface, and its own traps. The three that cost the most in practice: case sensitivity on text values, nested data that cannot be segmented, and profiles that do not carry the filtered property at all.
The first time a DTC brand opens the Klaviyo segment builder, it sees several categories of conditions, among them "Properties about someone", "What someone has done (or not done)" and "Predictive analytics". Behind those labels sit dozens of available fields, and just as many subtleties that produce empty segments when misread, or worse, segments that quietly exclude contacts.
This article is the reference for what you can segment on in Klaviyo. It sits alongside the guide to the six core segments (which covers which segments to build) and the custom properties guide (which covers how to populate profile fields). Here we map the raw material.
The six field families in the segment builder
1. Native profile properties
These are the fields Klaviyo populates automatically or through ecommerce integrations (Shopify, BigCommerce, WooCommerce). They appear under "Properties about someone".
| Field | Type | Typical operators |
|---|---|---|
| string | equals, contains, starts with, ends with | |
| First name / Last name | string | equals, contains, is set, is not set |
| City, Region, Country | string | equals, does not equal, contains |
| Phone number | string | is set, is not set |
| Consent (email / SMS) | status | equals |
| Date added to list | datetime | before, after, in the last, between |
These fields are always available, with no configuration. They form the minimum viable segmentation layer.
Watch out: text values are compared as they are stored. "London" and "london" do not behave as the same value in an "equals" condition. If your imported data contains case variations, normalise them before segmenting, or use a more forgiving operator such as "contains".
2. Custom properties
These are the fields you add to profiles yourself, through the API, Klaviyo forms, Shopify metafields, or third-party integrations. They appear in the same "Properties about someone" block as the native ones, once at least one profile carries the property.
Visibility rule: a custom property has to exist on at least one profile before it shows up in the segment builder. If you just created a field through the API and it is missing from the list, first check that the call actually landed on a real profile.
Limits worth knowing: there is no documented cap on the number of distinct properties per profile, but the total payload of a profile (identifiers, native fields, and custom properties combined) is capped at 100 KB. Accepted types and population methods are covered in our custom properties guide.
What is segmentable and what is not:
Top-level properties are the ones you can work with in the segment builder. If you send a nested JSON object like this one:
{
"preferences": {
"colour": "blue",
"size": "M"
}
}
you will not be able to build a reliable condition on preferences.colour. The fix: flatten your data into separate properties (preference_colour, preference_size) at the point where you push it into Klaviyo, rather than hoping to retrieve it later.
3. Event conditions
The "What someone has done (or not done)" conditions let you segment on tracked events: Placed Order, Viewed Product, Started Checkout, Opened Email, Clicked Email, and any custom event sent through the API.
Every event condition accepts multiple filters. Those filters read the event properties: cart value, product name, category, UTM source.
A concrete example: you want contacts who placed an order above €150 in the "skincare" category over the last 60 days. The "Placed Order at least once in last 60 days" condition then carries two event filters: $value > 150 and Categories contains skincare.
The common trap with "has not done" conditions: when you build a negative condition ("has not done X"), Klaviyo keeps every contact with no matching event. A contact who was simply never tracked on that event, because they were just imported for instance, lands inside the segment. That is how "has not done" works: the absence of an event is a valid match.
4. Predictive analytics
Klaviyo calculates predictive scores on profiles: Expected Date of Next Order, Predicted Customer Lifetime Value, Predicted Gender, Average Order Value, Churn Risk, Historic CLV.
These fields are not available by default. They assume a connected ecommerce integration, a minimum order volume in the account, and at least twelve months of order history before the values are usable. Our article on Klaviyo predictive analytics covers those prerequisites, the operational use cases, and how often the scores are recalculated.
If your account does not meet those conditions, the predictive fields stay empty or absent from the segment builder. No error message, no notification.
How they are used in segmentation: predictive fields build segments such as "high potential customers" (high predicted CLV) or "customers at risk of churning" (high churn risk), where a classic rule-based segment would settle for a number of days since the last order.
5. Geolocation
Klaviyo infers location from engagement data and from what your ecommerce platform passes through. The available fields: country, region or state, city, postal code, plus a proximity condition ("within X miles of").
Proximity condition: it is not available everywhere. Coverage depends on the countries Klaviyo supports, so check it works in your market before building a targeting plan on top of it. Where it is available, it is a clean lever for local campaigns: store opening, physical event, express delivery zone.
You can also select several postal codes inside a single condition, which saves you from creating one segment per catchment area.
6. Custom objects
Custom objects are a relational data layer that takes you beyond the flat profile. They attach structured entities to a profile: a subscription, a contract, a vehicle, a pet.
In segmentation, conditions built on a custom object filter on that object's fields. Availability of custom objects depends on your Klaviyo plan.
A typical DTC use case: a pet nutrition brand attaches a "pet" object to each profile (species, breed, weight, date of birth) and targets campaigns by pet type, without duplicating that information into profile properties for every animal in the household.
The boundaries of the segment builder
Two boundaries shape what you can build. Neither blocks day-to-day work, but both show up on complex segments.
- Profile data size: the total payload of a profile is capped at 100 KB. A property that stores a full history as JSON burns that budget for nothing, since it will not be segmentable in depth anyway.
- Data depth: one level only. Anything nested has to be surfaced flat before it can become a segment criterion.
Past those technical boundaries, the real limit is editorial. A segment that stacks condition after condition is trying to do too many things at once. Break it into simpler segments and combine them at send time.
Five traps that break your segments quietly
1. Case sensitivity in text values
A CSV import that mixes "VIP", "vip" and "Vip" in the same property creates three distinct values. The segment "equals VIP" catches only the first. Normalise your data upstream, in your source of truth, not in Klaviyo.
2. Properties missing from the profile
A profile that does not carry the filtered property at all is not treated as a profile whose value happens to differ: the condition simply ignores it. If you just created a loyalty_programme property and your "loyalty_programme is not Gold" segment is far smaller than expected, most of your profiles do not carry the field yet.
3. Relative time conditions
Segments are evaluated in real time. A contact who opens an email at 2pm enters the "Opened Email in last 30 days" segment as soon as the event arrives: the event itself triggers the profile's re-evaluation.
The point to watch sits at the other end of the rolling window. When the thirtieth day passes and no new event wakes the profile up, the exit from the segment is not necessarily accurate to the minute. An "in the last 30 days" segment can therefore still contain contacts who have only just fallen outside the window.
For flows this lag has no effect, since the trigger is the event and not the segment. For a campaign targeting a segment with a relative time condition, check its size and let it finish calculating before you schedule the send.
4. Nested data you cannot reach
Data stored in sub-objects or deep structures (the Extra or Details fields of some integrations) does not make a reliable segment criterion. If you depend on it, extract it into top-level properties at ingestion time, through the Klaviyo API.
5. Mistaking "contains" for "equals"
"Equals" expects an exact match on the whole value. "Contains" checks for the presence of a value inside the field, and on a list (array) property it tests whether the array holds the element you specify. If you segment on tags or categories stored as an array, "contains" is the operator you need, not "equals". Which operators are available per property type is detailed in our custom properties guide.
Checklist: preparing your data for clean segmentation
Before you build your segments, review your data:
- Normalise case: convert every text value to lowercase or Title Case, consistently
- Flatten nested objects: turn JSON structures into top-level properties
- Check coverage: a property that exists on 3% of profiles produces a segment of 3% at best
- Type your dates properly: send dates in ISO 8601 format, not free text ("15 March 2026" does not work as a date filter)
- Document your properties: maintain an internal data dictionary listing each property, its expected type, and its source
This data hygiene determines the quality of your segmentation far more than the sophistication of your conditions. A brilliant segment built on dirty data returns wrong answers.
Segments or flow filters: where to put the condition
The fields described here can be used in two places: in segments (for campaigns) and in flow filters or conditional splits (for automations).
The decision rule fits in one line. If the condition defines who receives something, it belongs in a segment. If it personalises the journey of a contact already inside a flow, it belongs in a flow filter or a conditional split.
Our article on flows vs campaigns develops that distinction. For predictive segmentation applied to retention, the winback flow guide shows how to use churn risk inside a conditional split.
If you want a second pair of eyes on your data model before you rebuild your segments, book a Klaviyo and CRM diagnostic.
FAQ
Why is my custom property missing from the segment builder?
A custom property has to exist on at least one profile before it is offered in the segment builder. Check that a profile actually carries it, and that the field name matches exactly what you are looking for, case included.
Do Klaviyo segments update in real time?
Yes. Klaviyo segments are dynamic: a contact enters or leaves based on the conditions, in real time. The calculation itself is not instant: a few seconds on a small list, several minutes on a large one with complex conditions, as detailed in our guide to the six core segments. On a relative time condition ("in the last X days"), entry on a fresh event is immediate; it is the exit, when the rolling window expires with no new event, that can lag slightly. Do not schedule a send on a segment that has not finished calculating.
Can you segment on data nested inside a JSON object?
Not reliably. The segment builder works on top-level properties. Values buried in sub-objects have to be surfaced as separate flat properties before they can become segment criteria.
What are the prerequisites for using predictive fields in segmentation?
A connected ecommerce integration, a minimum order volume, and at least twelve months of history. Below that, predictive properties stay empty or unreliable, and a classic rule-based segment performs better. The detail is in our Klaviyo predictive analytics guide.
What happens to an imported contact with no history in a "has not done" condition?
They enter the segment. A negative condition keeps every profile with no matching event, including those that were never tracked. If you are targeting non-buyers, add a condition on the date added to the list to exclude contacts who are too recent.
```
Want to apply this to your stack?
Spend 30 minutes with Charlotte to review your CRM setup, size the opportunity and leave with a practical action plan.
Book a 30-minute call →