---
title: "Mixpanel"
description: "Güçlü abonelik analitiği için Mixpanel'i Adapty ile bağlayın."
---

[Mixpanel](https://mixpanel.com/home/), güçlü bir ürün analitik hizmetidir. Olay tabanlı takip çözümü, ürün ekiplerinin farklı platformlarda kullanıcı edinme, dönüşüm ve elde tutma stratejilerine ilişkin değerli içgörüler elde etmesini sağlar.

Bu entegrasyon, tüm Adapty olaylarını Mixpanel'e aktarmanıza olanak tanır. Böylece abonelik işinize ve kullanıcı davranışlarına dair çok daha kapsamlı bir bakış açısı kazanırsınız. Adapty, mağazalardan gelen [abonelik olaylarını](events) tek bir yerde takip etmenizi sağlayan eksiksiz bir veri seti sunar. Adapty ile abonelerinizin nasıl davrandığını kolayca görebilir, neleri sevdiklerini öğrenebilir ve bu bilgileri hedefli ve etkili iletişim kurmak için kullanabilirsiniz.

## Mixpanel entegrasyonu nasıl kurulur \{#how-to-set-up-mixpanel-integration\}

1. Adapty Kontrol Paneli'nde [Integrations -> Mixpanel](https://app.adapty.io/integrations/mixpanel) sayfasını açın.
2. Geçişi etkinleştirin ve **Mixpanel Token**'ınızı girin. Tüm platformlar için tek bir token belirleyebilir ya da yalnızca belirli platformlardan veri almak istiyorsanız bunu platformlara göre sınırlayabilirsiniz.

  <img src="/assets/shared/img/mixpanel.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

### Mixpanel Token'ınızı bulma \{#finding-your-mixpanel-token\}

**Mixpanel Token**'ınızı almak için:

1. [Mixpanel Dashboard](https://mixpanel.com/settings/project/)'unuza giriş yapın.
2. **Settings** bölümünü açın ve **Organization Settings** seçeneğini tıklayın.

  <img src="/assets/shared/img/mixpanel-settings.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

3. Sol kenar çubuğundan **Projects** bölümüne gidin ve projenizi seçin.

  <img src="/assets/shared/img/mixpanel-project-id.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

## Entegrasyon nasıl çalışır \{#how-the-integration-works\}

Adapty, kullanıcı kimliği ve gelir gibi ilgili olay özelliklerini otomatik olarak [Mixpanel'e özgü özelliklere](https://docs.mixpanel.com/docs/data-structure/user-profiles) eşler. Bu sayede abonelikle ilgili olaylar doğru bir şekilde takip edilir ve raporlanır.

Bunun yanı sıra Adapty, kullanıcı başına gelir verilerini biriktirir ve `subscription state` ile `subscription product ID` dahil olmak üzere [Kullanıcı Profil Özelliklerini](https://docs.mixpanel.com/docs/data-structure/user-profiles) günceller. Bir olay alındığında Mixpanel, ilgili alanları gerçek zamanlı olarak günceller.

## Olaylar ve etiketler \{#events-and-tags\}

Kimlik bilgilerinin altında, Adapty'den Mixpanel'e gönderebileceğiniz üç grup olay bulunur. İhtiyacınız olanları açmanız yeterli. Adapty'nin sunduğu olayların tam listesine [buradan](events) ulaşabilirsiniz.

  <img src="/assets/shared/img/mixpanel-events.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Adapty'nin sağladığı varsayılan olay adlarını kullanmanızı öneririz. Ancak ihtiyacınıza göre olay adlarını değiştirebilirsiniz.

## SDK yapılandırması \{#sdk-configuration\}

`mixpanelUserId` ayarlamak için `.setIntegrationIdentifier()` metodunu kullanın. Bu değer ayarlanmazsa Adapty, kullanıcı kimliğinizi (`customerUserId`) ya da bu değer null ise Adapty ID'sini kullanır. Uygulamanızdan Mixpanel'e veri göndermek için kullandığınız kullanıcı kimliğinin Adapty'e gönderdiğinizle aynı olduğundan emin olun.

---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="note">
Üçüncü taraf bir kullanıcı kimliğini Customer User ID olarak kullanıyorsanız, bunu `activate()` sırasında geçirmeyin — üçüncü taraf SDK henüz bu kimliği oluşturmamış olabilir. Bunun yerine önce CUID olmadan `activate()` çağrısı yapın, ardından `setIntegrationIdentifier()` ve son olarak CUID ile `identify()` çağrısını gerçekleştirin.
</Callout>

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="iOS (Swift)" default>

```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "mixpanel_user_id", 
        value: Mixpanel.mainInstance().distinctId
    )
} catch {
    // handle the error
}
```
</TabItem>
<TabItem value="swift-callback" label="iOS (Swift-Callback)" default>

```swift showLineNumbers

let builder = AdaptyProfileParameters.Builder()
            .with(mixpanelUserId: Mixpanel.mainInstance().distinctId)

Adapty.updateProfile(params: builder.build())
```
</TabItem>
<TabItem value="kotlin" label="Android (Kotlin)" default>

```kotlin showLineNumbers
Adapty.setIntegrationIdentifier("mixpanel_user_id", mixpanelAPI.distinctId) { error ->
    if (error != null) {
        // handle the error
    }
}
```
</TabItem>
<TabItem value="flutter" label="Flutter (Dart)" default>

```javascript showLineNumbers

final mixpanel = await Mixpanel.init("Your Token", trackAutomaticEvents: true);
final distinctId = await mixpanel.getDistinctId();

try {
    await Adapty().setIntegrationIdentifier(
        key: "mixpanel_user_id", 
        value: distinctId,
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```
</TabItem>
<TabItem value="unity" label="Unity (C#)" default>

```csharp showLineNumbers
using AdaptySDK;

var distinctId = Mixpanel.DistinctId;

if (distinctId != null) {
  Adapty.SetIntegrationIdentifier(
    "mixpanel_user_id", 
    distinctId, 
    (error) => {
    // handle the error
  });
}
```
</TabItem>
<TabItem value="rn" label="React Native (TS)" default>

```typescript showLineNumbers

// If you already have a shared Mixpanel instance in your app, use that instance instead.
const trackAutomaticEvents = true;
const mixpanel = new Mixpanel('YOUR_PROJECT_TOKEN', trackAutomaticEvents);
await mixpanel.init();

// This is Mixpanel's current distinct_id (auto-generated, or set via mixpanel.identify(...))
const mixpanelUserId = await mixpanel.getDistinctId();

try {
    await adapty.setIntegrationIdentifier("mixpanel_user_id", mixpanelUserId);
} catch (error) {
    // handle `AdaptyError`
}
```
</TabItem>
</Tabs>

## Mixpanel olay yapısı \{#mixpanel-event-structure\}

Adapty, olayları Mixpanel'e `track` metodu aracılığıyla gönderir. Olay özellikleri şu şekilde yapılandırılmıştır:

```json
{
  "event": "subscription_renewed",
  "properties": {
    "ip": 0,
    "time": 1709294400,
    "$insert_id": "123e4567-e89b-12d3-a456-426614174000",
    "vendor_product_id": "yearly.premium.6999",
    "original_transaction_id": "GPA.3383...",
    "currency": "USD",
    "environment": "Production",
    "store": "app_store",
    "purchase_date": "2024-03-01T12:00:00.000000+0000"
  }
}
```

Parametreler:

| Parametre                            | Tür     | Açıklama                                                        |
|:-------------------------------------|:--------|:----------------------------------------------------------------|
| `event`                              | String  | Olay adı (Adapty olayından eşlenir).                            |
| `properties`                         | Object  | Olay özellikleri.                                               |
| `properties.ip`                      | Integer | IP adresi (sunucudan sunucuya iletimde 0 olarak gönderilir).    |
| `properties.time`                    | Long    | Olayın saniye cinsinden UNIX zaman damgası.                     |
| `properties.$insert_id`              | String  | Tekilleştirme için benzersiz olay kimliği (UUID).               |
| `properties.vendor_product_id`       | String  | Mağazadaki Ürün Kimliği.                                        |
| `properties.original_transaction_id` | String  | Orijinal işlem kimliği.                                         |
| `properties.currency`                | String  | Para birimi kodu.                                               |
| `properties.store`                   | String  | Mağaza adı (örn. "app_store").                                  |
| `properties.environment`             | String  | Ortam ("Sandbox" veya "Production").                            |

### Kullanıcı profili güncellemeleri \{#user-profile-updates\}

Adapty aynı zamanda `people_set` aracılığıyla Mixpanel Kullanıcı Profilini şu özelliklerle günceller:

| Parametre                 | Tür    | Açıklama                                                       |
|:--------------------------|:-------|:---------------------------------------------------------------|
| `subscription_state`      | String | Mevcut abonelik durumu (örn. "subscribed").                    |
| `subscription_product_id` | String | Aktif abonelik ürününün kimliği.                               |