Should I send data from my website and my app to two separate Mixpanel projects or to the same project?

Mixpanel allows you to either send data from your website and app to the same project or to two separate projects, so it’s up to you to determine which is best for your business.

Factors to consider

  • Do you want to track and study cross-platform user behavior?
    • For example, do you foresee leveraging either platform to convert users to another platform or contributing to the other platform's retention? Or is it common for users to begin a flow on your web app and complete that flow on your mobile app?
    • If so, then you probably do want to study behavior cross-platform and should send the data to the same project. Sending data to two different projects means you won’t be able to easily compare any behavior from the app to the website or vice versa.
  • Do your app and website offer fundamentally different functionality?
    • If the purpose and features vary widely, you might consider using two different projects and analyzing each separately.
    • Sending both types of data to the same project could clutter your analytics for both mobile and web, as one platform's data can clutter the UI when you are trying to study the other's.

Best practice and recommendations

Generally speaking, Mixpanel users have more flexibility and get more valuable insights when combining the tracking of multiple platforms into a single project to study their overall user experience across platforms.

While we generally recommend sending data from all platforms to a single project, it’s also best practice to create separate development and production projects to avoid cluttering production data with test data, regardless of platform. Read more about separating out development data.

If you send Events from all platforms to one project, you can still differentiate actions taken on your app vs. website via segmentation and filtering using the Operating System property (the Mixpanel JavaScript, iOS, and Android libraries store the Operating System property by default):

If you would rather see simply mobile vs. web without differentiation by operating system, you can use the register() method to register a custom super property in all your implementations.

For example, web:

mixpanel.register({'Platform': 'Web'});

iOS:

Mixpanel *mixpanel = [Mixpanel sharedInstance];

// Send a "Platform: Mobile" property will be sent with all future track calls

[mixpanel registerSuperProperties:@{@"Platform": @"Mobile"}];

Android:

MixpanelAPI mixpanel =
MixpanelAPI.getInstance(context, MIXPANEL_TOKEN);

// A "Platform: Mobile" property will be sent with all future track calls

JSONObject props = new JSONObject();
props.put("Platform", "Mobile");
mixpanel.registerSuperProperties(props);

Additional considerations for cross-platform tracking

  • Make sure Events that are the same across platforms are named the same way. For example, you wouldn’t want to create an Event on your website called Sign in and an Event on your app called Log in if they represent the same user action.

  • Capitalization matters: calling one Event “Purchase” and one “purchase” will show as two different Events in your report dropdowns!

  • Ensure you’re handing user identity properly so that you can track users across platforms without counting them as a different user on each platform. Learn more about user identity best practices.

  • Advanced tip: You can initialize multiple instances of Mixpanel on the same app to send certain Events to their own, different project. This would allow you to send some Events to a different project if you have some different functionality on certain platforms and want to analyze that activity separately.