> ## Documentation Index
> Fetch the complete documentation index at: https://mixpanel-edb78807-tylergoerzen-tof-687-regional-hosts.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Install Mixpanel

export const ExtendedButton = ({title, link}) => <a href={link} className="inline-block text-white font-medium text-base px-7 rounded-full shadow-sm transition-all no-underline mxp-extended-button">
    {title}
  </a>;

## Overview

Installing Mixpanel is easy. This guide will show you how to do it with our SDKs.

Already collect product data? Connect your [**Data Warehouse**](/docs/tracking-methods/warehouse-connectors) or via [**3rd Party Integrations**](/docs/tracking-methods/integrations/).

## Code

Choose from the methods below. Not sure how to choose? [Read our guide](/docs/tracking-methods/choosing-the-right-method).

Mixpanel supports [EU](/docs/privacy/eu-residency) and [India](/docs/privacy/in-residency) data residency, which you choose per project. If your project uses either, point the SDK at that region's host. Each tab below shows how. Events sent to the wrong region aren't ingested.

<Tabs>
  <Tab title="Javascript">
    ##### Install the SDK

    <Tabs>
      <Tab title="snippet">
        ```html theme={"system"}
        <!-- Paste this right before your closing </head> tag -->
        <script type="text/javascript">
          (function (f, b) { if (!b.__SV) { var e, g, i, h; window.mixpanel = b; b._i = []; b.init = function (e, f, c) { function g(a, d) { var b = d.split("."); 2 == b.length && ((a = a[b[0]]), (d = b[1])); a[d] = function () { a.push([d].concat(Array.prototype.slice.call(arguments, 0))); }; } var a = b; "undefined" !== typeof c ? (a = b[c] = []) : (c = "mixpanel"); a.people = a.people || []; a.toString = function (a) { var d = "mixpanel"; "mixpanel" !== c && (d += "." + c); a || (d += " (stub)"); return d; }; a.people.toString = function () { return a.toString(1) + ".people (stub)"; }; i = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split( " "); for (h = 0; h < i.length; h++) g(a, i[h]); var j = "set set_once union unset remove delete".split(" "); a.get_group = function () { function b(c) { d[c] = function () { call2_args = arguments; call2 = [c].concat(Array.prototype.slice.call(call2_args, 0)); a.push([e, call2]); }; } for ( var d = {}, e = ["get_group"].concat( Array.prototype.slice.call(arguments, 0)), c = 0; c < j.length; c++) b(j[c]); return d; }; b._i.push([e, f, c]); }; b.__SV = 1.2; e = f.createElement("script"); e.type = "text/javascript"; e.async = !0; e.src = "undefined" !== typeof MIXPANEL_CUSTOM_LIB_URL ? MIXPANEL_CUSTOM_LIB_URL : "file:" === f.location.protocol && "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//) ? "https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js" : "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"; g = f.getElementsByTagName("script")[0]; g.parentNode.insertBefore(e, g); } })(document, window.mixpanel || []);
        </script>
        ```
      </Tab>

      <Tab title="npm">
        ```text theme={"system"}
        npm install --save mixpanel-browser
        ```
      </Tab>

      <Tab title="yarn">
        ```text theme={"system"}
        yarn add mixpanel-browser
        ```
      </Tab>
    </Tabs>

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    You can learn more about configuring Session Replay and Heatmaps [here](/docs/tracking-methods/sdks/javascript/javascript-replay).

    ```js Javascript theme={"system"}
    //Import Mixpanel SDK (only required for npm and yarn)
    import mixpanel from "mixpanel-browser";

    // Near entry of your product, init Mixpanel
    mixpanel.init("YOUR_TOKEN", {
      debug: true,
      track_pageview: true,
      persistence: "localStorage",
      record_sessions_percent: 100, //records 100% of all sessions
      record_heatmap_data: true,
    });
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set `api_host`:

    <CodeGroup>
      ```js EU theme={"system"}
      mixpanel.init("YOUR_TOKEN", {
        api_host: "https://api-eu.mixpanel.com",
        debug: true,
        track_pageview: true,
        persistence: "localStorage",
        record_sessions_percent: 100, //records 100% of all sessions
        record_heatmap_data: true,
      });
      ```

      ```js India theme={"system"}
      mixpanel.init("YOUR_TOKEN", {
        api_host: "https://api-in.mixpanel.com",
        debug: true,
        track_pageview: true,
        persistence: "localStorage",
        record_sessions_percent: 100, //records 100% of all sessions
        record_heatmap_data: true,
      });
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Python">
    ##### Install the SDK

    ```shell Python theme={"system"}
    pip install mixpanel
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```python Python theme={"system"}
    from mixpanel import Mixpanel

    mp = Mixpanel("YOUR_TOKEN")
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, pass a `Consumer` with `api_host` set:

    <CodeGroup>
      ```python EU theme={"system"}
      from mixpanel import Mixpanel, Consumer

      mp = Mixpanel("YOUR_TOKEN", consumer=Consumer(api_host="api-eu.mixpanel.com"))
      ```

      ```python India theme={"system"}
      from mixpanel import Mixpanel, Consumer

      mp = Mixpanel("YOUR_TOKEN", consumer=Consumer(api_host="api-in.mixpanel.com"))
      ```
    </CodeGroup>
  </Tab>

  <Tab title="PHP">
    ##### Install the SDK

    **Install with Composer**

    1. Add mixpanel/mixpanel-php as a dependency and run composer update:

    ```shell php theme={"system"}
    "require": {
        ...
        "mixpanel/mixpanel-php" : "2.*"
        ...
    }
    ```

    **Install Manually**

    1. [Download the Mixpanel PHP Library](https://github.com/mixpanel/mixpanel-php/archive/master.zip)
    2. Extract the zip file to a directory called "mixpanel-php" in your project root

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```shell php theme={"system"}
    <?php
    // import Mixpanel
    require 'mixpanel-php/lib/Mixpanel.php';

    // get the Mixpanel class instance, replace with your project token
    $mp = Mixpanel::getInstance("YOUR_TOKEN");

    ?>
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set the `host` option:

    <CodeGroup>
      ```php EU theme={"system"}
      <?php
      $mp = Mixpanel::getInstance("YOUR_TOKEN", array(
          "host" => "api-eu.mixpanel.com"
      ));
      ?>
      ```

      ```php India theme={"system"}
      <?php
      $mp = Mixpanel::getInstance("YOUR_TOKEN", array(
          "host" => "api-in.mixpanel.com"
      ));
      ?>
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Node">
    ##### Install the SDK

    ```shell Node.js theme={"system"}
    npm install mixpanel
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```js Node.js theme={"system"}
    // Grab the Mixpanel factory
    var Mixpanel = require("mixpanel");

    // Create an instance of the mixpanel client
    var mixpanel = Mixpanel.init("YOUR_TOKEN");
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set `host`:

    <CodeGroup>
      ```js EU theme={"system"}
      var mixpanel = Mixpanel.init("YOUR_TOKEN", {
        host: "api-eu.mixpanel.com",
      });
      ```

      ```js India theme={"system"}
      var mixpanel = Mixpanel.init("YOUR_TOKEN", {
        host: "api-in.mixpanel.com",
      });
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Go">
    ##### Install the SDK

    ```shell Go theme={"system"}
    go get github.com/mixpanel/mixpanel-go
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```shell Go theme={"system"}
    package main

    import (
    	"context"
    	"github.com/mixpanel/mixpanel-go"
    )

    func main() {
    ctx := context.Background()
    mp := mixpanel.NewApiClient("YOUR_TOKEN")
    }
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, pass the matching residency option:

    <CodeGroup>
      ```go EU theme={"system"}
      mp := mixpanel.NewApiClient("YOUR_TOKEN", mixpanel.EuResidency())
      ```

      ```go India theme={"system"}
      mp := mixpanel.NewApiClient("YOUR_TOKEN", mixpanel.InResidency())
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Ruby">
    ##### Install the SDK

    ```shell Ruby theme={"system"}
    gem install mixpanel-ruby
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```ruby Ruby theme={"system"}
    require 'mixpanel-ruby'

    mp = Mixpanel::Tracker.new(YOUR_TOKEN)
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, send messages through a consumer that uses the regional host:

    <CodeGroup>
      ```ruby EU theme={"system"}
      consumer = Mixpanel::Consumer.new(
        'https://api-eu.mixpanel.com/track',
        'https://api-eu.mixpanel.com/engage',
        'https://api-eu.mixpanel.com/groups',
      )

      mp = Mixpanel::Tracker.new(YOUR_TOKEN) do |type, message|
        consumer.send!(type, message)
      end
      ```

      ```ruby India theme={"system"}
      consumer = Mixpanel::Consumer.new(
        'https://api-in.mixpanel.com/track',
        'https://api-in.mixpanel.com/engage',
        'https://api-in.mixpanel.com/groups',
      )

      mp = Mixpanel::Tracker.new(YOUR_TOKEN) do |type, message|
        consumer.send!(type, message)
      end
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Java">
    ##### Install the SDK

    ```xml Java theme={"system"}
    <!--Include the following in your project's pom.xml-->
    <dependency>
      <groupId>com.mixpanel</groupId>
      <artifactId>mixpanel-java</artifactId>
      <version>1.4.4</version>
    </dependency>
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```java Java theme={"system"}
    //Import Mixpanel API
    import com.mixpanel.mixpanelapi.MessageBuilder;
    import com.mixpanel.mixpanelapi.MixpanelAPI;

    // Set up an instance of MixpanelAPI
    MixpanelAPI mixpanel = new MixpanelAPI();

    MessageBuilder messageBuilder = new MessageBuilder('YOUR_TOKEN');
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, pass the regional endpoints to `MixpanelAPI`:

    <CodeGroup>
      ```java EU theme={"system"}
      MixpanelAPI mixpanel = new MixpanelAPI("https://api-eu.mixpanel.com/track",
                                            "https://api-eu.mixpanel.com/engage",
                                            "https://api-eu.mixpanel.com/groups");
      ```

      ```java India theme={"system"}
      MixpanelAPI mixpanel = new MixpanelAPI("https://api-in.mixpanel.com/track",
                                            "https://api-in.mixpanel.com/engage",
                                            "https://api-in.mixpanel.com/groups");
      ```
    </CodeGroup>
  </Tab>

  <Tab title="React Native">
    ##### Install the SDK

    Under your app's root directory, run:

    ```sh theme={"system"}
    npm install mixpanel-react-native
    ```

    Under your application's iOS folder, run:

    ```sh theme={"system"}
    pod install
    ```

    Note: For XCode 12.5+, there is a known compile issue, please refer to this [workaround](https://github.com/mixpanel/mixpanel-react-native/issues/43#issuecomment-829599732).

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```javascript theme={"system"}
    //Import Mixpanel API
    import { Mixpanel } from "mixpanel-react-native";

    // Set up an instance of Mixpanel
    const trackAutomaticEvents = false;
    const mixpanel = new Mixpanel("YOUR_TOKEN", trackAutomaticEvents);
    mixpanel.init();
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, pass the regional host as the third argument to `init()`:

    <CodeGroup>
      ```javascript EU theme={"system"}
      mixpanel.init(false, {}, "https://api-eu.mixpanel.com");
      ```

      ```javascript India theme={"system"}
      mixpanel.init(false, {}, "https://api-in.mixpanel.com");
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Flutter">
    ##### Install the SDK

    Add `mixpanel_flutter: ^2.0.0` to your package's pubspec.yaml file and run:

    ```sh theme={"system"}
    flutter pub get
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```dart theme={"system"}
    import 'package:mixpanel_flutter/mixpanel_flutter.dart';
    class _YourClassState extends State<YourClass> {
      Mixpanel mixpanel;

      @override
      void initState() {
        super.initState();
        initMixpanel();
      }

      Future<void> initMixpanel() async {
        // Once you've called this method once, you can access `mixpanel` throughout the rest of your application.
        mixpanel = await Mixpanel.init("YOUR_TOKEN", trackAutomaticEvents: false);
      }
    }
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, pass `serverURL`:

    <CodeGroup>
      ```dart EU theme={"system"}
      mixpanel = await Mixpanel.init(
        "YOUR_TOKEN",
        trackAutomaticEvents: false,
        serverURL: "https://api-eu.mixpanel.com",
      );
      ```

      ```dart India theme={"system"}
      mixpanel = await Mixpanel.init(
        "YOUR_TOKEN",
        trackAutomaticEvents: false,
        serverURL: "https://api-in.mixpanel.com",
      );
      ```
    </CodeGroup>
  </Tab>

  <Tab title="iOS (Objective-C)">
    ##### Install the SDK

    <Tabs>
      <Tab title="Swift Package Manager">
        Note: Swift Package Manager requires Xcode 12+ 1. In Xcode, select File > Swift Packages > Add Package Dependency. 2. Follow the prompts using the URL for this repository and must select a version greater than or equal to v4.0.0
      </Tab>

      <Tab title="Cocoapods">
        1. Create a Podfile in your Xcode project directory by running `pod init` in your terminal, edit the Podfile generated, and add the following line: `pod
             'Mixpanel'`. 2. Run `pod install` in your Xcode project directory. CocoaPods should download and install the Mixpanel library, and create a new Xcode workspace. Open up this workspace in Xcode or typing `open *.xcworkspace` in your terminal.
      </Tab>

      <Tab title="Carthage">
        Add `github "mixpanel/mixpanel-iphone"` to your Cartfile.
      </Tab>
    </Tabs>

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```objc theme={"system"}
    #import "Mixpanel/Mixpanel.h"

    - (BOOL)application:(UIApplication _)application
      didFinishLaunchingWithOptions:(NSDictionary _)launchOptions {
      ...
      Mixpanel \*mixpanel = [Mixpanel sharedInstanceWithToken:@"YOUR_TOKEN"
      trackAutomaticEvents: NO];
      ...
      }
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set `serverURL` after initialization:

    <CodeGroup>
      ```objc EU theme={"system"}
      mixpanel.serverURL = @"https://api-eu.mixpanel.com";
      ```

      ```objc India theme={"system"}
      mixpanel.serverURL = @"https://api-in.mixpanel.com";
      ```
    </CodeGroup>
  </Tab>

  <Tab title="iOS (Swift)">
    ##### Install the SDK

    <Tabs>
      <Tab title="Swift Package Manager">
        Note: Swift Package Manager requires Xcode 12+

        1. In Xcode, select File > Swift Packages > Add Package Dependency.
        2. Paste the URL `https://github.com/mixpanel/mixpanel-swift` and a minimum semantic version of v2.8.0.
      </Tab>

      <Tab title="Cocoapods">
        1. Create a Podfile in your Xcode project directory by running `pod init` in your terminal, edit the Podfile generated, and add the following line: `pod 'Mixpanel-swift'`.
        2. Run `pod install` in your Xcode project directory. CocoaPods should download and install the Mixpanel library, and create a new Xcode workspace. Open up this workspace in Xcode or typing `open *.xcworkspace` in your terminal.
      </Tab>

      <Tab title="Carthage">
        Add `github "mixpanel/mixpanel-swift"` to your Cartfile.
      </Tab>
    </Tabs>

    ##### Configure the SDK

    1. Import Mixpanel into `AppDelegate.swift`
    2. Initialize Mixpanel within `application:didFinishLaunchingWithOptions` as seen below

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```swift theme={"system"}
    import Mixpanel

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        ...
        // Replace with your Project Token
        Mixpanel.initialize(token: "YOUR_TOKEN", trackAutomaticEvents: false)
        ...
    }
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set `serverURL` in `MixpanelOptions`:

    <CodeGroup>
      ```swift EU theme={"system"}
      let options = MixpanelOptions(
          token: "YOUR_TOKEN",
          serverURL: "https://api-eu.mixpanel.com"
      )
      Mixpanel.initialize(options: options)
      ```

      ```swift India theme={"system"}
      let options = MixpanelOptions(
          token: "YOUR_TOKEN",
          serverURL: "https://api-in.mixpanel.com"
      )
      Mixpanel.initialize(options: options)
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Android">
    ##### Install the SDK

    Add `implementation 'com.mixpanel.android:mixpanel-android:7.+'` as a dependency to your `build.gradle` file.

    Once you've updated `build.gradle`, you can force Android Studio to sync with your new configuration by clicking the Sync Project with Gradle Files icon at the top of the window:

    <Frame>
      ![Sync Android With Gradle](https://storage.googleapis.com/cdn-mxpnl-com/static/readme/android-sync-gradle.png)
    </Frame>

    If it cannot find the dependency, you should make sure you've specified `mavenCentral()` as a repository in `build.gradle`.

    Next, add the following permissions in your AndroidManifest.xml:

    ```java theme={"system"}
    <!--Required to allow the application to send events to Mixpanel.-->
    <uses-permission android:name="android.permission.INTERNET" />

    <!--Optional, but recommended so we can send data intelligently based on network conditions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- Optional, but recommended so events will contain information about bluetooth state-->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    ```

    ##### Configure the SDK

    Replace `YOUR_TOKEN` with your project token. You can find your token [here](https://mixpanel.com/settings/project).

    ```java theme={"system"}
    import com.mixpanel.android.mpmetrics.MixpanelAPI;

    public class MainActivity extends ActionBarActivity {
      private MixpanelAPI mp;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        trackAutomaticEvents = false;
        // Replace with your Project Token
        mp = MixpanelAPI.getInstance(this, "YOUR_TOKEN", trackAutomaticEvents);
      }
    }
    ```

    US projects use the SDK's default host and need no change. For an EU or India project, set `serverURL` with `MixpanelOptions`:

    <CodeGroup>
      ```java EU theme={"system"}
      MixpanelOptions options = new MixpanelOptions.Builder()
          .serverURL("https://api-eu.mixpanel.com")
          .build();

      mp = MixpanelAPI.getInstance(this, "YOUR_TOKEN", trackAutomaticEvents, options);
      ```

      ```java India theme={"system"}
      MixpanelOptions options = new MixpanelOptions.Builder()
          .serverURL("https://api-in.mixpanel.com")
          .build();

      mp = MixpanelAPI.getInstance(this, "YOUR_TOKEN", trackAutomaticEvents, options);
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Unity">
    ##### Install the SDK

    Add `https://github.com/mixpanel/mixpanel-unity.git#master` to the dependencies section of `com.mixpanel.unity`.

    Alternatively, you can download and install the .unitypackage file from our [releases page](https://github.com/mixpanel/mixpanel-unity/releases).

    ##### Configure the SDK

    To initialize the library, first open the unity project settings menu for Mixpanel. (Edit -> Project Settings -> Mixpanel) Then, enter your project token into the Token and Debug Token input fields within the inspector. You can find your token [here](https://mixpanel.com/settings/project).

    <Frame>
      ![unity\_screenshots](https://user-images.githubusercontent.com/36679208/152408022-62440f50-04c7-4ff3-b331-02d3d3122c9e.jpg)
    </Frame>

    US projects use the SDK's default host and need no change. For an EU or India project, set **API Host Address** in the same settings menu to `https://api-eu.mixpanel.com/` or `https://api-in.mixpanel.com/`.

    Note: If you prefer to initialize Mixpanel manually, you can select the `Manual Initialization` in the settings and call `Mixpanel.Init()` to initialize.

    To use mixpanel, add the following sample code to a part of your application:

    ```csharp theme={"system"}
    using mixpanel;
    ```

    You're
  </Tab>

  <Tab title="HTTP API">
    ##### Install the SDK

    <Note>
      No install required
    </Note>

    Using the HTTP API does not require an installation. **You're ready to move to the next step.**

    For an EU or India project, send [Ingestion API](/reference/ingestion-api) requests to `api-eu.mixpanel.com` or `api-in.mixpanel.com` instead of `api.mixpanel.com`.
  </Tab>
</Tabs>

# Integration / Framework Guides

<CardGroup cols={3}>
  <Card title="Segment" href="/docs/tracking-methods/integrations/segment" />

  <Card title="Google Tag Manager" href="/docs/tracking-methods/integrations/google-tag-manager" />

  <Card title="Ad Spend" href="/docs/tracking-methods/integrations/ad-spend" />

  <Card title="Amazon S3" href="/docs/tracking-methods/integrations/amazon-s3" />

  <Card title="Amazon Kafka" href="/docs/tracking-methods/integrations/aws-kafka" />

  <Card title="CMS & E-Commerce" href="/docs/tracking-methods/integrations/cms-ecommerce" />

  <Card title="Customer.io" href="https://customer.io/docs/cdp/destinations/connections/mixpanel?utm_source=mixpanel&utm_medium=partner" />

  <Card title="Freshpaint" href="/docs/tracking-methods/integrations/freshpaint" />

  <Card title="Google Cloud Storage" href="/docs/tracking-methods/integrations/google-cloud-storage" />

  <Card title="Google Pubsub" href="/docs/tracking-methods/integrations/google-pubsub" />

  <Card title="Google Sheets" href="/docs/tracking-methods/integrations/google-sheets" />

  <Card title="Langfuse" href="/docs/tracking-methods/integrations/langfuse" />

  <Card title="LaunchDarkly" href="/docs/tracking-methods/integrations/launchdarkly" />

  <Card title="mParticle" href="/docs/tracking-methods/integrations/mparticle" />

  <Card title="Next.js" href="/docs/tracking-methods/integrations/nextjs" />

  <Card title="Mobile Attribution Tracking" href="/docs/tracking-methods/integrations/mobile-attribution-tracking" />

  <Card title="Rudderstack" href="/docs/tracking-methods/integrations/rudderstack" />

  <Card title="Shopify" href="/docs/tracking-methods/integrations/shopify" />

  <Card title="Vendo for Shopify" href="https://apps.shopify.com/vendo?utm_source=mixpanel&utm_medium=partner" />

  <Card title="Snowplow" href="/docs/tracking-methods/integrations/snowplow" />

  <Card title="Stripe" href="/docs/tracking-methods/integrations/stripe" />

  <Card title="Tealium" href="/docs/tracking-methods/integrations/tealium" />
</CardGroup>

<hr />

<div className="extendedButtonComponent">
  <div className="bg-base100 rounded-xl">
    <h2 className="text-2xl font-medium mb-2 color:bg-purple200">
      Next: Identify Your Users
    </h2>

    <p>
      With Mixpanel installed, you’re now ready to identify the users who use
      your product.
    </p>

    <br />

    <ExtendedButton title="Identify Your Users" link="/docs/quickstart/identify-users/" />
  </div>
</div>

## FAQ

<AccordionGroup>
  <Accordion title="Does Mixpanel automatically track page views?">
    Yes, if you pass `track_pageview: true` in the `mixpanel.init()` call, Mixpanel will automatically track a "Page View" event every time a new page is loaded. Learn more [here](/docs/tracking-methods/sdks/javascript#tracking-page-views).
  </Accordion>

  <Accordion title="What are the recommended web configuration options?">
    When tracking on web, we recommend using localStorage, as this is more reliable:

    ```javascript theme={"system"}
    mixpanel.set_config({ persistence: "localStorage" });
    ```

    Please note that cross-subdomain tracking is not possible when using local storage. If your implementation requires cross-subdomain tracking, remove the persistence flag and use the default "cookie" persistence option.
  </Accordion>

  <Accordion title="Does Mixpanel use third-party cookies?">
    No, our Mixpanel JavaScript SDK does not set or use any third-party cookies. If you wish to disable cookies entirely, you can set the disable\_persistence option to true when initializing your Mixpanel JS instance. Note that disabling persistence will disable the use of super properties and anonymous -> identified user tracking.
  </Accordion>

  <Accordion title="How can I track in a privacy compliant way?">
    If a user opts out of tracking, you can call the `.optOutTracking()` method on any of our client-side SDKs; this prevents any subsequent data being tracked from that user's device. Learn more [here](/docs/privacy/protecting-user-data).

    For iOS specifically: Mixpanel does not use IDFA, so it does not require user permission through the AppTrackingTransparency(ATT) framework. For more details, refer to our [Apple App Developer Privacy Guidance](https://mixpanel.com/legal/app-store-privacy-details).
  </Accordion>
</AccordionGroup>
