Why can’t I see any data in my Mixpanel project?
There are several common reasons why you might not see any data in your Mixpanel project:- Incorrect Project Token - Using the wrong project token in your initialization code will lead to your tracked data not arriving to your project. Always verify that the token matches the token shown in your project settings.
- Mismatched Data Residency - If your Mixpanel project data residency setting does not match the API endpoint you are sending data to, your data will not be ingested. If your project data residency is set to EU or India, make sure to route your data to the correct API server URL in your initialization code. Learn more about EU Residency and India Residency.
- Implementation Issues - Implementation errors can prevent Mixpanel SDK methods from triggering as expected. To help identify and resolve these issues during development, enable debug mode in your SDK. This will provide logs of the Mixpanel requests being triggered, along with the associated payloads.
What methods are available for importing data into Mixpanel?
You can use any Mixpanel SDKs to track and send events directly from your applications, both on the client and server side. Mixpanel supports direct imports from data warehouses such as Snowflake, BigQuery, Redshift, and Databricks through Warehouse Connectors. You can set up recurring syncs to keep Mixpanel in sync with your warehouse data. If you use a CDP like Segment or Rudderstack, you can add Mixpanel as a downstream destination to receive your data. Learn more about data ingestion integrations.How does ad-blockers affect Mixpanel tracking?
Ad-blockers can significantly affect Mixpanel tracking, particularly when using the client-side JavaScript SDK. These blockers and privacy extensions often target known analytics endpoints (such as Mixpanel’s), preventing events from being sent and recorded. As a result, users with ad blockers enabled may not be tracked in Mixpanel, leading to discrepancies between backend data and Mixpanel reports. Depending on your audience and the types of blockers in use, an estimated 30% or more of client-side events may be impacted. To reduce the impact of ad-blockers, use server-side tracking for critical events (server-side requests are not subject to ad blocking) and implement a proxy server to route client-side requests through your own domain (making them less likely to be blocked). Read more about the differences between client-side and server-side tracking.How do I exclude bots from my tracking?
By default, Mixpanel’s JavaScript SDK automatically blocks traffic from known web crawlers, as listed here. All other traffic is processed normally and ingested into your project. To further control bot traffic, you can implement custom filtering in your code. This involves identifying common patterns among your bots and setting the super property$ignore: true to exclude those events at ingestion.
Learn more about managing bot traffic.
Why are my user profiles all set to the same location?
If all user profiles in Mixpanel display the same location, it is likely because you are sending data through a server-side implementation or a CDP (like Segment or Rudderstack). In these cases, Mixpanel uses the server’s IP address for geolocation instead of the end user’s, resulting in all users being assigned the same location (such as Boardman, Oregon for Segment or Ashburn, Virginia for Rudderstack). By default, Mixpanel updates a user’s geolocation each time a user property is created or modified. If you don’t explicitly include the user’s real IP address in your payload, Mixpanel defaults to the server’s IP. To resolve this, you can:- Pass the actual client IP using the
$ipin your payload, - Manually set geolocation properties like
$city,$region, and$country_code, or - Set
$ipto0to prevent Mixpanel from updating the geolocation entirely.
How do I override the default geolocation set by Mixpanel when sending data from a server?
By default, Mixpanel determines the geolocation of users and events based on the IP address of the request. When using client-side tracking, this reflects the end user’s location. With server-side tracking, it reflects the server’s location. To override the default geolocation set by Mixpanel, you can:- Pass the actual client IP using the
$ipin your payload - Manually set geolocation properties such as
$city,$region, and$country_code - Specify the exact coordinates by setting the
$latitudeand$longitudeproperties in your payload
How do I track downloads and installs from Apple App Store and Google Play Store?
Tracking downloads and installs from the Apple App Store and Google Play Store in Mixpanel cannot be done directly, as neither app store provides this data to Mixpanel out-of-the-box. For Google Play Store (Android): You can use the Play Install Referrer Library to retrieve the referrer URL when the app is first opened. This allows you to capture some attribution data (such as campaign source) and send it to Mixpanel as event properties. However, this only works for a subset of attribution data and does not provide the total number of downloads—only installs where the app is opened and the referrer is available For Apple App Store (iOS): The App Store strips attribution data before the user downloads the app, so you cannot directly track the source or count of installs via Mixpanel. To track channel attribution on iOS, you need to use a mobile attribution partner (such as Adjust, AppsFlyer, or Branch). These partners can capture install and attribution data and send it to Mixpanel for analysis. Learn more about Traffic Attribution and our attribution integration partners.How do I track first-touch UTM tags?
To track first-touch UTM tags in Mixpanel, you can rely on the default behavior of the Mixpanel JavaScript SDK. When a user visits your site for the first time with UTM parameters in the URL, the SDK will:- Automatically capture the UTM parameters from the landing page URL (such as
utm_source,utm_medium,utm_campaign, etc.) and add them to events fired from that page load. - Store these first-seen UTM parameters as user profile properties prefixed with
initial_(e.g.,initial_utm_source,initial_utm_campaign). These properties represent the first-touch attribution and will persist on the user profile for future reference.
stop_utm_persistence: true when initializing the SDK.
Learn more about UTM tracking.
How do I track last-touch UTM tags?
By default, UTM parameters are persisted as super properties in all events and is updated when a new UTM parameter is detected in subsequent page loads (which aligns with last-touch attribution). We recommend disabling UTM persistence for compatibility with the Attribution feature. To disable UTM persistence, setstop_utm_persistence: true when initializing the SDK.
Learn more about UTM tracking here.
Why do I see Session Start and Session End events in my project?
Session Start and Session End events are automatically computed based on the events already in your project. These are virtual events; they are not sent from your application but are generated by Mixpanel at query time within the UI and reports. These virtual events do not count toward your data allowance. The definition of a session, when it starts and ends, depends on your project’s session settings, which may be timeout-based, event-based, or property-based. You can use these virtual events in reports such as Insights, Funnels, and Flows. However, they do not appear in your raw events list and cannot be exported via the API, as they are not stored as actual events in your data store. Learn more about Sessions.What are super properties?
Super properties in Mixpanel are event properties that you define once and are automatically included with every event tracked from the client-side SDKs. They are stored in the user’s local storage or cookie, so you don’t need to manually add them to each event. This is useful for properties that provide important context across multiple events, such as user type, app version, or campaign source. You can register super properties with the JavaScript SDK, Android SDK, Swift SDK, iOS SDK, and the React SDK.How can I edit the event data inside my project?
You cannot directly edit the raw event data that has already been ingested into your Mixpanel project; events are immutable once received (unless imported via a mirror sync warehouse connector). However, you can hide unwanted events from appearing in your reports and delete unwanted data. Learn more about Lexicon, Data Deletion, and Warehouse Connectors.How can I send data from my data warehouse to Mixpanel?
You can send data from your data warehouse to Mixpanel using Warehouse Connectors, which offer native integrations with Redshift, Snowflake, BigQuery, and Databricks. This codeless setup allows you to configure recurring syncs, ensuring Mixpanel stays up to date with your warehouse data.How can I do a one-time import of historic events? How much does it cost?
To do an initial import of data into Mixpanel, there are several methods available: 1. SDKs (Software Development Kits): You can use Mixpanel’s SDKs to send data directly from your application. This is a common approach for ongoing event tracking, but it can also be used for initial imports if you replay historical events through the SDKs. 2. Import API: Mixpanel provides an Import API that allows you to send data directly to Mixpanel. This method is managed by your team, and you can automate API calls to send data as needed. 3. Data Warehouse Connector(Add-on): Mixpanel offers a data warehouse connector as an add-on for organizations on the Enterprise plan, which allows you to point Mixpanel to your data warehouse table, and Mixpanel manages the sync and cadence of data import. This is a managed solution and is easier for teams that want Mixpanel to handle the process. Contact your account manager to learn more about the pricing. Learn more about the pricing for historical events on the Billing & Pricing doc.Why do I see CORS errors in the console when Mixpanel requests in my website?
CORS (Cross-Origin Resource Sharing) errors appear in your console when Mixpanel requests from your website are blocked by the browser’s security policy. This typically happens because the Mixpanel server response does not include the necessary CORS headers (likeAccess-Control-Allow-Origin) to allow your domain to access the resource.
Mixpanel requires you to send cross-origin HTTP requests (requests sent to a different server than the one hosting your web application), so you need to setup your environment to allow this. Use browser developer tools to inspect the failed request and see which headers are missing or mismatched.
Learn more about CORS errors.
How do we send data to Mixpanel?
You can use Mixpanel’s SDKs to track and send events directly from your applications, both on the client and server side. Mixpanel supports direct imports from data warehouses such as Snowflake, BigQuery, Redshift, and Databricks through Warehouse Connectors. You can set up recurring syncs to keep Mixpanel in sync with your warehouse data. If you use a CDP like Segment or Rudderstack, you can add Mixpanel as a downstream destination to receive your data. Learn more about Tracking Methods.Can Mixpanel integrate with our current data model or database?
Mixpanel is flexible and can integrate with most data models or databases, either directly or through data transformation and import methods. If your data is stored in a data warehouse (such as BigQuery, Redshift, Snowflake, or Databricks), Mixpanel’s Warehouse Connectors allow you to sync tables or views from your warehouse into Mixpanel. This integration is codeless and can keep your Mixpanel data in sync with your backend systems If you are using a CDP such as Segment or Rudderstack, you can set Mixpanel as a downstream destination to stream data from your existing sources. Learn more about Tracking Methods.How do we handle sensitive or private data?
Mixpanel does not store personally identifiable information (PII) unless you explicitly choose to track it. You have full control over the data you send and should avoid including raw PII (such as names, email addresses, or phone numbers) unless absolutely necessary. Mixpanel also provides tools to help you honor user privacy, including options to support opt-out requests and manage data responsibly. Learn more about how to protect user data. With Data Views, you can create filtered views of your project data and assign access to specific teams or users. Additionally, Data Classification lets you mark certain properties as classified, restricting visibility to only authorized users within your project.What is the best way to send both client-side and server-side events?
The best practice for sending both client-side and server-side events in Mixpanel is to use a hybrid approach:- Track critical business events (such as purchases, sign-ups, and revenue events) on the server side. This ensures greater accuracy and reliability, as server-side events are not impacted by ad blockers, network interruptions, or client-side manipulation. Use Mixpanel’s server-side SDKs or direct API ingestion for this purpose.
- Track user interactions and UI events (such as button clicks and page views) on the client side. These events reflect real-time user behavior that only occurs in the browser or app and are best captured using Mixpanel’s client-side SDKs.
How do we ensure the data is accurate and implementation is correct?
To ensure your Mixpanel data is accurate and your implementation is correct, follow these best practices:- Use Separate Development and Production Projects: Always set up at least two Mixpanel projects, one for development and one for production. Implement and test all tracking in the development project first. This prevents test or incorrect data from polluting your production analytics. Learn more about setting up developer environments.
- Validate Events and Properties: Use Mixpanel’s Events view to confirm that events are arriving as expected. Manually trigger events and search for them using user-level identifiers (like
distinct_id). Inspect event properties for correctness, data type, and naming conventions (Mixpanel is case sensitive). Learn more about debugging your implementation. - Iterate and Update Tracking Plan: After each product update or when adding new events, update your tracking plan, get sign-off from a data governance owner, and repeat the QA process in the development project before deploying to production. Learn more about creating a tracking plan and establishing data standards.
How do I anonymize an actual known user?
Mixpanel does not require any identifying information about users. You can generate a hash of a unique user ID (such as your internal user ID) and use that hash as the user’s ID when calling the.identify() method in the SDKs. This way, the user cannot be traced back to their real identity, but you can still analyze their behavior in aggregate. The hash should only be reversible by you, not by Mixpanel or anyone else.
To anonymize a user who has already been tracked, first export all data associated with that user. Then, delete the user’s data using Mixpanel’s GDPR-compliant deletion methods. After reviewing the exported data, remove any personally identifiable information (PII), and reimport the sanitized data as needed once the deletion has been fully processed.
Learn more about anonymizing users and submitting GDPR requests.