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

> Synchronisez les données d'achats intégrés et d'abonnements de RevenueCat vers OneSignal pour une messagerie personnalisée.

## Aperçu

RevenueCat vous aide à suivre les achats intégrés et les cycles de vie des abonnements sur toutes les plateformes. Avec OneSignal, vous pouvez utiliser ces données pour envoyer des messages personnalisés en fonction du statut d'abonnement d'un utilisateur.

Cette intégration met à jour automatiquement les tags utilisateur dans OneSignal avec leurs dernières informations d'abonnement.

### Principaux avantages

Avec l'intégration RevenueCat–OneSignal, vous pouvez :

* Envoyer des messages d'accueil aux utilisateurs en période d'essai gratuite ou qui viennent de s'abonner.
* Réengager les utilisateurs désabonnés avec des sondages ou des réductions.
* Envoyer des messages transactionnels pour les achats, les problèmes de facturation ou les renouvellements.

Avec des données d'abonnement précises dans OneSignal, vos campagnes seront plus intelligentes et plus efficaces.

***

## Prérequis

* [Compte RevenueCat](https://www.revenuecat.com/docs/welcome/overview)
  * RevenueCat [*Purchases SDK*](https://www.revenuecat.com/docs/getting-started/quickstart)
  * Comprendre l'[intégration RevenueCat-OneSignal](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal)
* Compte OneSignal avec [SDK intégré](./developers)
  * Comprendre les [Tags](./add-user-data-tags), les [Utilisateurs](./users) et les [Abonnements](./subscriptions) OneSignal

***

## Configuration

### Connecter OneSignal à RevenueCat

1. Dans votre tableau de bord RevenueCat, accédez aux paramètres de votre projet et choisissez 'OneSignal' dans le menu Intégrations.
2. Ajoutez votre identifiant d'application OneSignal et votre clé API OneSignal. Consultez [Clés et identifiants](./keys-and-ids) pour plus d'informations.
3. Saisissez les noms de tags que RevenueCat doit utiliser, ou choisissez les noms de tags par défaut.

### Transmettre l'identifiant OneSignal à RevenueCat

RevenueCat utilise l'identifiant utilisateur OneSignal (OneSignal ID) pour mettre à jour les tags utilisateur dans OneSignal en fonction des détails utilisateur RevenueCat.

<Warning>
  La définition de l'identifiant externe dans OneSignal est requise pour un identifiant stable. S'il change en cours de session, l'identifiant OneSignal peut également changer, rompant ainsi la connexion RevenueCat.
</Warning>

Pour transmettre l'identifiant OneSignal à RevenueCat, vous devez :

<Steps>
  <Step title="Définir l'identifiant externe dans OneSignal">
    Définissez l'identifiant externe dans OneSignal avec votre identifiant utilisateur principal. Cela peut être effectué avec la méthode `login` du SDK.

    * [Méthode `login` du SDK Mobile](./mobile-sdk-reference#login-external-id)
    * [Méthode `login` du SDK Web](./web-sdk-reference#login-external-id)
  </Step>

  <Step title="Obtenir l'identifiant OneSignal">
    Nous recommandons d'utiliser la méthode d'observateur d'état utilisateur pour obtenir l'identifiant OneSignal, mais nous fournissons également des méthodes getter :

    * Observateurs d'état utilisateur :
      * [État utilisateur `addObserver` du SDK Mobile](./mobile-sdk-reference#addobserver-user-state)
      * [État utilisateur `addObserver` du SDK Web](./web-sdk-reference#addeventlistener-user-state)
    * Méthodes getter :
      * [Méthode `getOneSignalId` du SDK Mobile](./mobile-sdk-reference#getonesignalid)
      * [Propriété `OneSignalId` du SDK Web](./web-sdk-reference#onesignal-user-onesignalid)
  </Step>

  <Step title="Transmettre l'identifiant OneSignal à RevenueCat">
    Transmettez l'identifiant OneSignal à RevenueCat.

    * Propriété RevenueCat : `$onesignalUserId`
    * Méthode d'assistance RevenueCat : `setOneSignalUserID()` (recommandée)
  </Step>
</Steps>

### Envoyer les événements RevenueCat vers OneSignal

Les utilisateurs ayant un identifiant OneSignal mappé avec RevenueCat verront leurs tags mis à jour automatiquement.

#### Tester l'intégration

<Steps>
  <Step title="Effectuer un achat sandbox">
    Simulez un nouvel utilisateur installant votre application et parcourez le flux de votre application pour effectuer un achat sandbox.

    <Warning>
      Assurez-vous que l'identifiant OneSignal est défini dans RevenueCat.
    </Warning>
  </Step>

  <Step title="Vérifier que les données d'appareil requises sont collectées">
    Dans RevenueCat, accédez à la vue client pour l'utilisateur de test qui vient d'effectuer un achat. Assurez-vous que toutes les données requises sont listées comme attributs pour l'utilisateur.
  </Step>

  <Step title="Vérifier que l'événement OneSignal a été livré avec succès">
    Toujours dans la vue client, cliquez sur l'événement d'achat de test dans l'historique client et assurez-vous que l'événement d'intégration OneSignal existe et a été livré avec succès.
  </Step>

  <Step title="Vérifier que les tags OneSignal sont mis à jour">
    Dans OneSignal, accédez à **Audience > Utilisateurs** et recherchez l'identifiant OneSignal. Vous devriez voir les tags qui ont été mis à jour par RevenueCat.
  </Step>
</Steps>

<Check>
  Intégration terminée ! Vous devriez maintenant voir les tags dans OneSignal se mettre à jour automatiquement lorsque les utilisateurs effectuent des achats ou mettent à jour leur statut d'abonnement.
</Check>

***

## Tags d'événements RevenueCat

Pour chaque événement d'abonnement à renouvellement automatique dans RevenueCat, les tags suivants sont ajoutés ou mis à jour sur l'utilisateur dans OneSignal. En laissant le tag vide dans le tableau de bord RevenueCat, vous pouvez choisir de ne pas envoyer de valeur pour un ou plusieurs tags spécifiques.

| Tag                          | Description                                                                                                                                                                       |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `app_user_id`                | L'identifiant utilisateur d'application RevenueCat qui a déclenché l'événement                                                                                                    |
| `period_type`                | Le dernier type de période pour l'achat ou le renouvellement. Soit : `TRIAL` (pour les essais gratuits), `INTRO` (ou tarification d'introduction), `NORMAL` (abonnement standard) |
| `purchased_at`               | Temps Unix en secondes du dernier achat ou renouvellement d'abonnement                                                                                                            |
| `expiration_at`              | Temps Unix en secondes de la dernière date d'expiration de l'abonnement                                                                                                           |
| `store`                      | Soit `APP_STORE`, `PLAY_STORE`, ou `STRIPE`                                                                                                                                       |
| `environment`                | Soit `SANDBOX` ou `PRODUCTION`                                                                                                                                                    |
| `last_event_type`            | Le dernier type d'événement de l'utilisateur. Soit : `INITIAL_PURCHASE`, `TRIAL_STARTED`, `TRIAL_CONVERTED`, `TRIAL_CANCELLED`, `RENEWAL`, `CANCELLATION`                         |
| `product_id`                 | Le dernier identifiant de produit d'abonnement que l'utilisateur a acheté ou renouvelé                                                                                            |
| `entitlement_ids`            | Chaîne séparée par des virgules d'identifiants d'autorisations RevenueCat que l'utilisateur a débloqués                                                                           |
| `active_subscription`        | La valeur sera définie sur `true` pour tout événement d'achat/renouvellement, et `false` sur `EXPIRATION`                                                                         |
| `subscription_status`        | Voir l'attribut Statut d'abonnement ci-dessous                                                                                                                                    |
| `grace_period_expiration_at` | Si un problème de facturation se produit, nous enverrons la date d'expiration de la période de grâce.                                                                             |

<Note>
  * Abonnements à renouvellement automatique uniquement
  * RevenueCat met à jour les tags de données dans OneSignal uniquement en réponse à des événements d'abonnement à renouvellement automatique.
</Note>

### Exemples d'événements RevenueCat

Les exemples JSON fournis montrent les tags envoyés à OneSignal basés sur les [événements RevenueCat](https://www.revenuecat.com/docs/integrations/third-party-integrations/onesignal#events).

L'événement est enregistré comme tag `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>

### Tag `subscription_status`

Lorsque RevenueCat envoie un événement à OneSignal, un tag `subscription_status` est ajouté ou mis à jour avec tous les changements applicables, utilisant l'une des valeurs suivantes :

| Statut               | Description                                                                                                                                |
| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |
| active               | Le client a un abonnement actif et payant qui est configuré pour se renouveler à sa prochaine date de renouvellement.                      |
| intro                | Le client a un abonnement actif et payant via une offre d'introduction payante.                                                            |
| cancelled            | Le client a un abonnement payant qui est configuré pour expirer à sa prochaine date de renouvellement.                                     |
| grace\_period        | Le client a un abonnement payant qui est entré dans une période de grâce après avoir échoué à se renouveler avec succès.                   |
| trial                | Le client est dans une période d'essai qui est configurée pour se convertir en abonnement payant à la fin de sa période d'essai.           |
| cancelled\_trial     | Le client est dans une période d'essai qui est configurée pour expirer à la fin de sa période d'essai.                                     |
| grace\_period\_trial | Le client était dans une période d'essai et est maintenant entré dans une période de grâce après avoir échoué à se renouveler avec succès. |
| expired              | L'abonnement du client a expiré.                                                                                                           |
| promotional          | Le client a accès à une autorisation via RevenueCat                                                                                        |
| expired\_promotional | Le client avait précédemment accès à une autorisation via une autorisation accordée RevenueCat qui a depuis expiré.                        |
| paused               | Le client a un abonnement payant qui a été mis en pause et est configuré pour reprendre à une date future.                                 |

Pour les clients ayant plusieurs abonnements actifs, cet attribut représentera le statut uniquement de l'abonnement pour lequel l'événement le plus récent s'est produit.

***

## FAQ

### Comment savoir si l'intégration fonctionne ?

Dans OneSignal, accédez à **Audience > Utilisateurs** et recherchez l'identifiant OneSignal. Vous devriez voir les tags qui ont été mis à jour par RevenueCat.

Vous pouvez également aller dans **Audience > Segments** et créer un segment qui filtre les tags que vous avez définis via RevenueCat.

### Combien de tags puis-je définir ?

Il n'y a pas de limite au nombre de tags que vous pouvez définir dans OneSignal, mais il y a une limite au nombre de tags que chaque utilisateur peut avoir à un moment donné.

Consultez notre [page de tarification](https://onesignal.com/pricing) pour plus d'informations.

***
