> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/mixpanel/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Ingestion Overview

> Learn about different methods to send data to Mixpanel

# Data Ingestion Overview

Mixpanel offers multiple methods to ingest data into your project. Choose the approach that best fits your technical requirements and use cases.

<img src="https://mintlify.s3.us-west-1.amazonaws.com/mixpanel-docs/tracking_methods.webp" alt="client-side vs server-side" />

## Available Ingestion Methods

<CardGroup cols={2}>
  <Card title="SDKs" icon="code" href="/data-ingestion/sdks">
    Native libraries for web, mobile, and server environments
  </Card>

  <Card title="Integrations" icon="plug" href="/data-ingestion/integrations">
    Connect third-party tools and CDPs like Segment and Google Tag Manager
  </Card>

  <Card title="HTTP API" icon="globe" href="/data-ingestion/api-ingestion">
    Direct API access for custom implementations
  </Card>

  <Card title="Warehouse Connectors" icon="database" href="/docs/tracking-methods/warehouse-connectors">
    Import data from Snowflake, BigQuery, and other warehouses
  </Card>
</CardGroup>

## Choosing the Right Method

If you use our SDKs, there are two general approaches to track events: client-side and server-side. The approach you choose has implications on the quality and comprehensiveness of your data.

**We recommend tracking everything you possibly can via your servers**, and only supplementing that with client-side tracking when necessary.

### Server-Side Tracking

In this method, you send events from your servers to Mixpanel. For example, when a user loads a web page, a request is made to your web application server. In the code that handles the request, you can create a "Page Loaded" event and send it to Mixpanel.

**Pros**

* Reliable, not susceptible to ad-blockers
* Data is consistent across platforms
* Easier to fix integration mistakes quickly

**Cons**

* Harder to track user interactions that only happen on the client
* Requires some custom code to track anonymous (non-logged in) users across requests

**Server-Side SDKs**

* [Python](/docs/tracking-methods/sdks/python)
* [Node.js](/docs/tracking-methods/sdks/nodejs)
* [PHP](/docs/tracking-methods/sdks/php)
* [Go](/docs/tracking-methods/sdks/go)
* [Java](/docs/tracking-methods/sdks/java)

### Client-Side Tracking

In this method, events are generated on the client device and sent to the Mixpanel API. There are two types of client-side tracking: web (Javascript) and mobile.

**Pros**

* Easy to track client-side actions and state
* Easy to track anonymous (non-logged in) user data

**Cons**

* Unreliable, due to ad-blockers. You may lose events for 30-50% of your users
* Difficult to keep metrics consistent across web, iOS, and Android
* Difficult to fix integration mistakes quickly (particularly on mobile)
* Tracking will diverge over time due to old mobile clients

**Client-Side SDKs**

* [Javascript](/docs/tracking-methods/sdks/javascript)
* [React Native](/docs/tracking-methods/sdks/react-native)
* [Android](/docs/tracking-methods/sdks/android)
* [iOS (Objective-C)](/docs/tracking-methods/sdks/ios)
* [iOS (Swift)](/docs/tracking-methods/sdks/swift)
* [Flutter](/docs/tracking-methods/sdks/flutter)
* [Unity](/docs/tracking-methods/sdks/unity)

<Note>
  Mixpanel client-side SDK uses the [/track API endpoint](https://developer.mixpanel.com/reference/track-event#limits) which by default only ingests events in the last 5 days.
</Note>

### Client-Side Tracking via a Proxy

A proxy is helpful in a client-side web setting to [reduce the likelihood of ad-blockers impacting your tracking](https://www.youtube.com/watch?v=8Pv6tmRfqr8). See the [JavaScript SDK documentation](/docs/tracking-methods/sdks/javascript#tracking-via-proxy) for setup instructions.

## Integration with CDPs and Tag Managers

If you already track events via a CDP, Tag Manager, or via your data warehouse using tools like Snowplow, you can route those events to Mixpanel with our native integrations:

* [Segment](https://segment.com/docs/connections/destinations/catalog/actions-mixpanel/)
* [Rudderstack](https://rudderstack.com/integration/mixpanel/)
* [Google Tag Manager](https://github.com/mixpanel/mixpanel-gtm-template#readme)

We can also load data directly from data warehouses like [Snowflake](/docs/data-pipelines/integrations/snowflake) and [BigQuery](/docs/data-pipelines/integrations/bigquery).

## Next Steps

<CardGroup cols={2}>
  <Card title="Explore SDKs" icon="code" href="/data-ingestion/sdks">
    Browse our native libraries for all major platforms
  </Card>

  <Card title="Best Practices" icon="lightbulb" href="/data-ingestion/best-practices">
    Learn how to implement scalable, maintainable tracking
  </Card>
</CardGroup>
