---
title: "Branch"
description: "Intégrez Branch avec Adapty pour suivre les liens profonds et les conversions d'application."
---

[Branch](https://www.branch.io/) permet à ses clients d'atteindre, d'interagir et d'analyser les résultats sur différents appareils, canaux et plateformes. C'est une plateforme intuitive conçue pour augmenter les revenus mobiles grâce à des liens spécialisés qui fonctionnent parfaitement sur tous les appareils, canaux et plateformes.

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. Avec Adapty, vous pouvez facilement analyser le comportement de vos abonnés, comprendre leurs préférences et utiliser ces informations pour communiquer avec eux de manière ciblée et efficace.

L'intégration entre Adapty et Branch fonctionne de deux manières principales.

1. **Réception des données d'attribution depuis Branch**
   Une fois l'intégration Branch configurée, Adapty commencera à recevoir les données d'attribution de Branch. Vous pouvez consulter et visualiser ces données sur la page du profil de l'utilisateur.

2. **Envoi des événements d'abonnement à Branch**  
   Adapty peut envoyer tous les événements d'abonnement configurés dans votre intégration à Branch. Vous pourrez ainsi suivre ces événements depuis le tableau de bord Branch.

## Configurer l'intégration \{#set-up-integration\}

### Connecter Adapty à Branch \{#connect-adapty-to-branch\}

Pour intégrer Branch, rendez-vous dans [Integrations > Branch](https://app.adapty.io/integrations/branch) sur l'Adapty Dashboard, activez le bouton (off → on) et remplissez les champs.

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

Pour obtenir la valeur du **Branch Key**, ouvrez vos [paramètres de compte](https://dashboard.branch.io/account-settings/profile) Branch et repérez le champ **Branch Key**. Utilisez-le pour le champ **Key test** (pour le Sandbox) ou **Key live** (pour la Production) dans l'Adapty Dashboard. Dans Branch, basculez entre les environnements Live et Tests pour obtenir la clé appropriée.

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

### Configurer les événements et les tags \{#configure-events-and-tags\}

Sous les identifiants, vous trouverez trois groupes d'événements que vous pouvez envoyer à Branch depuis Adapty. Activez simplement ceux dont vous avez besoin. Consultez la liste complète des événements proposés par Adapty [ici](events).

Vous pouvez envoyer un événement avec les recettes \(après la commission Apple/Google\) ou uniquement le revenu. Vous pouvez également cocher une case pour effectuer les rapports dans la devise de l'utilisateur.

  <img src="/assets/shared/img/a645cf8-CleanShot_2023-08-11_at_15.18.282x.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 à Branch via une intégration serveur à serveur, ce qui vous permettra de consulter tous les événements d'abonnement dans votre tableau de bord Branch et de les associer à vos campagnes d'acquisition.

### Connectez votre application à Branch \{#connect-your-app-to-branch\}

1. Appelez la méthode SDK `.setIntegrationIdentifier()` pour initialiser la connexion. Vous pouvez passer votre Branch Identity ID au paramètre `customerUserId`.

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

```swift showLineNumbers
  do {
      // Adapty SDK 4.x
      try await Adapty.setIntegrationIdentifier(.branchId(<BRANCH_IDENTITY_ID>))
      // Adapty SDK 3.x
      try await Adapty.setIntegrationIdentifier(
          key: "branch_id", 
          value: <BRANCH_IDENTITY_ID>
      )
  } catch {
      // handle the error
  }
  ```
  </TabItem>
  <TabItem value="kotlin" label="Android (Kotlin)" default>

```kotlin showLineNumbers
  // login and update attribution and identifier
  Branch.getAutoInstance(this)
      .setIdentity("YOUR_USER_ID") { referringParams, error ->
          referringParams?.let { data ->
              Adapty.updateAttribution(data, "branch") { error ->
                  if (error != null) {
                      //handle the error
                  }
              }
          }
      }

  // logout
  Branch.getAutoInstance(context).logout()
  ```
  </TabItem>
  <TabItem value="flutter" label="Flutter" default>
  ```javascript showLineNumbers
  import 'package:flutter_branch_sdk/flutter_branch_sdk.dart';

  FlutterBranchSdk.setIdentity('YOUR_USER_ID');
  ```
  </TabItem>
  <TabItem value="unity" label="Unity (C#)" default>
  ```csharp showLineNumbers
  Branch.setIdentity("your user id");
  ```
  </TabItem>
  <TabItem value="rn" label="React Native (TS)" default>

```typescript showLineNumbers
  import branch from 'react-native-branch';

  branch.setIdentity('YOUR_USER_ID');
  ```

  </TabItem>
  </Tabs>

2. Utilisez la méthode `.updateAttribution()` pour enregistrer les données d'attribution. Si vous n'avez pas spécifié l'identifiant utilisateur Branch à l'étape précédente, passez-le au paramètre `networkUserId` ici.

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

```swift showLineNumbers
  class YourBranchImplementation {
      func initializeBranch() {
          // Pass the attribution you receive from the initializing method of Branch iOS SDK to Adapty.
          Branch.getInstance().initSession(launchOptions: launchOptions) { (data, error) in
              if let data {
                  // Adapty SDK 4.x
                  Adapty.updateAttribution(data, source: .branch)
                  // Adapty SDK 3.x
                  Adapty.updateAttribution(data, source: "branch")
              }
          }
      }
  }
  ```
  </TabItem>
  <TabItem value="kotlin" label="Android (Kotlin)" default>

```kotlin showLineNumbers
  //everything is in the above snippet for Android
  ```
  </TabItem>
  <TabItem value="flutter" label="Flutter (Dart)" default>

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

```csharp showLineNumbers
  using AdaptySDK;

  Branch.initSession(delegate(Dictionary<string, object> parameters, string error) {
      string attributionString = JsonUtility.ToJson(parameters);
      
      Adapty.UpdateAttribution(
        attributionString, 
        "branch", 
        (error) => {
          // handle the error
      });
  });
  ```
  </TabItem>
  <TabItem value="rn" label="React Native (TS)" default>

```typescript showLineNumbers
  import { adapty, AttributionSource } from 'react-native-adapty';
  import branch from 'react-native-branch';

  branch.subscribe({
    enComplete: ({
      params,
    }) => {
      adapty.updateAttribution(params, "branch");
    },
  });
  ```

  </TabItem>
  </Tabs>

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

Adapty envoie les événements sélectionnés à Branch, tels que configurés dans la section **Events names** de la [**page d'intégration Branch**](https://app.adapty.io/integrations/branch). Chaque événement est structuré comme suit :

```json
{
  "branch_key": "key_live_kaFuWw8WvY7n1ss7...",
  "name": "PURCHASE",
  "user_data": {
    "os": "iOS",
    "developer_identity": "user_12345",
    "country": "US",
    "ip": "192.168.100.1",
    "idfa": "00000000-0000-0000-0000-000000000000",
    "idfv": "00000000-0000-0000-0000-000000000000",
    "aaid": "00000000-0000-0000-0000-000000000000"
  },
  "event_data": {
    "transaction_id": "GPA.3383-4699-1373-07113",
    "revenue": 9.99,
    "currency": "USD"
  },
  "custom_data": {
    "vendor_product_id": "yearly.premium.6999",
    "original_transaction_id": "GPA.3383-4699-1373-07113",
    "store": "play_store",
    "environment": "production"
  }
}
```

Where:

| Paramètre                      | Type   | Description                                                                                                                          |
|:-------------------------------|:-------|:-------------------------------------------------------------------------------------------------------------------------------------|
| `branch_key`                   | String | Votre Branch Key.                                                                                                                    |
| `name`                         | String | Le nom de l'événement Branch (mappé depuis un événement Adapty, par exemple « PURCHASE »).                                           |
| `user_data`                    | Object | Informations sur l'utilisateur.                                                                                                      |
| `user_data.os`                 | String | « Android » ou « iOS ».                                                                                                             |
| `user_data.developer_identity` | String | Le Customer User ID de l'utilisateur.                                                                                                |
| `user_data.country`            | String | Code pays basé sur l'IP de l'utilisateur.                                                                                            |
| `user_data.ip`                 | String | Adresse IP de l'utilisateur.                                                                                                         |
| `user_data.idfa`               | String | **iOS uniquement**. ID for Advertisers.                                                                                              |
| `user_data.idfv`               | String | **iOS uniquement**. ID for Vendors.                                                                                                  |
| `user_data.aaid`               | String | **Android uniquement**. Google Advertising ID.                                                                                       |
| `event_data`                   | Object | Métriques d'événement standard (présentes uniquement pour PURCHASE et les événements similaires).                                    |
| `event_data.transaction_id`    | String | ID de transaction du store.                                                                                                          |
| `event_data.revenue`           | Float  | Montant des revenus.                                                                                                                  |
| `event_data.currency`          | String | Code devise (par exemple, « USD »).                                                                                                  |
| `custom_data`                  | 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). |

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

### `access_level_updated` apparaît comme échoué dans l'Event Feed \{#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.