From 6d4744b8f5fa9fe7afc357467203814498c03622 Mon Sep 17 00:00:00 2001
From: myronkaifung <97630035+myronkaifung@users.noreply.github.com>
Date: Tue, 1 Oct 2024 20:42:54 -0700
Subject: [PATCH 1/2] Update _meta.json
---
pages/guides/_meta.json | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/pages/guides/_meta.json b/pages/guides/_meta.json
index d8a5728104..65e36f36ab 100644
--- a/pages/guides/_meta.json
+++ b/pages/guides/_meta.json
@@ -8,5 +8,10 @@
"implement": "Implement",
"launch": "Launch",
"beyond-onboarding": "Beyond Onboarding",
- "analytics-strategy": "Analytics Strategy Workshop"
+ "analytics-strategy": "Analytics Strategy Workshop",
+ "faq": {
+ "type": "separator",
+ "title": "FAQ"
+ },
+ "frequently_asked_questions": "Frequently Asked Questions"
}
From 1931b23cb8749e474ad84dccf4ca551ab7cfcff2 Mon Sep 17 00:00:00 2001
From: myronkaifung <97630035+myronkaifung@users.noreply.github.com>
Date: Tue, 1 Oct 2024 20:43:31 -0700
Subject: [PATCH 2/2] Create frequently_asked_questions.mdx
---
pages/guides/frequently_asked_questions.mdx | 296 ++++++++++++++++++++
1 file changed, 296 insertions(+)
create mode 100644 pages/guides/frequently_asked_questions.mdx
diff --git a/pages/guides/frequently_asked_questions.mdx b/pages/guides/frequently_asked_questions.mdx
new file mode 100644
index 0000000000..9cd84f8b8e
--- /dev/null
+++ b/pages/guides/frequently_asked_questions.mdx
@@ -0,0 +1,296 @@
+export function FAQBox({ title, children }) {
+ return (
+
+
+ {title}
+
+ {children}
+
+ );
+}
+
+# Frequently Asked Questions
+
+## General
+
+
+
+
+ Mixpanel enables you to answer questions about your users and build better products. Mixpanel provide tools to help you track your users and visualize this data using interactive reports. You can import data from your existing database or track data in real time inside your product with our SDKs. You can export your Mixpanel data to your data warehouse or to other destinations.
+
+
+
+ We provide demo datasets that enables you to explore our product using sample data. To access the demo dataset, [register for a free Mixpanel account](https://mixpanel.com/signup/) and then click the top right of the UI and scroll down to the bottom to access the Sample Dataset (or by clicking [here](https://mixpanel.com/api/app/demo_project?show-demo-dataset-modal=true)).
+
+
+
+ You can compare between our subscription plans and get an estimate using the plan builder [here](https://mixpanel.com/pricing/).
+
+
+
+
+
+## Sending Data to Mixpanel
+
+
+
+
+ There are many factors that can lead to data not appearing in your Mixpanel project. Please consider the following troubleshooting steps:
+
+ 1. Make sure the token in your [init snippet](/docs/quickstart/install-mixpanel) is the same as the [project token](/docs/orgs-and-projects/managing-projects#find-your-project-tokens) in your project settings.
+ 2. Make sure that the API request URL matches the Data Residency of your project. Learn more about Data Residency [here](/docs/privacy/eu-residency#eu-residency-and-cdps).
+ 3. Make sure the Mixpanel SDK requests are being triggered. You can confirm this by enabling [debug mode](/docs/tracking-best-practices/debugging#enable-debug-mode). See more troubleshooting tips [here](/docs/tracking-best-practices/debugging).
+
+
+
+ We support multiple methods for importing historical data and real-time tracking.
+
+ 1. Sync data from your database using our Warehouse Connector.
+ 2. Use one of our SDKs in your product or server.
+ 3. Leverage our APIs directly to import your data.
+ 4. Upload user profiles using a CSV.
+
+ Learn about your options for importing data in the ["Data In" section of our docs](/docs/tracking-methods/choosing-the-right-method)
+
+
+
+ Ad-blockers and DNT settings can prevent Mixpanel cookies from loading properly. As a best practice, [we recommend server-side tracking](/docs/tracking-methods/choosing-the-right-method#server-side-tracking) since you have control over your server. A [proxy](/docs/tracking-methods/choosing-the-right-method#client-side-tracking-via-a-proxy) is helpful for reducing the likelihood of ad-blockers impacting your client-side tracking.
+
+
+
+ Mixpanel’s Javascript SDK automatically blocks common web crawlers listed [here](https://github.com/mixpanel/mixpanel-js/blob/8ac526e5cb8563d11e2206046ab986c6491ac6d7/src/utils.js#L900C1-L925C3). Bots outside of this list are not blocked by default and will send data like any other users.
+
+ If you identify patterns in your bot users, you can implement conditional logic in your codes to detect these bots, and register `$ignore: true` as a [super property](/docs/tracking-methods/sdks/javascript#super-properties). When Mixpanel detects `$ignore: true` in an event payload, it will drop the event from ingestion.
+
+ Learn more about bot traffic management [here](/docs/tracking-best-practices/bot-traffic).
+
+
+
+ By default, user profile location is updated every time a user is identified or a profile property is set. The location is parsed using the IP address of the request. If you send user updates from a server, it can have the unintended effect of setting your user locations to the location of the server.
+
+ You can prevent geolocation updates by [setting the IP value of the request payload to 0](/docs/tracking-best-practices/geolocation#ignore-ip-address). Learn more about geolocation in Mixpanel [here](/docs/tracking-best-practices/geolocation).
+
+
+
+ You can override the default geolocation set by Mixpanel by [manually defining the geolocation properties](/docs/tracking-best-practices/geolocation#define-geolocation-properties), [defining the latitude and longitude](/docs/tracking-best-practices/geolocation#define-latitude-and-longitude), or [passing your own IP address](/docs/tracking-best-practices/geolocation#define-ip-address).
+
+ Learn more about geolocation in Mixpanel [here](/docs/tracking-best-practices/geolocation).
+
+
+
+ Mobile attribution is more complex than web tracking due to the way attribution data is stored in mobile devices. For Android, you can use the [Play Install Referrer Library](https://developer.android.com/google/play/installreferrer/library) to retrieve the referrer. For iOS, you will need to use a [mobile attribution partner](https://mixpanel.com/partners/integrations?categories=attribution-deep-linking).
+
+ Learn more about traffic attribution [here](/docs/tracking-best-practices/traffic-attribution#mobile-attribution).
+
+
+
+ By default, the Mixpanel Javascript SDK automatically tracks UTM tags from landing page URLs in a first-touch manner. The first UTM tags detected for the user will be set as a profile property and a super property.
+
+ Learn more about UTM tracking [here](/docs/tracking-best-practices/traffic-attribution#web-attribution).
+
+
+
+ While Mixpanel’s Javascript SDK automatically tracks UTM tag on a first-touch basis, it does not track UTM tags on a last-touch basis out-of-box. You can copy the codes outlined [here](/docs/tracking-best-practices/traffic-attribution#last-touch-utm-tracking) to start tracking last-touch UTM tags.
+
+ Learn more about UTM tracking [here](/docs/tracking-best-practices/traffic-attribution#web-attribution).
+
+
+
+ [Sessions events](/docs/features/sessions) are virtual events that are dynamically calculated in the front end using existing event data in your project. These virtual events are not a part of your raw data, meaning you do not have to implement any codes to see them and will not count toward your data allowance.
+
+
+
+ Super properties are event properties that you automatically add to all events that are sent. Once you register a super property, it will be stored in the cookie/local storage and appended to all events tracked by the user moving forward.
+
+ This is helpful for adding certain properties that describes the user tracking the event without having to manually define it in each track call. Once the super property is ingested in Mixpanel, it is indistinguishable from a regular event property.
+
+ Learn more about super properties [here](/docs/tracking-methods/sdks/javascript#super-properties).
+
+
+
+ Event data are immutable, meaning that they cannot be altered once it is ingested into your project.
+
+ You can follow these instructions [here](/docs/data-governance/data-clean-up#2-deleting-problematic-data) to delete unwanted data or use a [Lookup Table](/docs/data-structure/lookup-tables) to enrich your existing data.
+
+
+
+ You can use our Warehouse Connectors (/docs/tracking-methods/data-warehouse) to sync data from Big Query, Databricks, Redshift, and Snowflake into your Mixpanel project without writing additional codes.
+
+ Alternatively, you can export the data from your data warehouse and import them into your Mixpanel project using the [Import API](https://developer.mixpanel.com/reference/import-events).
+
+
+
+ You can leverage our [Import API](https://developer.mixpanel.com/reference/import-events) to import historic events in bulk. You can also sync data from your warehouse into Mixpanel using a [Warehouse Connector](/docs/tracking-methods/data-warehouse).
+
+
+
+ CORS errors can occur when the CORS configuration is not setup correctly in your environment, causing Mixpanel requests to be blocked. 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.
+
+ Learn more about CORS errors [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors).
+
+
+
+
+## Identity Management in Mixpanel
+
+
+
+
+ Distinct ID is Mixpanel's identifier used to uniquely track a user in the system. Every event data and profile update sent to Mixpanel should have a distinct_id property associated with it. The Distinct ID value tells Mixpanel which user to attach your events and profile property updates.
+
+ If the Distinct ID on two events are two different values, they will be considered as coming from two separate users.
+
+
+
+ Mixpanel's client-side SDKs automatically generates a UUID upon initialization to represent the user while they are anonymous. Once they are identified with a `.identify()` call, their distinct_id is set to your chosen user ID.
+
+ In a server-side environment, your server is responsible for generating the distinct_ids for your users.
+
+ Learn more about [distinct_ids](/docs/tracking-methods/id-management/identity-management#distinct-id) and [identifying users](/docs/tracking-methods/id-management/identifying-users-simplified).
+
+
+
+ In the client-side (web or mobile), Mixpanel's SDK will generate a cookie/local storage upon initialization and store the distinct_id for the user there. If the cookie/local storage is cleared, a new distinct_id will be generated.
+
+ In the server-side, your server is responsible for generating and maintaining the distinct_id.
+
+ Learn more about [ID management](/docs/tracking-methods/id-management/identity-management) and [identifying your users in your implementation](/docs/tracking-methods/id-management/identifying-users-simplified).
+
+
+
+ When implementing Mixpanel using a client-side SDK (web or mobile), we recommend calling `.identify()` at registration and login, and `.reset()` at logout.
+
+ Learn more about client-side ID management [here](/docs/tracking-methods/id-management/identifying-users-simplified#client-side-identity-management).
+
+
+
+ When implementing Mixpanel using a server-side method, your server is responsible for identity management meaning you will need to generate your own IDs.
+
+ Learn more about server-side ID management [here](/docs/tracking-methods/id-management/identifying-users-simplified#server-side-identity-management).
+
+
+
+ Mixpanel does not natively support cross-domain tracking. This is because the Distinct ID is stored in the Mixpanel cookie and cookies do not transfer across domains.
+
+ Some users have found the workaround outlined [here](https://muffaddal-qutbuddin.medium.com/cross-domain-tracking-in-mixpanel-analytics-cfa5e7fe86b6) helpful for connecting behavior across multiple domains.
+
+ Here is a high-level overview of this process:
+ 1. User lands on website A, and generates a cookie containing a Mixpanel-created distinct_id
+ 2. Use `mixpanel.get_distinct_id()` (learn more [here](https://github.com/mixpanel/mixpanel-js/blob/master/doc/readme.io/javascript-full-api-reference.md#mixpanelget_distinct_id)) to retrieve the distinct_id and save it as a variable
+ 3. Pass this variable as a URL parameter in the URL to website B
+ 4. Your user navigates to the website B, and generates a new cookie containing another Mixpanel-created distinct_id
+ 5. In website B, insert code to extract the website A distinct_id from the landing page URL of website B
+ 6. In website B, call the `.identify()` method, passing in the Website A distinct_id
+
+
+
+
+ The Mixpanel Javascript SDK supports cross-subdomain tracking out-of-box, meaning that your super properties and distinct_id will persist across your subdomains.
+
+ Learn more about cross-subdomain cookie persistence [here](/docs/tracking-methods/sdks/javascript#mixpanel-cookies-for-hosted-subdomains).
+
+
+
+ Mixpanel's client-side SDKs will generate a different ID for each instance of the an initialized library, meaning that your users will have a separate `$distinct_id` in the website and mobile app without any identification. To ensure that the same user’s events in both platforms are resolved back to the same user profile in Mixpanel, call `.identify()` using the same `user_id` in both platforms.
+
+ See an example cross-platform ID management flow [here](Learn more about ID management here (/docs/tracking-methods/id-management/identifying-users-simplified#example-user-flows).
+
+
+
+ If you are using the [Original ID Merge API](/docs/tracking-methods/id-management/identity-management#identity-merge-apis) (check your project API [here](https://mixpanel.com/settings/project/id-management)), our API chooses one of the IDs inside the identity cluster to serve as the canonical distinct_id for the user, meaning that it can be set to your chosen user ID or one of the Mixpanel-generated anonymous ID. This is programmatically selected by Mixpanel and not user-configurable.
+
+ You can use any of the distinct_ids inside of the identity cluster for ingestion, but only the canonical distinct_id is used in queries and exports. As a best practice, we recommend setting your chosen user ID as a super property and profile property to make querying easier.
+
+
+
+ This can occur for projects using the [Original ID Merge API](/docs/tracking-methods/id-management/identity-management#identity-merge-apis) when multiple users are sharing one device and `.reset()` was not called upon logout. Since the previous user’s `distinct_id` was not cleared from local storage via `.reset()`, the subsequent user’s user ID is merged into the previous user’s identity cluster when once they sign in and `.identify()` is called.
+
+ To prevent this, follow our best practice for identity management and call identify at registration/login, and reset at logout.
+
+ This is not possible under the Simplified ID Merge API since 2 different `$user_ids` cannot be merged under 1 identity cluster.
+
+
+
+ This is usually caused by multiple different user IDs being passed for the same user during identification. For example, if you identify the same user using the ID `ABC` in the web and `123` in the mobile app, they will be considered 2 different users by Mixpanel since we would have no way of knowing they are the same users.
+
+ As a best practice, only 1 consistent unique identifier for each user across all platforms during the identification process.
+
+
+
+
+## Building Mixpanel Reports and Analyses
+
+
+
+
+ Mixpanel has 4 core reports; Insights, Funnels, Retention, and Flows.
+
+ Use an [Insights report](/docs/reports/insights) to visualize your data and explore trends in your events, user profiles, user cohorts, and more using a wide variety of charts.
+
+ Use a [Funnels report](/docs/reports/funnels) to measure your user’s conversion from a starting event to a goal event.
+
+ Use a [Retention report](/docs/reports/retention) to measure the stickiness of your user engagement over time.
+
+ Use a [Flows report](/docs/reports/flows) to explore top paths leading up to an event and immediately after events.
+
+
+
+
+
+## Exporting Data from Mixpanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Manage your Mixpanel Projects and Teammates
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Protecting User Data and Privacy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+