---
title: "Firebase y Google Analytics"
description: "Integra Firebase y Google Analytics con Adapty para obtener mejores insights."
---

Si utilizas productos de Google como Google Analytics y Firebase, puedes enriquecer tus datos analíticos con eventos de Adapty mediante la integración descrita en este artículo. Los eventos se envían a través de Google Analytics a Firebase y pueden usarse en cualquiera de estos servicios.

Esta función te permite relacionar el comportamiento de tus usuarios con su historial de pagos en Firebase, lo que te facilita tomar decisiones de producto bien fundamentadas.

## Cómo configurar la integración con Firebase \{#how-to-set-up-firebase-integration\}

### 1\. Configura Firebase \{#1-set-up-firebase\}

Primero, debes habilitar la integración entre Firebase y Google Analytics. Puedes hacerlo en tu Firebase Console, en la pestaña **Integrations**.

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

### 2\. Integra con Adapty \{#2-integrate-with-adapty\}

A continuación, Adapty necesita tu Firebase App ID y el API Secret de Google Analytics para enviar eventos y propiedades de usuario. Puedes encontrar estos parámetros en la Firebase Console y en la pestaña Data Streams de Google Analytics, respectivamente.

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

A continuación, accede a la página de detalles del Stream de la app dentro de la sección Data Streams de la configuración de administrador en [Google Analytics](https://analytics.google.com/analytics/web/#/).

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

En **Additional settings**, ve a la página **Measurement Protocol API secrets** y crea un nuevo **API Secret** si no existe. Copia el valor.

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

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

El siguiente paso será ajustar la integración en el Adapty Dashboard. Deberás proporcionarnos el Firebase App ID y el API Secret de Google Analytics para tus plataformas iOS, Android y/o Stripe.

:::note
Si usas la integración con Stripe, ten en cuenta sus limitaciones en la [guía](stripe#current-limitations) correspondiente. Estas limitaciones también se aplicarán a la integración con Firebase.
:::

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

## Configuración del SDK \{#sdk-configuration\}

:::important
Para que la integración funcione, asegúrate de añadir Firebase a tu app primero:
- [iOS](https://firebase.google.com/docs/ios/setup)
- [Android](https://firebase.google.com/docs/android/setup)
- [React Native](https://firebase.google.com/docs/web/setup)
- [Flutter](https://firebase.google.com/docs/flutter/setup)
- [Unity](https://firebase.google.com/docs/unity/setup)
:::

A continuación, debes configurar el SDK de Adapty para asociar a tus usuarios con Firebase. Para cada usuario, debes enviar el `firebase_app_instance_id` a Adapty. A continuación puedes ver un ejemplo del código que se puede usar para integrar el SDK de Firebase y el SDK de Adapty.

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

FirebaseApp.configure()
        
if let appInstanceId = Analytics.appInstanceID() {            
    do {
        try await Adapty.setIntegrationIdentifier(
            key: "firebase_app_instance_id", 
            value: appInstanceId
        )
    } catch {
        // handle the error
    }
}
```
</TabItem>
<TabItem value="kotlin" label="Android (Kotlin)" default>
```kotlin showLineNumbers
//after Adapty.activate()

FirebaseAnalytics.getInstance(context).appInstanceId.addOnSuccessListener { appInstanceId ->
    Adapty.setIntegrationIdentifier("firebase_app_instance_id", appInstanceId) { error ->
        if (error != null) {
            // handle the error
        }
    }
}
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers
//after Adapty.activate()

FirebaseAnalytics.getInstance(context).getAppInstanceId().addOnSuccessListener(appInstanceId -> {
    Adapty.setIntegrationIdentifier("firebase_app_instance_id", appInstanceId, error -> {
        if (error != null) {
            // handle the error
        }
    });
});
```
</TabItem>
<TabItem value="flutter" label="Flutter (Dart)" default>
```javascript showLineNumbers

final appInstanceId = await FirebaseAnalytics.instance.appInstanceId;

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

// We suppose FirebaseAnalytics Unity Plugin is already installed

Firebase.Analytics
  .FirebaseAnalytics
  .GetAnalyticsInstanceIdAsync()
  .ContinueWithOnMainThread((task) => {
    if (!task.IsCompletedSuccessfully) {
      // handle error
      return;
    }

    var firebaseId = task.Result
    var builder = new Adapty.ProfileParameters.Builder();
    
    Adapty.SetIntegrationIdentifier(
      "firebase_app_instance_id", 
      firebaseId, 
      (error) => {
        // handle the error
    });
  });
```
</TabItem>
<TabItem value="rn" label="React Native (TS)" default>
```typescript showLineNumbers

try {
  const appInstanceId = await analytics().getAppInstanceId();

  await adapty.setIntegrationIdentifier("firebase_app_instance_id", appInstanceId);
} catch (error) {
  // handle `AdaptyError`
}
```
</TabItem>
</Tabs>

## Envío de eventos y propiedades de usuario \{#sending-events-and-user-properties\}

Ahora es el momento de decidir qué eventos recibirás en Firebase y Google Analytics.

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

Verás que algunos eventos tienen nombres específicos, como "Purchase", mientras que otros son eventos habituales de Adapty. Esta diferencia se debe a los [tipos de eventos de Google Analytics](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events). Actualmente, los eventos compatibles son [Refund](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events#refund) y [Purchase](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events#purchase). El resto son eventos personalizados. Por lo tanto, asegúrate de que los nombres de tus eventos sean [compatibles](https://developers.google.com/analytics/devguides/collection/protocol/ga4/sending-events?client_type=firebase#limitations) con Google Analytics.  
También puedes configurar el envío de propiedades de usuario desde el Adapty Dashboard.

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

Esto significa que Adapty enriquecerá tus eventos con `subscription_state` y `subscription_product_id`. Sin embargo, también debes [habilitar](https://support.google.com/analytics/answer/14240153?hl=en) esta función en Google Analytics. Para usar **User properties** en tus análisis, empieza por asignarlas a una dimensión personalizada en la Firebase Console, a través de **Custom Definitions**, seleccionando el ámbito **User**, y asignándoles un nombre y una descripción.

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

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

Asegúrate de que los nombres de tus propiedades de usuario sean `subscription_state` y `subscription_product_id`. De lo contrario, no podremos enviarte los datos del estado de la suscripción.

¡Y eso es todo! Espera a recibir nuevos insights de Google.

## Solución de problemas \{#troubleshooting\}

### Discrepancia de datos \{#data-discrepancy\}

Si existe una discrepancia de datos entre Adapty y Firebase, puede deberse a que no todos tus usuarios utilizan la versión de la app que incluye el SDK de Adapty. Para garantizar la consistencia de los datos, puedes obligar a tus usuarios a actualizar la app a una versión que incluya el SDK de Adapty.

Además, los eventos de sandbox se envían a Firebase por defecto y esto no se puede deshabilitar. Por eso, en situaciones en las que una app tiene pocos eventos de producción y muchos de sandbox, puede haber una discrepancia notable entre los datos de Analytics de Adapty y los de Firebase.

### Los eventos aparecen como entregados en Adapty pero no están disponibles en Firebase \{#events-are-shown-as-delivered-in-adapty-but-not-available-in-firebase\}

Existe un retraso entre el momento en que Adapty envía los eventos y el momento en que aparecen en el dashboard de Google Analytics. Se recomienda consultar el Realtime Dashboard de tu cuenta de Google Analytics para ver los eventos más recientes en tiempo real.