Skip to main content

I am building a trial onboarding flow but I’m struggling to get the conditional split to work.

We use a Typeform form to collect customer information when they sign up for a trial. In one of the questions we ask them what education sector they are interested in. They can choose any combination of: Childminding, Nursery, Preschool, Reception, Key Stage 1, Key Stage 2, SEND, International Education, Independent School, Homeschooling and Wrap Around Care. 

When mapping the form out from Typeform to Klaviyo, this question transfers as a custom property: Education sector.

As users can choose multiple options we have a variety of cases, for example:

  • Nursery
  • Nursery, SEND
  • Key Stage 1, Homeschooling
  • Nursery, Preschool, Reception

I want to personalise their flow based on their choices. 

So, the first split would be to determine whether they are in early years with the following logic:

Properties about someone > Education sector contains Childminding

OR

Properties about someone > Education sector contains Nursery

OR

Properties about someone > Education sector contains Preschool

OR

Properties about someone > Education sector contains Reception

 

 

 NOTE: I am not typing the education sectors, I am selecting from the drop down menu Klaviyo provides, as these properties already exist in my account.

 

In theory, anyone with Childminding, Nursery, Preschool or Reception in their Education sector custom property would be sent to the YES. At this point there would be another conditional split to determine whether there’s Key Stage present:

Properties about someone > Education sector contains Key Stage 1

OR

Properties about someone > Education sector contains Key Stage 2

YES: receives a flow which contains early years and key stage.

NO: receives a flow containing only early years.

The entire flow is much more complicated with multiple branches, but for the purpose of this query this example will suffice. 

 

Now, my issue is, when I preview the flow, my sample profiles are not following the expected path. 

For example, I have this user who has selected ‘Childminding’. I would expect them to go down the YES path after the first split, but they are being sent down the NO path.

 

This happens with every example I’m testing it with, regardless of the profile containing only one education sector or multiple.

I have troubleshooted as much as I could think of:

  • I checked the raw stored value by exporting a profile and checking how the custom property ‘Education sector’ is being stored. So I checked for leading/trailing spaces, weird spacing and hidden characters.

In the below example, the user selected SEND and Independent School, and this is how the JSON file is showing it:

  • I confirmed that the value exists before the split runs by adding a 2 minute delay before the split and re-running.
  • I have made sure that I am matching the exact capitalisation and spacing.
  • I have checked for multiple stored values in one string. I am matching the filter exactly as it appears in the custom property, making sure there are no double spaces after commas or inconsistent separators.

 

I don’t know what else to do!

Hi ​@hopithop – thanks for posting! I am not sure if this will help, but I wonder if it is having trouble scanning through discrete items within the list because of the formatting (like it cannot figure out that SEND is inside of the list “SEND, Independent School”). I would try switching the type from list to text to see if that might allow the program to look through the text included in the last rather than the list as a whole. Let me know if that makes any difference!


Hi ​@hopithop 

If ​@rqcha ‘s solution doesn’t work, try the “is in” filter option instead of “contains”.

I’ve definitely stumbled across this issue before in the past - you’re not the only one!


@rqcha ah you legend! Changing the type from list to text worked a treat! Thank you so much!

@ross_hopkins thanks to you too! Good tip for the future.


I ran into this too when my custom property had multiple items. Klaviyo’s conditional split with "contains" treats the entire field as one string, so if the property holds a list, it only matches when the full entry exactly matches your condition. A good workaround is to normalize your values before they hit Klaviyo, like sending them as distinct flags or a dedicated profile property per item. That way the split behaves predictably. If you want help narrowing this down, happy to bounce ideas.