The Amplitude Professional Services team compiled this guide to help you migrate from Mixpanel and start getting insights quickly.

{% callout type="tip" heading="Customer case study" %}
Learn how Whisk migrated from Mixpanel to Amplitude on the [Amplitude Blog](https://amplitude.com/blog/whisk-product-growth).

{% /callout %}

## Import Mixpanel historical data

Amplitude offers two options to migrate historical data from Mixpanel:

* The [Mixpanel import tool](#mixpanel-import-tool): Best for sending historical event data quickly.
* The [Batch Event Upload API](#amplitude-batch-event-upload-api): Best for sending historical data, including events and user profile properties, at scale.

### Mixpanel import tool

With your Mixpanel project's API key or service account credentials, this tool uses [Mixpanel's Export API](https://developer.mixpanel.com/reference/raw-event-export) to export event data from Mixpanel and import it to your Amplitude project.

#### Limitations

* The tool processes about 160,000 events per batch.
* The tool doesn't support User Profile imports. To import user profile information, use one of the following options:
  * Export your data from Mixpanel with the Mixpanel [Export](https://developer.mixpanel.com/reference/raw-event-export) and [Engage](https://developer.mixpanel.com/reference/engage-query) APIs, and import it to Amplitude with the [Batch Event Upload API](/docs/apis/analytics/batch-event-upload).
  * Contact Amplitude Support or your Amplitude account manager to get custom services from Amplitude's Professional Services team.

#### Troubleshooting

If the import tool responds with an authentication error:

* Confirm you provide the correct authentication to the Mixpanel import tool.
* If you use your Mixpanel project's API key, reference the correct project. Each project in Mixpanel has its own API key.
* If you use a [Mixpanel service account](https://developer.mixpanel.com/reference/service-accounts), enter the credentials as follows:

| Service account value | Amplitude field                       |
| -------------------- | ------------------------------------ |
| Username              | The username field in the import tool |
| Password              | The API Key field                     |
| Project ID            | The Project ID field                  |

* If you don't have the username and password for your Mixpanel project's service account, create a new service account for your project and copy the values.
* Confirm your Mixpanel service account has permission to access the information you need. Test your credentials with [Mixpanel's Download Data page](https://developer.mixpanel.com/reference/raw-event-export). If the page responds with a `200` status, your service account has the necessary permissions.

If the import tool doesn't complete or responds with a generic error:

* The data set may be too large to process. Try again with a narrower time range, aiming for no more than ~160,000 events per batch.

If the tool imports fewer transactions than expected:

* Amplitude detects and excludes duplicate events. If your data contains many duplicates, Amplitude imports fewer events than expected.
* Some Mixpanel events may not be compatible with Amplitude events because of missing information. If your Mixpanel instrumentation doesn't capture fields like `name`, `date`, or `device ID`, Amplitude may not import those events.

### Amplitude Batch Event Upload API

Export your data from Mixpanel through the [Mixpanel API](https://developer.mixpanel.com/reference/raw-data-export-api) and upload it to Amplitude with the [Batch Event Upload API](/docs/apis/analytics/batch-event-upload). If you host your data in another external source, you can also use the batch endpoint to upload data to Amplitude.

### Professional Services

To get custom services from the Amplitude Professional Services team, contact your Amplitude account manager.

## Plan new Amplitude tracking from Mixpanel

### Set product goals

Before you start implementation, confirm that stakeholders and team members agree on what you want to get from the data and which use cases to focus on.

#### Common use cases by industry

{% tabs tabs="B2B, Fintech, E-commerce, Streaming media" %}
{% tab name="B2B" %}
**Goal**: Understand product engagement.

**Key points:**

* See how your users convert through critical funnels: acquisition (free trial, sales, partner, POC), onboarding, activation, workflow, cross-sell/upsell funnels.
* Target the right customers at the right time to move them through a critical funnel.
* Find patterns in the way your customers move through key milestones (acquisition, onboarding, activation, renewal).
* Understand different customer segments’ use and adoption to define key personas based on use cases and needs.
* Optimize your product experience to target different customers personas needs and make them more successful.
{% /tab %}
{% tab name="Fintech" %}
**Goal**: Understand what makes your users purchase.

**Key questions:**

* What's the efficiency of marketing channels?
* How many users complete sign-up and money transfer in one session?
* How do users engage with product features?
* What impacts user retention?
* What's the % of users that have used accounts with > 2 currencies in the last 30 days?
* How much revenue do we get from a customer?
* What impacts referrals?
{% /tab %}
{% tab name="E-commerce" %}
**Goal:** Understand revenue and conversion drivers.

**Key questions:**

* How often do users look at products?
* What's our purchase conversion rate?
* And what's the falloff in each step? (rates of- click to category page, click to product, add to cart, view cart, start checkout, order conversion)
* What features do users interact with that lead to conversions?
* What are the drivers that lead from user registration to first purchase?
* How many purchases include more than one item?
* Does the ATC (add to cart) decrease by user or device type?
{% /tab %}
{% tab name="Streaming media" %}
**Goal:** Understand the acquisition and subscription drivers of your users' engagement with your product.

**Key questions:**

* What's the total length of time from content consumption in the Free Trial for churned trials vs. subscription converters?
* What activities are common between users who convert vs don't convert after the Free Trial expires?
* How do users interact with our site and how do they consume content?
* What is the percentage of content consumed per genre?
* What brings users back?
{% /tab %}
{% /tabs %}

### Design and instrument a data taxonomy

* Review the [Mixpanel to Amplitude Taxonomy workbook](https://docs.google.com/spreadsheets/d/1lsZa6uZmcUmJdq-_sr5JawckMPiiQDCCzl_ytSYccNg/edit#gid434510064), built from common use cases of Amplitude customers who migrated from Mixpanel.
* For broader taxonomy guidance, refer to the [Data Taxonomy Playbook](/docs/data/data-planning-playbook).

#### Choose an instrumentation method

You can send data to Amplitude client-side, server-side, or through a third party. Use the following options based on where you track events:

* Client-side event tracking: use the [Amplitude SDK Catalog](/docs/sdks/analytics). Reference the Amplitude mapping to replace your existing instrumentation.
* Server-side event tracking: use the [Amplitude HTTP API](/docs/apis/analytics/http-v2).

#### Map Mixpanel methods to Amplitude methods

The mapping between Mixpanel and Amplitude tracking and identification methods depends on the type of data.

##### Event tracking

* Mixpanel tracks events with the `'mixpanel.track()'` method, which takes an event name and a set of properties.
* Amplitude tracks events with the `'amplitude.getinstance().logEvent()'` method, which takes an event name and a set of properties as a JSON object.

##### Property tracking

Mixpanel super properties attach to all subsequent events. Amplitude user properties function similarly: after you set them, they attach to all subsequent events that Amplitude ingests.

* In Mixpanel, set super properties with the `'mixpanel.register()'` method.
* In Amplitude, update user properties with the `'amplitude.identify()'` method.

##### User identification

* Mixpanel identifies a user with the `'mixpanel.identify()'` method, using a combination of `distinct_id` (a randomly generated identifier on a specific platform) and `user_id` (set by the instrumenting team).
* Amplitude identifies a user with the `'amplitude.identify()'` method, using a combination of `device_id` (a randomly generated identifier on a specific platform) and `user_id` (set by the instrumenting team).

For more on how Amplitude resolves user identities, refer to [Track unique users](/docs/data/sources/instrument-track-unique-users).

## Data privacy considerations

Consider the following features and areas when managing your customer data:

* [Time to Live (TTL)](/docs/data/time-to-live): Amplitude feature that controls how long event data lives in your Amplitude instance.
* [How to manage Opt-Outs](/docs/sdks/analytics/browser/browser-sdk-2#opt-users-out-of-tracking): SDK settings that let your website visitors disable activity tracking.
* [IP Address](/docs/apis/analytics/batch-event-upload): Amplitude captures IP address and location-based details by default with client-side tracking. To disable this tracking, refer to [Browser SDK | Optional Tracking](/docs/sdks/analytics/browser/browser-sdk-2#optional-tracking).
* [User Privacy API](/docs/apis/analytics/user-privacy): API to delete all data for a set of known Amplitude IDs or User IDs.
* [Amplitude's Stance on Security & Privacy](https://amplitude.com/amplitude-security-and-privacy)

## GDPR compliance

Amplitude is fully GDPR compliant. For more information about compliance, refer to [Security and Privacy](https://amplitude.com/amplitude-security-and-privacy).

Amplitude maintains a [user privacy API](/docs/apis/analytics/user-privacy) that lets you service end user data deletion requests.

## Feedback or questions

To submit feedback or questions about this implementation guide, use [this form](https://forms.gle/EMh9JeNs1iNCQzx67).  