Mutual Exclusivity with Taplytics

1. Setup Custom Data for Mutual Exclusivity Groups

In our platform, mutual exclusivity can be achieved today by leveraging custom user data to create simple target groups that can be used across experiments. Here are some examples of ways to assign target groups to users.

Option 1 - Test Groups

Creating Alpha/Beta test groups or similar.

JSONObject attributes = new JSONObject();
attributes.put("test_group", "alpha"); // Users should either be in alpha or beta
Taplytics.setUserAttributes(attributes);

Option 2 - Random Bucket

Creating a randomized bucket index for each user.

Random random = new Random(); 
int min = 1; int max = 10; // could use min = 0 as a way to set 0 as holdout group
int x = random.nextInt((max-min)+1) + min;

JSONObject attributes = new JSONObject();
attributes.put("random_bucket", x); // Make sure x persists for user through all sessions
Taplytics.setUserAttributes(attributes);

2. Setup Mutually Exclusive Experiments

Once users have been assigned a random bucket, you can set up the segmentation filters of your mutually exclusive experiments using the custom data passed in above. For example, you have two Experiments that you would like to roll out to two mutually exclusive groups: “Experiment 1” and “Experiment 2”. Based on which approach you took above, you will do the following:

Option 1:

  • Segment “Experiment 1” to Custom User Data -> test_group is “alpha”
  • Segment “Experiment 2” to Custom User Data -> test_group is “beta”

Option 2:

  • Segment “Experiment 1” to Custom User Data -> random_bucket is <= 5
  • Segment “Experiment 2” to Custom User Data -> random_bucket is >= 6