---
title: "Amplitude"
description: "Intégrez Amplitude avec Adapty pour de meilleures informations sur le comportement des utilisateurs."
---

[Amplitude](https://amplitude.com/) est un puissant service d'analyse mobile. Avec Adapty, vous pouvez facilement envoyer des événements à Amplitude, observer le comportement de vos utilisateurs et prendre des décisions éclairées.

Adapty fournit un ensemble complet de données qui vous permet de suivre les [événements d'abonnement](events) depuis les stores en un seul endroit et de les envoyer à votre compte Amplitude. Cela vous permet de relier le comportement de vos utilisateurs à leur historique de paiement dans Amplitude, et d'orienter vos décisions produit.

### Comment configurer l'intégration Amplitude \{#how-to-set-up-amplitude-integration\}

Dans Adapty, vous pouvez configurer des flows distincts pour les **événements de production** et les **événements de test** provenant de l'environnement sandbox d'Apple ou Stripe, ou d'un compte de test Google.

- Pour les événements de production, saisissez les clés API de **Production** depuis le tableau de bord Amplitude, avec une clé API unique pour chaque plateforme : iOS, Android et Stripe.
- Pour les événements de test, utilisez les champs **Sandbox** selon vos besoins.

Pour configurer l'intégration Amplitude :

1. Ouvrez [**Integrations** -> **Amplitude**](https://app.adapty.io/integrations/amplitude) dans votre Adapty Dashboard.

  <img src="/assets/shared/img/3b50552-CleanShot_2023-08-15_at_16.47.102x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

2. Activez **Amplitude integration** pour l'activer.

3. Remplissez les champs de l'intégration :

   | Field                                      | Description                                                  |
    | ------------------------------------------ | ------------------------------------------------------------ |
    | **Amplitude iOS/ Android/ Stripe API key** | Saisissez la **Clé API** Amplitude pour iOS/ Android/ Stripe dans Adapty. Vous la trouverez sous **Project settings** dans Amplitude. Pour obtenir de l'aide, consultez la [documentation Amplitude](https://amplitude.com/docs/apis/authentication). Commencez avec les clés **Sandbox** pour les tests, puis passez aux clés de **Production** après des tests réussis. |

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

4. Paramètres optionnels pour une personnalisation supplémentaire :

| Paramètre                               | Description                                                  |
   | --------------------------------------- | ------------------------------------------------------------ |
   | **How the revenue data should be sent** | Choisissez d'envoyer le chiffre d'affaires brut ou le chiffre d'affaires après taxes et commissions. Consultez [Commissions du store et taxes](controls-filters-grouping-compare-proceeds#display-gross-or-net-revenue) pour plus de détails. |
   | **Exclude historical events**           | Choisissez d'exclure les événements antérieurs à l'installation du SDK Adapty, afin d'éviter les doublons. Par exemple, si un utilisateur s'est abonné le 10 janvier mais a installé le SDK Adapty le 6 mars, Adapty n'enverra que les événements à partir du 6 mars. |
   | **Send User Attributes**                | Sélectionnez cette option pour envoyer des attributs propres à l'utilisateur, comme les préférences de langue. |
   | **Always populate user_id**             | Adapty envoie automatiquement `device_id` en tant qu'`amplitudeDeviceId`. Pour `user_id`, ce paramètre définit le comportement : <ul><li>**ON** : envoie l'`profile_id` Adapty si `amplitudeUserId` ou `customer_user_id` ne sont pas disponibles.</li><li>**OFF** : laisse `user_id` vide si aucun des deux identifiants n'est disponible.</li></ul> |

5. Choisissez les événements que vous souhaitez recevoir et [associez leurs noms](amplitude#events-and-tags).

6. Cliquez sur **Save** pour confirmer vos modifications.

Une fois que vous avez cliqué sur **Save**, Adapty commencera à envoyer des événements à Amplitude.

En plus des événements, Adapty envoie le [statut d'abonnement](subscription-status) et l'ID du produit d'abonnement aux [propriétés utilisateur Amplitude](https://amplitude.com/docs/data/user-properties-and-events).

### Événements et tags \{#events-and-tags\}

Sous les identifiants, trois groupes d'événements peuvent être envoyés à Amplitude depuis Adapty. Activez simplement ceux dont vous avez besoin. Consultez la liste complète des événements proposés par Adapty [ici](events).

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

Nous recommandons d'utiliser les noms d'événements par défaut fournis par Adapty. Vous pouvez toutefois les modifier selon vos besoins. Adapty enverra les événements d'abonnement à Amplitude via une intégration serveur à serveur, ce qui vous permettra de consulter tous les événements d'abonnement dans votre tableau de bord Amplitude.

### Configuration du SDK \{#sdk-configuration\}

Utilisez la méthode `setIntegrationIdentifier()` pour définir le paramètre `amplitude_device_id`. C'est indispensable pour configurer l'intégration.

Si vous gérez l'inscription des utilisateurs, vous pouvez également passer `amplitude_user_id`.

:::note
Les SDK tiers génèrent des identifiants utilisateur de manière asynchrone. L'identifiant peut ne pas être disponible au moment où `Adapty.activate()` s'exécute. Si votre **Customer User ID** provient de l'un de ces SDK, appelez `Adapty.activate()` sans lui. Dès que l'identifiant est disponible, appelez `setIntegrationIdentifier()`, puis `identify()` avec le CUID.
:::

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

**Définir amplitudeDeviceId**

```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "amplitude_device_id", 
        value: Amplitude.instance().deviceId
    )
} catch {
    // handle the error
}
```

**Paramétrer amplitudeUserId**

```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "amplitude_user_id", 
        value: "YOUR_AMPLITUDE_USER_ID"
    )
} catch {
    // handle the error
}
```

</TabItem>
<TabItem value="kotlin" label="Android (Kotlin)" default>

**Paramétrer amplitudeDeviceId**

```kotlin showLineNumbers 
//for Amplitude maintenance SDK (obsolete)
val amplitude = Amplitude.getInstance()
val amplitudeDeviceId = amplitude.getDeviceId()
val amplitudeUserId = amplitude.getUserId()

//for actual Amplitude Kotlin SDK
val amplitude = Amplitude(
    Configuration(
        apiKey = AMPLITUDE_API_KEY,
        context = applicationContext
    )
)
val amplitudeDeviceId = amplitude.store.deviceId

//

Adapty.setIntegrationIdentifier("amplitude_device_id", amplitudeDeviceId) { error ->
    if (error != null) {
        // handle the error
    }
}
```

**Définir amplitudeUserId**

```kotlin showLineNumbers
//for Amplitude maintenance SDK (obsolete)
val amplitude = Amplitude.getInstance()
val amplitudeDeviceId = amplitude.getDeviceId()
val amplitudeUserId = amplitude.getUserId()

//for actual Amplitude Kotlin SDK
val amplitude = Amplitude(
    Configuration(
        apiKey = AMPLITUDE_API_KEY,
        context = applicationContext
    )
)
val amplitudeUserId = amplitude.store.userId

//

Adapty.setIntegrationIdentifier("amplitude_user_id", amplitudeUserId) { error ->
    if (error != null) {
        // handle the error
    }
}
```

</TabItem>
<TabItem value="Flutter" label="Flutter (Dart)" default>

**Définir amplitudeDeviceId**

```javascript showLineNumbers

final Amplitude amplitude = Amplitude.getInstance(instanceName: "YOUR_INSTANCE_NAME");

try {
    await Adapty().setIntegrationIdentifier(
        key: "amplitude_device_id", 
        value: amplitude.getDeviceId(),
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

**Définir amplitudeUserId**

```javascript showLineNumbers

final Amplitude amplitude = Amplitude.getInstance(instanceName: "YOUR_INSTANCE_NAME");

try {
    await Adapty().setIntegrationIdentifier(
        key: "amplitude_user_id", 
        value: "YOUR_AMPLITUDE_USER_ID",
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

</TabItem>
<TabItem value="Unity" label="Unity (C#)" default>

**Setting amplitudeDeviceId**

```csharp showLineNumbers
using AdaptySDK;

Adapty.SetIntegrationIdentifier(
  "amplitude_device_id", 
  amplitude.getDeviceId(), 
  (error) => {
  // handle the error
});
```

**Définir amplitudeUserId**

```csharp showLineNumbers
using AdaptySDK;

Adapty.SetIntegrationIdentifier(
  "amplitude_user_id", 
  "YOUR_AMPLITUDE_USER_ID", 
  (error) => {
  // handle the error
});
```

</TabItem>
<TabItem value="rn" label="React Native (TS)" default>

**Définir amplitudeDeviceId**

```typescript showLineNumbers

try {
  await adapty.setIntegrationIdentifier("amplitude_device_id", deviceId);
} catch (error) {
  // handle `AdaptyError`
}
```

**Définir amplitudeUserId**

```typescript showLineNumbers

try {
  await adapty.setIntegrationIdentifier("amplitude_user_id", userId);
} catch (error) {
  // handle `AdaptyError`
}
```

</TabItem>
</Tabs>

## Structure des événements Amplitude \{#amplitude-event-structure\}

Adapty envoie les événements à Amplitude via l'API HTTP v2. Chaque événement est structuré comme suit :

```json
{
  "api_key": "your_amplitude_api_key",
  "events": [
    {
      "partner_id": "adapty",
      "event_type": "subscription_renewed",
      "time": 1709294400000,
      "insert_id": "123e4567-e89b-12d3-a456-426614174000",
      "user_id": "user_12345",
      "device_id": "device_12345",
      "platform": "iOS",
      "os_name": "iOS",
      "productId": "yearly.premium.6999",
      "revenue": 9.99,
      "event_properties": {
        "vendor_product_id": "yearly.premium.6999",
        "original_transaction_id": "GPA.3383...",
        "currency": "USD",
        "environment": "Production",
        "store": "app_store"
      },
      "user_properties": {
        "subscription_state": "subscribed",
        "subscription_product": "yearly.premium.6999"
      }
    }
  ]
}
```

Where:

| Paramètre                   | Type   | Description                                                          |
|:----------------------------|:-------|:---------------------------------------------------------------------|
| `api_key`                   | String | Votre clé API Amplitude.                                             |
| `events`                    | Array  | Liste d'objets événement (Adapty en envoie un à la fois).            |
| `events[].partner_id`       | String | Toujours "adapty".                                                   |
| `events[].event_type`       | String | Le nom de l'événement (mappé depuis l'événement Adapty).             |
| `events[].time`             | Long   | Horodatage de l'événement en millisecondes.                          |
| `events[].insert_id`        | String | Identifiant unique de l'événement (UUID).                            |
| `events[].user_id`          | String | ID utilisateur Amplitude ou ID utilisateur client.                   |
| `events[].device_id`        | String | ID d'appareil Amplitude.                                             |
| `events[].platform`         | String | Plateforme (ex. : "iOS", "Android").                                 |
| `events[].os_name`          | String | Nom du système d'exploitation.                                       |
| `events[].productId`        | String | L'ID du produit dans le store.                                       |
| `events[].revenue`          | Float  | Montant du revenu.                                                   |
| `events[].event_properties` | Object | Attributs détaillés de l'événement (contient tous les [champs d'événement](webhook-event-types-and-fields#for-most-event-types) disponibles). |
| `events[].user_properties`  | Object | Attributs utilisateur tels que l'état de l'abonnement.              |

## Résolution des problèmes \{#troubleshooting\}

### `access_level_updated` apparaît comme échoué dans le journal d'événements \{#access_level_updated-shows-as-failed-in-the-event-feed\}

`access_level_updated` est un **événement réservé aux webhooks**. Adapty ne l'envoie jamais à cette intégration. Mais Adapty enregistre un résultat pour chaque intégration activée, et un événement non pris en charge est affiché comme un échec.