Randomly Segment a Segment

  • 12 September 2023
  • 4 replies

Badge +2

We currently have a segment template we use lets call that our “mailable list”. I would like to build 2 new segments based on that segment. There would be randomly split into 75% and 25% but that 75 and 25 should remain the same. So if Joe smith gets placed in the 75% segment he would remain there throughout. But if they no longer meet the requirements of the original segment they would fall off like normal. And any new people that meet these requirements would go between both new segments keeping the 75-25 split. 

Is this even possible?

If so how would i go about doing this split?


Best answer by retention 12 September 2023, 21:24

View original

4 replies

Userlevel 7
Badge +57

Hi @ewitman, welcome to the community! (noticed it was your first post).

I’m working on a piece of content about “bucket testing” that I think applies to what you’re doing.  I’ll share this more broadly once it’s done, but let me give you the short version first and then let me know if you have any questions.

The easiest way to put people into your 75/25 or any number or split of groups is to create a Custom Profile Property and assign each a group tag.  You can create a new Custom Profile Property called “group” or “test_group” or something similar, and give it an integer value like 1, 2, 3, … and so forth.  There’s a specific reason why I use numbers, but I’ll spare you the details of that later.

Then, create what we call a “Utility Flow” in Klaviyo for each and every new person that enters your “mailable List.” The purpose of this Flow is to simply update that Custom Property “group” with a value like 1, 2, … and so forth.  How do you get a 75/25 split?  Well, you can use the “Random Sample” Conditional Split Block that samples X% into path A, and the rest in path B.  Those in Path A gets a value of “1” for the “group” field and those in Path B gets “2” and so forth if you have more than 2 groups.  Now, for every person coming into the Flow, they will be assigned a group number as part of their Profile according to the weighted split.

Finally, since all your existing past subscribers don’t have this value yet since they are not new signups, you can either 1) Export the List and update it manually (75% gets 1, 25% gets 2 or whatever split you want) and then reimport it back into Klaviyo or 2) Build a Segment Triggered Flow of all the folks that don’t have that field that then goes through a similar Utility Flow you created above.  Whichever is easier for you.  Now all your Subscribers should have this new “group” field so you can build your Segments of 75/25, and they will stay in the group they were assigned perpetually. 

Here’s a few documentation I linked that might be useful:

This is fairly complicated process, so I’m working on a more detailed walk through of this, if you Subscribe to this thread I’ll update it here when I’m done.  No promises when I'll have that done though, it’s getting busy!  But, drop any questions so either I or others can help you further if the above doesn’t make sense.

Joseph Hsieh // // twitter: @retenion 

Badge +2

So we are generally sending 1 off emails to this group via campaigns, would i be able to have a flow that adds this data to each contact as they become eligble for the mailable list and then use that data to segment the audience properly?

Userlevel 7
Badge +43

@ewitman, a flow would indeed be an option, depending on the list size you could also just do an export with email address only for each segment, add a new column with group name or however you want to call this group and enter value 1 and 2 or A and B - export this list to csv.

Then create a new list in Klaviyo and import the CSV with 2 columns. In short you'll only be adding 1 profile property to this email address. You can remove the list once done.

As for the 75/25 split, I'm curious to hear more about the use case. What are you testing or planning to do? Sometime a bit of context helps in finding a (better) solution. 

As for how to set things up it seems like @retention is brewing up some magic for you.

Based on the above, once you have the profile properties set you just need to create you segment conditions and add the profile property 1 or 2 (or A/B) to each separate segment and use it.


Omar Lovert // Polaris Growth // Klaviyo Master Platinum Partner

We help with e-commerce growth through CRO, Klaviyo and CVO

Userlevel 5
Badge +17



the easiest way to do this would be a conditional split in a flow with a random sample.



Send 75% of the people down one path and the remaining 25% will go down the other side. 

On each branch add a “create profile property” step 

Name the property something you will remember and then assign a value to it.

ex. Random Split = A or B


Then you can use that profile property as a condition in your segments. 


To update existing subscribers:

  • Create a segment of all the people you want to update with this profile property
  • Build your flow as mentioned above and have it trigger by that segment
  • Back populate the flow


To update new subscribers: 

  • create a new flow that is triggered by being added to your main list (whatever list you have your forms and eCommerce platform integrated with
  • add the same conditional split and create profile property steps


Hope that helps!