---
title: "Branch"
description: "Integra Branch con Adapty para rastrear deep links y conversiones de la app."
---

[Branch](https://www.branch.io/) permite a los clientes llegar, interactuar y evaluar resultados en distintos dispositivos, canales y plataformas. Es una plataforma fácil de usar diseñada para aumentar los ingresos móviles mediante enlaces especializados que funcionan perfectamente en todos los dispositivos, canales y plataformas.

Adapty ofrece un conjunto completo de datos que te permite rastrear los [eventos de suscripción](events) de los stores en un solo lugar. Con Adapty, puedes ver fácilmente el comportamiento de tus suscriptores, conocer sus preferencias y usar esa información para comunicarte con ellos de forma dirigida y efectiva.

La integración entre Adapty y Branch funciona de dos maneras principales.

1. **Recibir datos de atribución de Branch**  
    Una vez que hayas configurado la integración con Branch, Adapty comenzará a recibir datos de atribución de Branch. Puedes acceder y ver estos datos fácilmente en la página de perfil del usuario.

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

2. **Enviar eventos de suscripción a Branch**  
   Adapty puede enviar todos los eventos de suscripción configurados en tu integración a Branch. Como resultado, podrás rastrear esos eventos dentro del dashboard de Branch.

## Configurar la integración \{#set-up-integration\}

### Conectar Adapty con Branch \{#connect-adapty-to-branch\}

Para integrar Branch, ve a [Integrations > Branch](https://app.adapty.io/integrations/branch) en el Adapty Dashboard, activa el interruptor y rellena los campos.

  <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 */
  }}
/>

Para obtener el valor del campo **Branch Key**, abre tu [Account Settings](https://dashboard.branch.io/account-settings/profile) de Branch y localiza el campo **Branch Key**. Úsalo para el campo **Key test** (para Sandbox) o **Key live** (para Producción) en el Adapty Dashboard. En Branch, cambia entre los entornos Live y Tests para obtener la clave correspondiente.

  <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 */
  }}
/>

### Configurar eventos y etiquetas \{#configure-events-and-tags\}

Debajo de las credenciales encontrarás tres grupos de eventos que puedes enviar a Branch desde Adapty. Activa únicamente los que necesites. Consulta la lista completa de eventos que ofrece Adapty [aquí](events).

Puedes enviar un evento con los ingresos netos \(después del recorte de Apple/Google\) o solo los ingresos brutos. También puedes marcar la casilla para reportar en la moneda del usuario.

  <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 */
  }}
/>

Te recomendamos usar los nombres de evento predeterminados que proporciona Adapty. Sin embargo, puedes cambiarlos según tus necesidades.

Adapty enviará los eventos de suscripción a Branch mediante una integración servidor a servidor, lo que te permitirá ver todos los eventos de suscripción en tu dashboard de Branch y vincularlos a tus campañas de adquisición.

### Conectar tu app con Branch \{#connect-your-app-to-branch\}

1. Llama al método `.setIntegrationIdentifier()` del SDK para inicializar la conexión. Puedes pasar tu Branch Identity ID al parámetro `customerUserId`.

  ---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="note">
Si usas un ID de usuario de terceros como Customer User ID, no lo pases durante `activate()` — es posible que el SDK de terceros aún no lo haya generado. En su lugar, llama primero a `activate()` sin CUID, luego a `setIntegrationIdentifier()`, y después a `identify()` con el CUID.
</Callout>

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

  ```swift showLineNumbers
  do {
      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. Usa el método `.updateAttribution()` para guardar los datos de atribución. Si no especificaste el Branch user ID en el paso anterior, pásalo al parámetro `networkUserId` aquí.

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

## Estructura del evento \{#event-structure\}

Adapty envía los eventos seleccionados a Branch tal como se configuran en la sección **Events names** de la [**página de integración de Branch**](https://app.adapty.io/integrations/branch). Cada evento tiene la siguiente estructura:

```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"
  }
}
```

Donde:

| Parámetro                      | Tipo   | Descripción                                                                                                                          |
|:-------------------------------|:-------|:-------------------------------------------------------------------------------------------------------------------------------------|
| `branch_key`                   | String | Tu Branch Key.                                                                                                                       |
| `name`                         | String | El nombre del evento de Branch (mapeado desde el evento de Adapty, p. ej., "PURCHASE").                                              |
| `user_data`                    | Object | Información del usuario.                                                                                                             |
| `user_data.os`                 | String | "Android" o "iOS".                                                                                                                   |
| `user_data.developer_identity` | String | El Customer User ID del usuario.                                                                                                     |
| `user_data.country`            | String | Código de país basado en la IP del usuario.                                                                                          |
| `user_data.ip`                 | String | Dirección IP del usuario.                                                                                                            |
| `user_data.idfa`               | String | **Solo iOS**. ID para anunciantes.                                                                                                   |
| `user_data.idfv`               | String | **Solo iOS**. ID para vendedores.                                                                                                    |
| `user_data.aaid`               | String | **Solo Android**. Google Advertising ID.                                                                                             |
| `event_data`                   | Object | Métricas estándar del evento (solo presente para PURCHASE y eventos similares).                                                      |
| `event_data.transaction_id`    | String | ID de transacción del store.                                                                                                         |
| `event_data.revenue`           | Float  | Importe de los ingresos.                                                                                                             |
| `event_data.currency`          | String | Código de moneda (p. ej., "USD").                                                                                                    |
| `custom_data`                  | Object | Atributos detallados del evento (contiene todos los [campos de evento](webhook-event-types-and-fields#for-most-event-types) disponibles). |