> ## 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

> RevenueCatからOneSignalにアプリ内購入とサブスクリプションデータを同期して、パーソナライズされたメッセージングを実現します。

## 概要

RevenueCatは、プラットフォーム全体でアプリ内購入とサブスクリプションのライフサイクルを追跡するのに役立ちます。OneSignalを使用すると、このデータを使用して、ユーザーのサブスクリプションステータスに基づいてパーソナライズされたメッセージを送信できます。

この統合により、OneSignalのユーザータグが最新のサブスクリプション情報で自動的に更新されます。

### 主な利点

RevenueCat–OneSignal統合を使用すると、次のことができます：

* 無料トライアル中のユーザーまたはサブスクライブしたばかりのユーザーにオンボーディングメッセージを送信します。
* チャーンしたユーザーをアンケートや割引で再エンゲージします。
* 購入、請求の問題、または更新のトランザクションメッセージを送信します。

OneSignalの正確なサブスクリプションデータにより、キャンペーンはよりスマートで効果的になります。

***

## 要件

* [RevenueCatアカウント](https://www.revenuecat.com/docs/welcome/overview)
  * RevenueCat [*Purchases SDK*](https://www.revenuecat.com/docs/getting-started/quickstart)
  * [RevenueCat-OneSignal統合](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal)を理解する
* [統合されたSDK](./developers)を持つOneSignalアカウント
  * [データタグ](./add-user-data-tags)、[ユーザー](./users)、およびOneSignal [サブスクリプション](./subscriptions)を理解する

***

## セットアップ

### OneSignalをRevenueCatに接続する

1. RevenueCatダッシュボードで、プロジェクト設定に移動し、統合メニューから「OneSignal」を選択します。
2. OneSignalアプリIDとOneSignal APIキーを追加します。詳細については、[キーとID](./keys-and-ids)を参照してください。
3. RevenueCatが使用するタグ名を入力するか、デフォルトのタグ名を選択します。

### RevenueCatにOneSignal IDを渡す

RevenueCatは、OneSignalユーザーID（OneSignal ID）を使用して、RevenueCatユーザーの詳細に基づいてOneSignalのユーザータグを更新します。

<Warning>
  安定した識別子のために、OneSignalでExternal IDを設定する必要があります。セッション中に変更されると、OneSignal IDも変更され、RevenueCat接続が切断される可能性があります。
</Warning>

OneSignal IDをRevenueCatに渡すには、次の手順に従います：

<Steps>
  <Step title="OneSignalでExternal IDを設定する">
    OneSignalのExternal IDをメインユーザーIDに設定します。これは、SDK `login`メソッドで実行できます。

    * [モバイルSDK `login`メソッド](./mobile-sdk-reference#login-external-id)
    * [Web SDK `login`メソッド](./web-sdk-reference#login-external-id)
  </Step>

  <Step title="OneSignal IDを取得する">
    OneSignal IDを取得するには、ユーザーステートオブザーバーメソッドを使用することをお勧めしますが、getterメソッドも提供しています：

    * ユーザーステートオブザーバー：
      * [モバイルSDK `addObserver`ユーザーステート](./mobile-sdk-reference#addobserver-user-state)
      * [Web SDK `addObserver`ユーザーステート](./web-sdk-reference#addeventlistener-user-state)
    * Getterメソッド：
      * [モバイルSDK `getOneSignalId`メソッド](./mobile-sdk-reference#getonesignalid)
      * [Web SDK `OneSignalId`プロパティ](./web-sdk-reference#onesignal-user-onesignalid)
  </Step>

  <Step title="OneSignal IDをRevenueCatに渡す">
    OneSignal IDをRevenueCatに渡します。

    * RevenueCatプロパティ：`$onesignalUserId`
    * RevenueCatヘルパーメソッド：`setOneSignalUserID()`（推奨）
  </Step>
</Steps>

### RevenueCatイベントをOneSignalに送信する

OneSignal IDがRevenueCatにマッピングされているユーザーは、タグが自動的に更新されます。

#### 統合のテスト

<Steps>
  <Step title="サンドボックス購入を行う">
    新しいユーザーがアプリをインストールすることをシミュレートし、アプリフローを進めてサンドボックス購入を完了します。

    <Warning>
      RevenueCatでOneSignal IDが設定されていることを確認してください。
    </Warning>
  </Step>

  <Step title="必要なデバイスデータが収集されていることを確認する">
    RevenueCatで、購入したばかりのテストユーザーの顧客ビューに移動します。必要なすべてのデータがユーザーの属性としてリストされていることを確認してください。
  </Step>

  <Step title="OneSignalイベントが正常に配信されたことを確認する">
    顧客ビューで、顧客履歴のテスト購入イベントをクリックし、OneSignal統合イベントが存在し、正常に配信されたことを確認します。
  </Step>

  <Step title="OneSignalタグが更新されていることを確認する">
    OneSignalで、**Audience > Users**に移動し、OneSignal IDを検索します。RevenueCatによって更新されたタグが表示されるはずです。
  </Step>
</Steps>

<Check>
  統合が完了しました！ユーザーが購入するか、サブスクリプションステータスを更新すると、OneSignalのタグが自動的に更新されるのが確認できるはずです。
</Check>

***

## RevenueCatイベントタグ

RevenueCatのすべての自動更新サブスクリプションイベントについて、次のタグがOneSignalのユーザーに追加または更新されます。RevenueCatダッシュボードでタグを空白のままにすることで、特定のタグの値を送信しないことを選択できます。

| タグ                           | 説明                                                                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `app_user_id`                | イベントをトリガーしたRevenueCatアプリユーザーID                                                                                           |
| `period_type`                | 購入または更新の最新の期間タイプ。次のいずれか：`TRIAL`（無料トライアル用）、`INTRO`（または導入価格）、`NORMAL`（標準サブスクリプション）                                         |
| `purchased_at`               | 最新のサブスクリプション購入または更新のエポック時間（秒単位）                                                                                          |
| `expiration_at`              | 最新のサブスクリプション有効期限のエポック時間（秒単位）                                                                                             |
| `store`                      | `APP_STORE`、`PLAY_STORE`、または`STRIPE`のいずれか                                                                                |
| `environment`                | `SANDBOX`または`PRODUCTION`のいずれか                                                                                            |
| `last_event_type`            | ユーザーからの最新のイベントタイプ。次のいずれか：`INITIAL_PURCHASE`、`TRIAL_STARTED`、`TRIAL_CONVERTED`、`TRIAL_CANCELLED`、`RENEWAL`、`CANCELLATION` |
| `product_id`                 | ユーザーが購入または更新した最新のサブスクリプション製品識別子                                                                                          |
| `entitlement_ids`            | ユーザーがロック解除したRevenueCatエンタイトルメント識別子のカンマ区切り文字列                                                                             |
| `active_subscription`        | 購入/更新イベントでは`true`に設定され、`EXPIRATION`では`false`に設定されます                                                                      |
| `subscription_status`        | 下記のサブスクリプションステータス属性を参照                                                                                                   |
| `grace_period_expiration_at` | 請求の問題が発生した場合、猶予期間の有効期限を送信します。                                                                                            |

<Note>
  * 自動更新サブスクリプションのみ
  * RevenueCatは、自動更新サブスクリプションイベントに応じてOneSignalのデータタグのみを更新します。
</Note>

### RevenueCatイベントの例

提供されているJSON例は、[RevenueCatイベント](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal#events)に基づいてOneSignalに送信されるタグを示しています。

イベントは`last_event_type`タグとして保存されます。

<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`タグ

RevenueCatがOneSignalにイベントを送信するたびに、`subscription_status`タグが追加または更新され、次のいずれかの値を使用して該当する変更が適用されます：

| ステータス                | 説明                                                                   |
| :------------------- | :------------------------------------------------------------------- |
| active               | 顧客は、次回の更新日に更新される予定のアクティブな有料サブスクリプションを持っています。                         |
| intro                | 顧客は、有料の導入オファーを通じてアクティブな有料サブスクリプションを持っています。                           |
| cancelled            | 顧客は、次回の更新日に期限切れになる予定の有料サブスクリプションを持っています。                             |
| grace\_period        | 顧客は、更新に失敗した後に猶予期間に入った有料サブスクリプションを持っています。                             |
| trial                | 顧客は、トライアル期間の終了時に有料に変換される予定のトライアル期間中です。                               |
| cancelled\_trial     | 顧客は、トライアル期間の終了時に期限切れになる予定のトライアル期間中です。                                |
| grace\_period\_trial | 顧客はトライアル期間中で、更新に失敗した後に猶予期間に入りました。                                    |
| expired              | 顧客のサブスクリプションは期限切れになりました。                                             |
| promotional          | 顧客は、RevenueCatを通じてエンタイトルメントにアクセスできます                                 |
| expired\_promotional | 顧客は、以前はRevenueCat付与エンタイトルメントを通じてエンタイトルメントにアクセスできましたが、現在は期限切れになっています。 |
| paused               | 顧客は、一時停止され、将来のある日付に再開される予定の有料サブスクリプションを持っています。                       |

複数のアクティブなサブスクリプションを持つ顧客の場合、この属性は、最新のイベントが発生したサブスクリプションのステータスのみを表します。

***

## FAQ

### 統合が機能しているかどうかを知るにはどうすればよいですか？

OneSignalで、**Audience > Users**に移動し、OneSignal IDを検索します。RevenueCatによって更新されたタグが表示されるはずです。

**Audience > Segments**に移動して、RevenueCat経由で設定したタグをフィルタリングするセグメントを作成することもできます。

### いくつのタグを設定できますか？

OneSignalで設定できるタグの数に制限はありませんが、各ユーザーが一度に持つことができるタグの数には制限があります。

詳細については、[料金ページ](https://onesignal.com/pricing)を参照してください。

***
