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

# RevenueCat

> Kişiselleştirilmiş mesajlaşma için uygulama içi satın alma ve abonelik verilerini RevenueCat'ten OneSignal'e senkronize edin.

## Genel bakış

RevenueCat, platformlar arası uygulama içi satın almaları ve abonelik yaşam döngülerini izlemenize yardımcı olur. OneSignal ile, kullanıcının abonelik durumuna göre kişiselleştirilmiş mesajlar göndermek için bu verileri kullanabilirsiniz.

Bu entegrasyon, OneSignal'deki kullanıcı etiketlerini en son abonelik bilgileriyle otomatik olarak günceller.

### Ana faydalar

RevenueCat–OneSignal entegrasyonu ile şunları yapabilirsiniz:

* Ücretsiz denemede olan veya yeni abone olan kullanıcılara onboarding mesajları gönderin.
* Anketler veya indirimlerle kayıp kullanıcıları yeniden etkileşime geçirin.
* Satın almalar, faturalama sorunları veya yenilemeler için işlemsel mesajlar gönderin.

OneSignal'de doğru abonelik verileriyle, kampanyalarınız daha akıllı ve daha etkili olacaktır.

***

## Gereksinimler

* [RevenueCat hesabı](https://www.revenuecat.com/docs/welcome/overview)
  * RevenueCat [*Purchases SDK*](https://www.revenuecat.com/docs/getting-started/quickstart)
  * [RevenueCat-OneSignal entegrasyonu](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal)'nu anlayın
* [Entegre SDK](./developers) ile OneSignal hesabı
  * [Tags](./add-user-data-tags), [Users](./users) ve OneSignal [Subscriptions](./subscriptions)'ı anlayın

***

## Kurulum

### OneSignal'i RevenueCat'e bağlayın

1. RevenueCat dashboard'unuzda, proje ayarlarınıza gidin ve Integrations menüsünden 'OneSignal'i seçin.
2. OneSignal Uygulama ID'nizi ve OneSignal API anahtarınızı ekleyin. Daha fazla bilgi için [Keys and IDs](./keys-and-ids)'e bakın.
3. RevenueCat'in kullanması gereken etiket adlarını girin veya varsayılan etiket adlarını seçin.

### OneSignal ID'yi RevenueCat'e iletin

RevenueCat, kullanıcıların RevenueCat kullanıcı detaylarına göre OneSignal'deki kullanıcı etiketlerini güncellemek için OneSignal kullanıcı ID'sini (OneSignal ID) kullanır.

<Warning>
  OneSignal'de External ID ayarlanması, kararlı bir tanımlayıcı için gereklidir. Oturum ortasında değişirse, OneSignal ID de değişebilir ve RevenueCat bağlantısı kesilir.
</Warning>

OneSignal ID'yi RevenueCat'e iletmek için şunları yapmalısınız:

<Steps>
  <Step title="OneSignal'de External ID'yi ayarlayın">
    OneSignal'deki External ID'yi ana kullanıcı ID'nize ayarlayın. Bu, SDK `login` yöntemiyle yapılabilir.

    * [Mobile SDK `login` yöntemi](./mobile-sdk-reference#login-external-id)
    * [Web SDK `login` yöntemi](./web-sdk-reference#login-external-id)
  </Step>

  <Step title="OneSignal ID'yi alın">
    OneSignal ID'yi almak için kullanıcı durumu gözlemci yöntemini kullanmanızı öneririz, ancak ayrıca getter yöntemleri de sağlıyoruz:

    * Kullanıcı durumu gözlemcileri:
      * [Mobile SDK `addObserver` kullanıcı durumu](./mobile-sdk-reference#addobserver-user-state)
      * [Web SDK `addObserver` kullanıcı durumu](./web-sdk-reference#addeventlistener-user-state)
    * Getter yöntemleri:
      * [Mobile SDK `getOneSignalId` yöntemi](./mobile-sdk-reference#getonesignalid)
      * [Web SDK `OneSignalId` özelliği](./web-sdk-reference#onesignal-user-onesignalid)
  </Step>

  <Step title="OneSignal ID'yi RevenueCat'e iletin">
    OneSignal ID'yi RevenueCat'e iletin.

    * RevenueCat özelliği: `$onesignalUserId`
    * RevenueCat yardımcı yöntemi: `setOneSignalUserID()` (önerilir)
  </Step>
</Steps>

### RevenueCat olaylarını OneSignal'e gönderin

RevenueCat'e eşlenmiş bir OneSignal ID'si olan kullanıcıların etiketleri otomatik olarak güncellenecektir.

#### Entegrasyonu test etme

<Steps>
  <Step title="Bir sandbox satın alması yapın">
    Uygulamanızı yükleyen yeni bir kullanıcıyı simüle edin ve bir sandbox satın almasını tamamlamak için uygulama akışınızdan geçin.

    <Warning>
      OneSignal ID'sinin RevenueCat'te ayarlandığından emin olun.
    </Warning>
  </Step>

  <Step title="Gerekli cihaz verilerinin toplandığını kontrol edin">
    RevenueCat'te, az önce satın alma yapan test kullanıcısı için Müşteri Görünümüne gidin. Gerekli tüm verilerin kullanıcı için özellik olarak listelendiğinden emin olun.
  </Step>

  <Step title="OneSignal olayının başarıyla teslim edildiğini kontrol edin">
    Hala Müşteri Görünümündeyken, Müşteri Geçmişindeki test satın alma olayına tıklayın ve OneSignal entegrasyon olayının mevcut olduğundan ve başarıyla teslim edildiğinden emin olun.
  </Step>

  <Step title="OneSignal etiketlerinin güncellendiğini kontrol edin">
    OneSignal'de, **Audience > Users**'a gidin ve OneSignal ID'yi arayın. RevenueCat tarafından güncellenen etiketleri görmelisiniz.
  </Step>
</Steps>

<Check>
  Entegrasyon tamamlandı! Kullanıcılar satın alma yaptıkça veya abonelik durumlarını güncelledikçe artık OneSignal'deki etiketlerin otomatik olarak güncellendiğini görmelisiniz.
</Check>

***

## RevenueCat olay etiketleri

RevenueCat'teki her otomatik yenilenen abonelik olayı için, aşağıdaki etiketler OneSignal'deki kullanıcıya eklenir veya güncellenir. RevenueCat dashboard'unda etiketi boş bırakarak, belirli etiket(ler) için herhangi bir değer göndermemeyi seçebilirsiniz.

| Etiket                       | Açıklama                                                                                                                                                          |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `app_user_id`                | Olayı tetikleyen RevenueCat Uygulama Kullanıcı ID'si                                                                                                              |
| `period_type`                | Satın alma veya yenileme için en son dönem türü. Ya: `TRIAL` (ücretsiz denemeler için), `INTRO` (tanıtım fiyatlandırması için) ya da `NORMAL` (standart abonelik) |
| `purchased_at`               | En son abonelik satın alması veya yenilemesinin Epoch zamanı (saniye cinsinden)                                                                                   |
| `expiration_at`              | En son abonelik bitiş tarihinin Epoch zamanı (saniye cinsinden)                                                                                                   |
| `store`                      | Ya `APP_STORE`, `PLAY_STORE` ya da `STRIPE`                                                                                                                       |
| `environment`                | Ya `SANDBOX` ya da `PRODUCTION`                                                                                                                                   |
| `last_event_type`            | Kullanıcıdan gelen en son olay türü. Ya: `INITIAL_PURCHASE`, `TRIAL_STARTED`, `TRIAL_CONVERTED`, `TRIAL_CANCELLED`, `RENEWAL`, `CANCELLATION`                     |
| `product_id`                 | Kullanıcının satın aldığı veya yenilediği en son abonelik ürün tanımlayıcısı                                                                                      |
| `entitlement_ids`            | Kullanıcının kilidi açtığı RevenueCat Entitlement tanımlayıcılarının virgülle ayrılmış dizesi                                                                     |
| `active_subscription`        | Değer herhangi bir satın alma/yenileme olayında `true` ve `EXPIRATION`'da `false` olarak ayarlanacaktır                                                           |
| `subscription_status`        | Aşağıdaki Abonelik Durumu Özelliği'ne bakın                                                                                                                       |
| `grace_period_expiration_at` | Faturalama sorunu oluşursa, ek süre bitiş tarihini göndereceğiz.                                                                                                  |

<Note>
  * Yalnızca otomatik yenilenen abonelikler
  * RevenueCat, OneSignal'deki veri etiketlerini yalnızca otomatik yenilenen abonelik olaylarına yanıt olarak günceller.
</Note>

### RevenueCat olay örnekleri

Sağlanan JSON örnekleri, [RevenueCat Events](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal#events)'e göre OneSignal'e gönderilen etiketleri gösterir.

Olay, `last_event_type` etiketi olarak kaydedilir.

<Tabs>
  <Tab title="initial_purchase">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1600016247,
            "expiration_at": 1602608247,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "initial_purchase",
            "last_event_at": 1600016250,
            "product_id": "monthly_sub",
            "entitlement_ids": "Pro"
        }
    }
    ```
  </Tab>

  <Tab title="trial_started">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "TRIAL",
            "purchased_at": 1600031584,
            "expiration_at": 1600290784,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "trial_started",
            "last_event_at": 1600031586,
            "product_id": "three_month_sub_trial",
            "entitlement_ids": "Pro"
        }
    }
    ```
  </Tab>

  <Tab title="trial_converted">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1602136340,
            "expiration_at": 1602741140,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "trial_converted",
            "last_event_at": 1602114850,
            "product_id": "weekly_sub_trial",
            "entitlement_ids": null
        }
    }
    ```
  </Tab>

  <Tab title="trial_cancelled">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "TRIAL",
            "purchased_at": 1602051920,
            "expiration_at": 1602311120,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "trial_cancelled",
            "last_event_at": 1602129368,
            "product_id": "weekly_sub_trial",
            "entitlement_ids": null
        }
    }
    ```
  </Tab>

  <Tab title="renewal">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1602125078,
            "expiration_at": 1604807078,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "renewal",
            "last_event_at": 1602122793,
            "product_id": "monthly_sub",
            "entitlement_ids": "Pro"
        }
    }
    ```
  </Tab>

  <Tab title="cancellation">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1602086660,
            "expiration_at": 1602691460,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "cancellation",
            "last_event_at": 1602118600,
            "product_id": "weekly_sub",
            "entitlement_ids": null
        }
    }
    ```
  </Tab>

  <Tab title="uncancellation">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "TRIAL",
            "purchased_at": 1663445025,
            "expiration_at": 1664049825,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "uncancellation",
            "last_event_at": 1663969096,
            "product_id": "annual_sub",
            "entitlement_ids": "Premium"
        }
    }
    ```
  </Tab>

  <Tab title="non_subscription_purchase">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "purchased_at": 1602086660,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "non_renewing_purchase",
            "last_event_at": 1602118600,
            "product_id": "one_time_purchase_product",
            "entitlement_ids": null
        }
    }
    ```
  </Tab>

  <Tab title="subscription_paused">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1602086660,
            "expiration_at": 1602691460,
            "store": "PLAY_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "subscription_paused",
            "last_event_at": 1602118600,
            "product_id": "weekly_sub",
            "auto_resume_at": 1602119600,
            "entitlement_ids": null
        }
    }
    ```
  </Tab>

  <Tab title="expiration">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "period_type": "NORMAL",
            "purchased_at": 1652374230,
            "expiration_at": 1652979030,
            "last_event_type": "expiration",
            "last_event_at": 1652988735
        }
    }
    ```
  </Tab>

  <Tab title="billing_issue">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "TRIAL",
            "purchased_at": 1652383957,
            "expiration_at": 1654371157,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "billing_issue",
            "last_event_at": 1652988776,
            "product_id": "annual_sub",
            "entitlement_ids": "Premium"
        }
    }
    ```
  </Tab>

  <Tab title="product_change">
    ```json theme={null}
    {
        "app_id": "12345678-1234-1234-1234-123456789012",
        "tags": {
            "app_user_id": "$RCAnonymousID:87c6049c58069238dce29853916d624c",
            "period_type": "NORMAL",
            "purchased_at": 1602086660,
            "expiration_at": 1602691460,
            "store": "APP_STORE",
            "environment": "PRODUCTION",
            "last_event_type": "product_change",
            "last_event_at": 1602118600,
            "product_id": "weekly_sub",
            "new_product_id": "monthly_sub",
            "entitlement_ids": null
        }
    }
    ```
  </Tab>
</Tabs>

### `subscription_status` etiketi

RevenueCat, OneSignal'e bir olay gönderdiğinde, aşağıdaki değerlerden birini kullanarak uygulanabilir değişikliklerle birlikte bir `subscription_status` etiketi eklenir veya güncellenir:

| Durum                | Açıklama                                                                                                              |
| :------------------- | :-------------------------------------------------------------------------------------------------------------------- |
| active               | Müşterinin, bir sonraki yenileme tarihinde yenilenecek şekilde ayarlanmış aktif, ücretli bir aboneliği vardır.        |
| intro                | Müşterinin, ücretli bir tanıtım teklifi aracılığıyla aktif, ücretli bir aboneliği vardır.                             |
| cancelled            | Müşterinin, bir sonraki yenileme tarihinde sona erecek şekilde ayarlanmış ücretli bir aboneliği vardır.               |
| grace\_period        | Müşteri, başarıyla yenilenemeyen ücretli bir aboneliğin ardından ek süreye girmiştir.                                 |
| trial                | Müşteri, deneme süresi sonunda ücretliye dönüşecek şekilde ayarlanmış bir deneme süresindedir.                        |
| cancelled\_trial     | Müşteri, deneme süresi sonunda sona erecek şekilde ayarlanmış bir deneme süresindedir.                                |
| grace\_period\_trial | Müşteri bir deneme süresindeydi ve başarıyla yenilenemeyen bir aboneliğin ardından şimdi ek süreye girdi.             |
| expired              | Müşterinin aboneliğinin süresi doldu.                                                                                 |
| promotional          | Müşteri, bir RevenueCat aracılığıyla bir yetkilendirmeye erişime sahiptir                                             |
| expired\_promotional | Müşteri daha önce süresi dolan bir RevenueCat Verilen Yetkilendirme aracılığıyla bir yetkilendirmeye erişime sahipti. |
| paused               | Müşterinin, duraklatılmış ve gelecekte bir tarihte devam edecek şekilde ayarlanmış ücretli bir aboneliği vardır.      |

Birden fazla aktif aboneliği olan müşteriler için, bu özellik yalnızca en son olayın gerçekleştiği aboneliğin durumunu temsil edecektir.

***

## SSS

### Entegrasyonun çalışıp çalışmadığını nasıl anlarım?

OneSignal'de, **Audience > Users**'a gidin ve OneSignal ID'yi arayın. RevenueCat tarafından güncellenen etiketleri görmelisiniz.

Ayrıca **Audience > Segments**'e gidip RevenueCat aracılığıyla ayarladığınız etiketleri filtreleyen bir segment oluşturabilirsiniz.

### Kaç etiket ayarlayabilirim?

OneSignal'de ayarlayabileceğiniz etiket sayısında bir sınır yoktur, ancak her kullanıcının belirli bir zamanda sahip olabileceği etiket sayısında bir sınır vardır.

Daha fazla bilgi için [Pricing sayfamıza](https://onesignal.com/pricing) bakın.

***
