> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixpanel.com/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 py-2.5 rounded-full shadow-sm hover:shadow-md transition-all bg-gradient-to-b from-[#9b7eff] to-[#7856ff] active:to-[#5028C0] no-underline">
    {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).

<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,
    });
    ```
  </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")
    ```
  </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");

    ?>
    ```
  </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");
    ```
  </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")
    }
    ```
  </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)
    ```
  </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');
    ```
  </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();
    ```
  </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);
      }
    }
    ```
  </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];
      ...
      }
    ```
  </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)
        ...
    }
    ```
  </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);
      }
    }
    ```
  </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>

    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.**
  </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>
