Problems implementing segmentation using our Internal ID

  • 9 May 2022
  • 1 reply

We are implementing our first Mixpanel project and we have found an issue that we don’t know if we have solved it correctly.

Our implementation has users that can login or not to use our product depending if they are in the paid tier or not, if they login, we assign them our internal User ID that comes from our CRM,.

We have been able to do the merge id properly and once a user has logged in, the internal user id shows up in the Distinct ID cluster, the problem is that the Canonical ID does not update to our internal ID and remains the random Distinct ID that Mixpanel assigned, so if for example we want to segment all our paid users that have used the product in the last month and email them a training offer, we cannot individually identify them.

The solution that we have found is to create a User Profile Property called Internal ID that, if the user is logged in, will show our internal ID and if not, the random ID that Mixpanel generates.
Is this the correct implementation?


Best answer by linyee 18 May 2022, 05:00

View original

1 reply

Badge +2

You are certainly on the right track -- storing the internal ID as a user property!

As you know, Mixpanel will collect multiple distinct_ids to one user in order to connect their journey and associated data. This means that most tracked users won’t have one distinct_id, but a collection of them. This identifier is called the canonical distinct_idwhich is reflected as the top ID in the cluster. Since Mixpanel's backend applies logic to select the canonical distinct_id, you are not able to choose which distinct_id you've sent in the past is considered the canonical distinct_id, and the canonical distinct_id can change from one value to another in the future as well.
With that in mind, we usually recommend setting your users' internal ID as their own user profile property, which you can use to search and browse their events.