Skip to content

Staging branch for CS team to work on tutorials #33

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 123 commits into from
May 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
7cbbe9b
Unhide tutorials
Apr 24, 2023
a601e98
remove tutorials.mdx
Apr 25, 2023
5dbbb53
Create creating-a-tracking-plan
PeishanFromMixpanel Apr 27, 2023
ec09c47
Create migrating-to-mixpanel-from-amplitude
PeishanFromMixpanel Apr 27, 2023
0016ae6
Rename chapter-1.md to plan-your-implementation.md
PeishanFromMixpanel Apr 27, 2023
7499072
Update and rename chapter-2.md to mixpanel-101.md
PeishanFromMixpanel Apr 27, 2023
2ca1f7d
Update _meta.json
PeishanFromMixpanel Apr 27, 2023
a5ee1ca
Update _meta.json
PeishanFromMixpanel Apr 27, 2023
ec243e5
Update _meta.json
PeishanFromMixpanel Apr 27, 2023
f7092ca
Rename migrating-to-mixpanel-from-amplitude to migrating-to-mixpanel-…
PeishanFromMixpanel Apr 27, 2023
7e895d9
Rename creating-a-tracking-plan to creating-a-tracking-plan.md
PeishanFromMixpanel Apr 27, 2023
d6123a8
Update creating-a-tracking-plan.md
PeishanFromMixpanel Apr 27, 2023
6680179
Update mixpanel-101.md
PeishanFromMixpanel Apr 27, 2023
b6dba22
Update migrating-to-mixpanel-from-amplitude.md
PeishanFromMixpanel Apr 27, 2023
8774eb5
Create mixpanel-for-developers-fundamentals.md
naitik-mixpanel Apr 28, 2023
6785e73
Update mixpanel-for-developers-fundamentals.md
naitik-mixpanel Apr 28, 2023
0e9ee1b
Create mixpanel-for-developers-implementation.md
naitik-mixpanel Apr 28, 2023
c598275
Create mixpanel-for-developers-id-management.md
naitik-mixpanel Apr 28, 2023
3f3ebd9
Update mixpanel-for-developers-implementation.md
naitik-mixpanel Apr 28, 2023
3682945
Update mixpanel-for-developers-implementation.md
naitik-mixpanel Apr 28, 2023
8534416
Update mixpanel-for-developers-id-management.md
naitik-mixpanel Apr 28, 2023
9e2cd38
Update mixpanel-for-developers-id-management.md
naitik-mixpanel Apr 28, 2023
4577be7
Update mixpanel-for-developers-implementation.md
naitik-mixpanel Apr 28, 2023
f5ef1eb
Add mixpanel 101 overview
wisey29 May 8, 2023
420c8d6
Create folder
wisey29 May 8, 2023
e302524
Delete overview.md
wisey29 May 8, 2023
424c86c
Update and rename mixpanel-101.md to mixpanel-101.mdx
wisey29 May 8, 2023
4230ed4
Update embedded video
wisey29 May 8, 2023
5c89ef5
Update mixpanel-101.mdx
wisey29 May 8, 2023
4da5d57
Delete data_model.mdx
wisey29 May 8, 2023
df43c58
Update Insights section
wisey29 May 8, 2023
9e77381
Update creating-a-tracking-plan.md
kurbycchua May 8, 2023
d38f1aa
Update creating-a-tracking-plan.md
kurbycchua May 8, 2023
aa96ff1
Creating sub-folder for Mixpanel for Developers
kurbycchua May 8, 2023
538de35
Update mixpanel-101.mdx
wisey29 May 8, 2023
d09d09b
Update _meta.json
kurbycchua May 8, 2023
4c8714b
Add files via upload
kurbycchua May 8, 2023
db1e839
Delete mixpanel-for-developers-fundamentals.md
kurbycchua May 8, 2023
bd6f2ff
Delete mixpanel-for-developers-id-management.md
kurbycchua May 8, 2023
3e4af5c
Delete mixpanel-for-developers-implementation.md
kurbycchua May 8, 2023
b9cc028
Update mixpanel-for-developers-fundamentals.md
kurbycchua May 8, 2023
d7b3af9
Update mixpanel-for-developers-id-management.md
kurbycchua May 8, 2023
19e0850
Upload mixpanel 101 folder
wisey29 May 8, 2023
b553624
Update mixpanel-for-developers-implementation.md
kurbycchua May 8, 2023
ce3a196
Update _meta.json
wisey29 May 8, 2023
d1041b2
Rename mixpanel-for-developers-fundamentals.md to mixpanel-for-develo…
kurbycchua May 8, 2023
1e4a8bd
Rename mixpanel-for-developers-id-management.md to mixpanel-for-devel…
kurbycchua May 8, 2023
54c61c2
Rename mixpanel-for-developers-implementation.md to mixpanel-for-deve…
kurbycchua May 8, 2023
477a9a0
Update _meta.json
wisey29 May 8, 2023
f3cb348
Create _meta.json
wisey29 May 8, 2023
b4239e8
Update _meta.json
wisey29 May 8, 2023
e2f6728
Create overview.md
wisey29 May 8, 2023
4b76b62
Update _meta.json
wisey29 May 8, 2023
70ee2c3
Update data-model.mdx
wisey29 May 8, 2023
719a589
Update overview.md
wisey29 May 8, 2023
267b106
Update data-model.mdx
wisey29 May 8, 2023
2febc50
Update board.mdx
wisey29 May 8, 2023
9dac092
Update data-model.mdx
wisey29 May 8, 2023
d558eb6
Update board.mdx
wisey29 May 8, 2023
809faf9
Update cohort.mdx
wisey29 May 8, 2023
7109026
Update data-management.mdx
wisey29 May 8, 2023
ee301b0
Update flows.mdx
wisey29 May 8, 2023
bf7f4b3
Update data-model.mdx
wisey29 May 8, 2023
920bec5
Update board.mdx
wisey29 May 8, 2023
6e9aa1d
Update board.mdx
wisey29 May 8, 2023
3873422
Update cohort.mdx
wisey29 May 8, 2023
6811b43
Update data-management.mdx
wisey29 May 8, 2023
bd3ae45
Update data-model.mdx
wisey29 May 8, 2023
b9fcb42
Update flows.mdx
wisey29 May 8, 2023
4199f7c
Update funnels.mdx
wisey29 May 8, 2023
b8d25df
Update impact.mdx
wisey29 May 8, 2023
82cf5cf
Update insights.mdx
wisey29 May 8, 2023
62b836b
Update retention.mdx
wisey29 May 8, 2023
d3adb70
Update signal.mdx
wisey29 May 8, 2023
7145fe8
Update data-management.mdx
wisey29 May 8, 2023
0cec827
Update cohort.mdx
wisey29 May 8, 2023
a8be930
Update mixpanel-for-developers-fundamentals.mdx
kurbycchua May 8, 2023
96bad55
Update insights.mdx
wisey29 May 8, 2023
cc34687
Update insights.mdx
wisey29 May 8, 2023
4d0853a
Update funnels.mdx
wisey29 May 8, 2023
bb3bb19
Update insights.mdx
wisey29 May 8, 2023
f4f58ff
Update retention.mdx
wisey29 May 8, 2023
cea5640
Update data-management.mdx
wisey29 May 8, 2023
aa3e3fe
Update cohort.mdx
wisey29 May 8, 2023
973ed7a
Update cohort.mdx
wisey29 May 8, 2023
cd2b41a
Update board.mdx
wisey29 May 8, 2023
5d89f16
Update insights.mdx
wisey29 May 8, 2023
18eb600
Update insights.mdx
wisey29 May 8, 2023
738e359
Update board.mdx
wisey29 May 8, 2023
5fcc998
Update mixpanel-for-developers-implementation.mdx
kurbycchua May 8, 2023
9b0d57e
Update mixpanel-for-developers-implementation.mdx
kurbycchua May 8, 2023
8dc4c07
Update mixpanel-for-developers-implementation.mdx
kurbycchua May 8, 2023
2d94136
Delete mixpanel-101.mdx
wisey29 May 8, 2023
7313f78
Update mixpanel-for-developers-implementation.mdx
kurbycchua May 8, 2023
8a05f17
Update _meta.json
wisey29 May 8, 2023
592ab29
Update creating-a-tracking-plan.md
kurbycchua May 8, 2023
635465b
Create analytics-strategy.md
wisey29 May 8, 2023
43ea86e
Update _meta.json
wisey29 May 8, 2023
f6b7c31
Update _meta.json
wisey29 May 8, 2023
d23b761
Delete plan-your-implementation.md
wisey29 May 8, 2023
2553dad
Update mixpanel-for-developers-id-management.mdx
kurbycchua May 8, 2023
88bea7f
Update mixpanel-for-developers-id-management.mdx
kurbycchua May 8, 2023
94c7c42
Add files via upload
kurbycchua May 15, 2023
27d3722
Update _meta.json
kurbycchua May 15, 2023
f6e83b0
Update setting-up-mixpanel.md
kurbycchua May 15, 2023
1ab8fd3
Update setting-up-mixpanel.md
kurbycchua May 15, 2023
b080cab
Update setting-up-mixpanel.md
kurbycchua May 15, 2023
cfb2198
Create tutorials
PeishanFromMixpanel May 16, 2023
3094270
Delete tutorials
PeishanFromMixpanel May 16, 2023
5b8271f
Moved tutorials from header to under docs
PeishanFromMixpanel May 16, 2023
e941629
Update _meta.json
PeishanFromMixpanel May 16, 2023
64e6170
Update _meta.json
PeishanFromMixpanel May 16, 2023
36af550
Update _meta.json
ranic May 16, 2023
d960977
Update _meta.json
PeishanFromMixpanel May 16, 2023
871dce6
Setting Up Mixpanel Images
kurbycchua May 17, 2023
ce293ab
Update setting-up-mixpanel.md
kurbycchua May 17, 2023
4b2d25b
Update setting-up-mixpanel.md
kurbycchua May 17, 2023
efecaae
Update setting-up-mixpanel.md
kurbycchua May 17, 2023
a4a7e88
Update setting-up-mixpanel.md
kurbycchua May 17, 2023
6751e5c
Update setting-up-mixpanel.md
kurbycchua May 17, 2023
27559ff
Update _meta.json
PeishanFromMixpanel May 17, 2023
da43053
Update _meta.json
PeishanFromMixpanel May 17, 2023
abad130
Update mixpanel-for-developers-fundamentals.mdx
PeishanFromMixpanel May 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions pages/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
"title": "Docs",
"type": "page"
},
"tutorials": {
"title": "Tutorials",
"type": "page",
"display": "hidden"
},
"changelogs": {
"title": "Changelog",
"type": "page",
Expand Down
1 change: 1 addition & 0 deletions pages/docs/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
"tracking": "Tracking",
"analysis": "Analysis",
"admin": "Admin",
"tutorials": "Tutorials",
"other-bits": "Other Bits"
}
8 changes: 8 additions & 0 deletions pages/docs/tutorials/_meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"setting-up-mixpanel": "Setting Up Mixpanel",
"analytics-strategy": "Analytics Strategy",
"creating-a-tracking-plan": "Creating a Tracking Plan",
"mixpanel-analysis": "How to use Mixpanel",
"developers": "Mixpanel for Developers",
"migration-guides": "Migration Guides"
}
2 changes: 2 additions & 0 deletions pages/docs/tutorials/analytics-strategy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
## Overview
Defining the right metrics to track product performance can be a challenging task for any business. Companies have different goals and unique products that require a customized approach to analytics. To help you define your metrics, we have crafted a framework that outlines the types of metrics, how to organize them, and the key categories to consider. In [How to Determine Your Goals And Metrics guide](https://help.mixpanel.com/hc/en-us/articles/360035109991), we will explore the focus metric, Level 1 and Level 2 metrics, and how to organize them to ensure each team understands how their metrics contribute to the overall product performance.
33 changes: 33 additions & 0 deletions pages/docs/tutorials/creating-a-tracking-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
## Creating a Tracking Plan

### Utilise a Tracking Plan to Tie Key Goals to Events Tracked
Mixpanel recommends creating a tracking plan based on the key business goals identified from your analytics strategy. It should:

- Be a centralized document that should serve as the source of truth on your Mixpanel implementation
- Define your business goals / KPIs and analytics strategy metrics
- Outline the events, event properties, and user profile properties aligned to your metrics
- Be treated as a living and shared document that is continuously updated with any implementation changes
- Include notes that are referenced across teams (product, marketing, data science, tech / dev teams, etc.)

This will be important for team members who are involved in defining use cases to be implemented in Mixpanel as well as, tech teams involved in the actual implementation of the codes.

### Tracking Plan Methodology
Be intentional with your data. Prioritize the most critical data you'll need based on your analytics strategy and KPIs, then iterate. Tracking everything and anything your user can do in your product can lead to unnecessary development effort and unused data.

#### Define and prioritize KPIs
Define the top KPIs and metrics that will help measure success and inform decisions about your product.

#### Map KPIs to User Flows
Map each KPI / metric to the steps or actions that users take to influence each KPI / metric. For example, sign up flow will be important when measuring KPIs related to new user acquisition. Consider also the different paths that users can take to achieve the same outcomes.

#### Translate Flows into Events / Properties
Breakdown your user flows into events (actions) and properties (context of these actions) in your tracking plan. This will ensure that you have scoped out the data you need to achieve your KPIs / metrics in Mixpanel.

Mixpanel provides the following templates for vertical-specific tracking plans:

- [Retail and E-commerce](https://docs.google.com/spreadsheets/d/1Kyys37m_GEL79_1BKKEnU5KxK91NF04kY-L_bFfcfqE/edit#gid=1484002407)
- [Media and Entertainment](https://docs.google.com/spreadsheets/d/1K9t53kJJjaBG36kCIbZn_qKjXR9Iy306zYZAqDrv_AM/edit?usp=sharing)
- [SaaS](https://docs.google.com/spreadsheets/d/1A5wm5MKzRfSOZfUfCAg8YpePiz8Jn3Ar_u8KBo5lD6g/edit?usp=sharing)
- [Financial Services](https://docs.google.com/spreadsheets/d/1oGv6vbIFiYbima9IX4ItpBJvuChs-zzh83MRt_dSPgg/edit?usp=sharing)

You can also access a copy of a [blank Tracking Plan from here](https://docs.google.com/spreadsheets/d/1ZdOZ6TMtRPxy7qRxiLsvH9HWcHJM6nZydWKoThRxFKc/edit#gid=1641519238). Save a copy to your device to get started on your tracking plan.
5 changes: 5 additions & 0 deletions pages/docs/tutorials/developers/_meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"mixpanel-for-developers-fundamentals": "Fundamentals",
"mixpanel-for-developers-implementation": "Implementation",
"mixpanel-for-developers-id-management": "Identity Management"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
## Tutorial Overview
We've broken down the Mixpanel for Developers tutorial into a couple of different modules designed to help you understand events and properties in Mixpanel, understand the data types it supports and how to send events to Mixpanel and enrich user data that have been documented in your Tracking Plan.

We will also explore Mixpanel’s ID management Solution for Product Managers and Analysts to identify visitors as they go from an anonymous state to a known state and even when visitors use different devices.

## Mixpanel Data Model
Mixpanel data is stored and isolated within a project. Mixpanel recommends tracking 1 product with multiple platforms (mobile, web, etc.) into one project, but create [separate projects for development and production](https://help.mixpanel.com/hc/en-us/articles/360001354886-Automatically-Separate-Development-Data).

There may be [other factors where implementing separate projects](https://help.mixpanel.com/hc/en-us/articles/115004491683-When-To-Use-Multiple-Projects#factors-to-consider) is required, but do note that querying data across projects is not possible. Mixpanel supports a few different categories of data that can be used for analysis: events, user profiles, group profiles, and lookup tables. In data warehouse terminology, events make up the fact table while user profiles, group profiles, and lookup tables are dimension tables.

<p style={{ position: 'relative', paddingBottom: '56.25%', height: 0, overflow: 'hidden' }}>
<iframe src="https://www.loom.com/embed/fc9390690f1e4d84ab926dcf54914118" frameborder="0" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} allowfullscreen></iframe>
</p>

### Property Types
Properties are attributes that help you define the specifics of an **Event** or a **User.**
Mixpanel has many Properties defined in its Data Model.

|Property Type|Description|
|:--- |:---|
|[Event Properties](https://help.mixpanel.com/hc/en-us/articles/360001355266)|Event Properties describes the events that are tracked within your product.|
|[Super Properties](https://help.mixpanel.com/hc/en-us/articles/360001355266#super-properties-for-events)|Super Properties are a type of Event Property that you can initialise to automatically attach to every subsequent Event you’re tracking at client side.|
|[User Profile Properties](https://help.mixpanel.com/hc/en-us/articles/115004708186)|User Profile Properties describe your users (they typically store current demographical information). User profiles are joined to events on `event.distinct_id = user_profile.distinct_id`.|
|[Group Profile Properties](https://help.mixpanel.com/hc/en-us/articles/360025333632-Group-Analytics#group-profiles)|Group Profile Properties describe group level information (similar to User Profiles Properties at user level). With Mixpanel’s [Group Analytics](https://help.mixpanel.com/hc/en-us/articles/360025333632), multiple users can be grouped and behavioural data analysed at a customised group level (such as company, account). Group profiles are joined to events on your chosen group key. For example, if you create a new group key for `company_id` your events will be joined on `event.company_id = group_profile.company_id`.|
|[Lookup Tables](https://help.mixpanel.com/hc/en-us/articles/360044139291-Lookup-tables)|Lookup Tables allow you to dynamically extend additional properties mapped to an exiting Event or User Property. For example, if you create a lookup table for "Songs" (with additional properties like `hash_tags`, `top_10`, `all_time_favorite`) and specify the mapped event property as `song_id`; you can use these additional properties when doing filtering or breakdowns for events that has `song_id` as an event property.|
|[Default Properties](https://help.mixpanel.com/hc/en-us/articles/115004613766-What-properties-do-Mixpanel-s-libraries-store-by-default-)|Default Properties (for Events and User Profiles) are collected and populated with values automatically in Mixpanel. This can happen upon data ingestion or when using certain Mixpanel client-side SDKs. Typically, they have a dollar sign ($) or “mp_” as prefix to distinguish them from normal properties.|
|Reserved Properties|Mixpanel reserves certain property names (for [Events](https://help.mixpanel.com/hc/en-us/articles/360001355266#reserved-properties-for-events) and [User Profiles](https://help.mixpanel.com/hc/en-us/articles/115004708186#reserved-properties-for-user-profiles)) for special use cases, and these may or may not be automatically populated with values. The purpose of such Reserved Properties are for processing (ie event time stamping) or for specific system features (eg: cohort exports). Examples: `time`, `$email`, `$phone`, `$name`, `$created`.|

### Supported Data Types
Mixpanel supports five [data types](https://help.mixpanel.com/hc/en-us/articles/115004547063) for properties: String, Numeric, Boolean, Date and List. By choosing the most suitable data type for your properties, you'd be able to apply a set of [operators](https://help.mixpanel.com/hc/en-us/articles/115004547063#data-type-operators) that are most relevant to your properties in Mixpanel reports, and this will give you richer insights about your data.

**String**
- Alphanumeric value e.g. Plan Type = "Free", Artist Name = "Bruno Mars"
- String properties have a character limit of 255 bytes.
- Mixpanel will treat any property value that doesn’t match any other data type as a String.

**Numeric**
- Numeric (integer or decimal) value e.g. Cost = 15.00, Quantity = 5
- You can apply operators such as sum, median and percentile on numeric properties.

**Boolean**
- Mixpanel treats properties as boolean if the value is either the JSON constant `true` or `false` e.g. Favorited = true, Bookmarked = false.
- On Mixpanel, you can typecast any non-boolean property to boolean,
- "false", 0, null, undefined, and empty string will be typecasted to boolean `false`
- "true" and any set value that is not 0 or empty string will be typecasted to boolean `true`

**Date**
- An ISO formatted date `YYYY-MM-DDTHH:MM:SS` in UTC e.g. Last Purchase = "2022-10-30T13:30:25", Last Login = "2022-10-29". Note that all timestamps need to be sent in UTC timezone in an ISO format.
- Mixpanel treats unix timestamps as Numeric property, however, you can typecast it to Date data type.

**List**
- A list of values as a JSON array e.g Favourite Genres = ["Folk","Alternative"] or Favourite Numbers = [1,5,10.0]
- Limits of a List property: Event Property = 8KB, User Profile Property = 256KB, Each item in the list: 255 bytes

## Updating User Profile Properties
Mixpanel user profile properties are mutable and they can be updated in a timely manner to reflect the latest state of the users.

You can update user profile properties via [Mixpanel SDK](https://developer.mixpanel.com/docs/javascript#setting-profile-properties) or [Engage API](https://developer.mixpanel.com/reference/profile-set). The following are the operations supported in Mixpanel.

**Setting profile property**
- `$set` - Sets a profile property or update a profile property value.
- `$set_once` - Sets a profile property only if they do not yet exist on Mixpanel. This ensures that the previous profile property value is not overwritten.

**Updating numeric profile property**
- `$add` - Increments or decrements a numeric profile property.

**Updating list profile property**
- `$union` - Merges a given list into a List profile property and it ensures there are no duplicate values in the profile property.
- `$append` - Appends a value to the end of a List profile property.
- `$remove` - Removes a value from a List profile property.

**Removing profile properties**
- `$unset` - Remove a profile property from the user profile
- `$delete` - Remove all profile properties from the user profile.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
## Overview

This section provides details on implementing Mixpanel's Identity Management called Identity Merge (ID Merge for short). Note that the [Legacy Identity Management](https://help.mixpanel.com/hc/en-us/articles/115004497803-Identity-Management-Pre-Identity-Merge-Overview) is not covered in this section as Identity Merge is enabled by default for all new organizations since March 2020.

<p style={{ position: 'relative', paddingBottom: '56.25%', height: 0, overflow: 'hidden' }}>
<iframe src="https://www.loom.com/embed/01dcff45ee91473a9e6ddb1670fd6cba" frameborder="0" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} allowfullscreen></iframe>
</p>

## Basic Concepts in ID Merge
<p style={{ position: 'relative', paddingBottom: '56.25%', height: 0, overflow: 'hidden' }}>
<iframe src="https://www.loom.com/embed/f8f0ee64496a402d83246b111cdd051c" frameborder="0" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} allowfullscreen></iframe>
</p>

## ID Merge Implementation (using Client-side SDK)
<p style={{ position: 'relative', paddingBottom: '56.25%', height: 0, overflow: 'hidden' }}>
<iframe src="https://www.loom.com/embed/9941b613dd044536ba1962ddb6a32ccd" frameborder="0" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} allowfullscreen></iframe>
</p>

## ID Merge Implementation Best Practices
#### Call mixpanel.identify upon a successful sign-up / login or when an app is re-opened in a logged in state
By calling mixpanel.identify at these specific points in user journeys, you would be able to link the pre and post-login events to the same user on Mixpanel. Besides, calling mixpanel.identify when the users re-open the app in a logged in state ensures that all events in the session are tracked with the user's identifier such as user id.

#### Track the unique identifier as a super property and user property to assist troubleshooting
You can track the user's unique identifier as a [super property via mixpanel.register](https://developer.mixpanel.com/docs/javascript#super-properties) and [user property via mixpanel.people.set](https://developer.mixpanel.com/docs/javascript#setting-profile-properties) as soon as it is available in the app i.e. on a successful sign-up / login or when an app is re-opened in a logged in state.
In the cases when ID Merge is not implemented properly, you can rely on these properties for troubleshooting purpose.

#### Avoid creating profiles for anonymous users
Avoid creating profiles for anonymous users. If possible, cache user profile properties updates in cookie or local storage and only send them to Mixpanel after the user is identified (ie logged-in state).

#### QA your ID management implementation during development phase
Here are a few things to look out for:
- Ensure that cross-platform, pre and post-registration events are linked to the same user on Mixpanel.
- Ensure that no duplicate profiles are created as the users go through the onboarding, registration, login and cross-platform user journey.
- Ensure that all the user’s identifiers are stored in the same Identity Cluster and all their events are displayed on a single profile on Mixpanel.

#### Keep a record of your ID management implementation
We encourage you to document your implementation (or create a diagram of the implementation). This will come in handy when you need to re-implement this on a new platform or troubleshoot ID management issue.

Read more about [ID Merge Implementation Best Practices](https://help.mixpanel.com/hc/en-us/articles/9648680824852)

---

## FAQs
#### Is ID Merge retroactive?
Yes, ID Merge is retroactive. During merging distinct IDs that are added to the same cluster will be considered as the same user going forward.

#### There are two types of ID Merge?
Yes, you can read more about the [difference between Original vs Simplified ID Merge](https://help.mixpanel.com/hc/en-us/articles/14383975110292) and for more details how each one works, see the links below:
- [Getting Started with Original ID Merge](https://help.mixpanel.com/hc/en-us/articles/360041039771) (default for new projects)
- [Getting Started with Simplified ID Merge](https://help.mixpanel.com/hc/en-us/articles/14377628688788)

Loading