Google Cloud Storage

Activa la integración con Google Cloud Storage para almacenar de forma segura los eventos de suscripción y los datos de visitas a paywalls en un único lugar: tu bucket de Google Cloud Storage.

Cada día a las 4 AM UTC, Adapty subirá archivos .csv con los datos del día anterior a tus buckets. Puedes elegir si quieres recibir datos de eventos, datos de visitas a paywalls, o ambos. También puedes exportar estos datos manualmente en cualquier momento y para cualquier período de tiempo.

Para configurar la integración, genera una clave de acceso al bucket en tu consola de Google Cloud y añádela en los ajustes de Adapty.

Programación y duración de las subidas

Adapty sube datos a Google Cloud Storage cada 24 horas, a las 04:00 UTC.

Los archivos contienen datos de los eventos creados durante el día natural anterior (UTC). El archivo subido el 8 de marzo incluirá todos los eventos creados el 7 de marzo, de 00:00:00 a 23:59:59 UTC.

El proceso puede tardar varias horas, dependiendo del número total de archivos en cola y del volumen de datos que hayas solicitado. Si Adapty incluye datos históricos en tu primera subida, tardará más que las subidas diarias posteriores.

Configurar la integración con Google Cloud Storage

Necesitas una clave de cuenta de servicio de Google Cloud válida con acceso de escritura. Para generarla, sigue los pasos de la sección crear credenciales.

Puedes usar distintos buckets con diferentes credenciales para eventos y visitas a paywalls. Sin embargo, si cualquiera de las credenciales es inválida, ambas subidas fallarán.

Ve a Integrations -> Google Cloud Storage y abre la pestaña correspondiente (Events o Paywall visits). Activa la integración.

Sube el archivo con tu clave de cuenta de servicio de Google Cloud. Especifica el bucket y la carpeta de destino. Guarda los cambios.

google-cloud-storage-setup.webp

Configuración opcional para datos de eventos

Puedes especificar qué eventos incluir en el informe y definir nombres personalizados para ellos. Consulta el artículo de eventos para ver la lista completa de eventos disponibles.

event-specific-settings.webp
NombreValor predeterminadoDescripción
Exclude historical eventstrueExcluye información sobre eventos ocurridos antes de integrar el SDK de Adapty en tu app.

Si tu plataforma de analítica recibió eventos de suscripción antes de que empezaras a usar Adapty, esta opción evita que reciba eventos duplicados.
Ejemplo práctico

Un usuario compró una suscripción mensual el 10 de enero. La actualización del 1 de marzo de tu aplicación fue la primera en incluir el SDK de Adapty.

Si este ajuste está activado, el informe no incluirá el evento “subscription started” de enero ni el evento “subscription renewed” de febrero. incluirá el evento “subscription renewed” del 10 de marzo.

Include events without profilefalseIncluye transacciones que no están vinculadas a un perfil de usuario o que no pueden asociarse de inmediato a un usuario concreto. Pueden ser compras realizadas antes de instalar el SDK de Adapty, o transacciones recibidas mediante notificaciones del servidor.
Send user attributesfalseIncluye atributos personalizados del usuario, como datos del usuario y de uso de la app. Selecciona esta opción si tu plan de OneSignal admite más de 10 etiquetas. Ten en cuenta que superar los límites de etiquetas puede generar errores.

Crear credenciales de Google Cloud Storage

Esta guía te ayudará a crear las credenciales necesarias en Google Cloud Platform Console.

Para que Adapty pueda subir informes de datos sin procesar a tu bucket, se necesita la clave de cuenta de servicio y acceso de escritura al bucket correspondiente. Al proporcionar la clave de cuenta de servicio y conceder acceso de escritura al bucket, permites que Adapty transfiera de forma segura y eficiente los informes de datos desde su plataforma a tu entorno de almacenamiento.

Ten en cuenta que solo admitimos la autorización mediante clave HMAC de cuenta de servicio, por lo que es fundamental asegurarse de que tu clave HMAC de cuenta de servicio tenga los roles “Storage Object Viewer”, “Storage Legacy Bucket Writer” y “Storage Object Creator” asignados para habilitar el acceso correcto a Google Cloud Storage.

  1. En el primer paso, ve a la sección IAM de tu cuenta de Google Cloud y elige el proyecto correspondiente o crea uno nuevo.
30a81ef-CleanShot_2023-03-17_at_15.22.142x.webp
  1. A continuación, crea una nueva cuenta de servicio para Adapty haciendo clic en el botón ”+ CREATE SERVICE ACCOUNT”.

    98f8ebf-CleanShot_2023-03-17_at_15.40.062x.webp
  2. Rellena los campos del primer paso, ya que el acceso se concederá en una etapa posterior. Para obtener más detalles sobre esta página, consulta la documentación aquí.

    2190c50-CleanShot_2023-03-17_at_15.48.552x.webp
  3. Para crear y descargar una clave JSON privada, ve a la sección KEYS y haz clic en el botón “ADD KEY”.

    8a45468-CleanShot_2023-03-17_at_15.58.092x.webp
  4. En la sección DETAILS, localiza el valor Email vinculado a la cuenta de servicio recién creada y cópialo. Esta información será necesaria en los pasos siguientes para autorizar la cuenta y permitirle escribir en el bucket.

    6ccd0f0-CleanShot_2023-03-17_at_16.03.162x.webp
  5. A continuación, ve a la página de Buckets de Google Cloud Storage y selecciona un bucket existente o crea uno nuevo para almacenar los informes de datos de eventos o visitas de Adapty. Luego ve a la sección PERMISSIONS y selecciona la opción GRANT ACCESS.

    3cdd937-CleanShot_2023-03-17_at_16.14.232x.webp
  6. En la sección PERMISSIONS, introduce el Email de la cuenta de servicio obtenido en el quinto paso, selecciona el rol Storage Object Creator y haz clic en SAVE para aplicar los cambios.

    62801f4-CleanShot_2023-03-17_at_16.17.312x.webp

    Recuerda guardar el nombre del bucket para consultarlo más adelante.

Exportación manual de datos

Además de la exportación automática de datos de eventos a Google Cloud Storage, Adapty también ofrece una función de exportación manual de archivos. Con esta función, puedes seleccionar un intervalo de tiempo específico para los datos de eventos y exportarlos manualmente a tu bucket de GCS. Esto te da un mayor control sobre los datos que exportas y cuándo los exportas.

El rango de fechas especificado se usará para exportar los eventos creados desde la Fecha A 00:00:00 UTC hasta la Fecha B 23:59:59 UTC.

e347308-CleanShot_2023-03-17_at_17.39.452x.webp

Estructura de datos

Adapty usa archivos .csv para exportar datos en formato tabular.

El contenido de los eventos puede aumentar con el tiempo, con nuevos datos introducidos por nosotros o por terceros con los que trabajamos. Asegúrate de que el código que los procesa sea lo suficientemente robusto y se base en campos concretos, no en la estructura como un todo.

Eventos

Puedes modificar la lista de eventos que se incluyen en tus informes.

ColumnaDescripción
profile_idID de usuario de Adapty.
event_typeNombre del evento en minúsculas. Consulta la sección Eventos para conocer los tipos de eventos.
event_datetimeFecha en formato ISO 8601.
transaction_idIdentificador único de una transacción, como una compra o renovación.
original_transaction_idIdentificador de la transacción de compra original.
subscription_expires_atFecha de expiración de la suscripción. Generalmente en el futuro.
environmentPuede ser Sandbox o Production.
revenue_usdIngresos en USD. Puede estar vacío.
proceeds_usdGanancias en USD. Puede estar vacío.
net_revenue_usdIngresos netos (después de impuestos) en USD. Puede estar vacío.
tax_amount_usdImporte descontado por impuestos en USD. Puede estar vacío.
revenue_localIngresos en moneda local. Puede estar vacío.
proceeds_localGanancias en moneda local. Puede estar vacío.
net_revenue_localIngresos netos (después de impuestos) en moneda local. Puede estar vacío.
tax_amount_localImporte descontado por impuestos en moneda local. Puede estar vacío.
customer_user_idID de usuario del desarrollador. Por ejemplo, puede ser tu UUID de usuario, email u otro identificador. Nulo si no lo has definido.
storePuede ser app_store o play_store.
product_idID del producto en Apple App Store, Google Play Store o Stripe.
base_plan_idID del plan base en Google Play Store o ID de precio en Stripe.
developer_idID de desarrollador (SDK) del paywall donde se originó la transacción.
ab_test_nameNombre de la prueba A/B donde se originó la transacción.
ab_test_revisionRevisión de la prueba A/B donde se originó la transacción.
paywall_nameNombre del paywall donde se originó la transacción.
paywall_revisionRevisión del paywall donde se originó la transacción.
profile_countryPaís del perfil determinado por Adapty, basado en la IP.
install_dateFecha en formato ISO 8601 de cuando ocurrió la instalación.
idfvidentifierForVendor en dispositivos iOS.
idfaadvertisingIdentifier en dispositivos iOS.
advertising_idEl Advertising ID es un código único asignado por el sistema operativo Android que los anunciantes pueden usar para identificar de forma única el dispositivo de un usuario.
ip_addressIP del dispositivo (puede ser IPv4 o IPv6, con preferencia por IPv4 cuando esté disponible). Se actualiza cada vez que cambia la IP del dispositivo.
cancellation_reason

El motivo por el que el usuario canceló una suscripción.

Valores posibles:

iOS y Androidvoluntarily_cancelled, billing_error, refund

Solo iOSprice_increase, product_was_not_available, unknown, upgraded

Solo Androidnew_subscription_replace, cancelled_by_developer

android_app_set_idUn AppSetId: ID único por dispositivo y cuenta de desarrollador, restablecible por el usuario, para casos de uso publicitario sin monetización.
android_idEn Android 8.0 (nivel de API 26) y versiones superiores, un número de 64 bits (expresado como cadena hexadecimal), único para cada combinación de clave de firma de app, usuario y dispositivo. Para más detalles, consulta la documentación para desarrolladores de Android.
deviceNombre del modelo de dispositivo visible para el usuario final.
currencyCódigo de divisa de 3 letras (ISO-4217) de la transacción.
store_countryPaís del perfil determinado por Apple/Google store.
attribution_sourceFuente de atribución.
attribution_network_user_idID asignado al usuario por la fuente de atribución.
attribution_statusPuede ser organic, non_organic o unknown.
attribution_channelNombre del canal de marketing.
attribution_campaignNombre de la campaña de marketing.
attribution_ad_groupGrupo de anuncios de atribución.
attribution_ad_setConjunto de anuncios de atribución.
attribution_creativePalabra clave creativa de atribución.
attributesJSON con los atributos personalizados del usuario. Incluirá todos los atributos personalizados que hayas configurado para enviar desde tu app móvil. Para enviarlo, activa la opción Send User Attributes en la página Integrations -> Webhooks.
integration_idsTodos los IDs de integración asociados a un perfil. Diccionario. Ejemplo: {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}

Visitas a paywalls

ColumnaDescripción
profile_idID de usuario de Adapty.
customer_user_idID de usuario del desarrollador. Por ejemplo, puede ser tu UUID de usuario, email u otro identificador. Nulo si no lo has definido.
profile_countryPaís del perfil determinado por Apple/Google store.
install_dateFecha en formato ISO 8601 de cuando ocurrió la instalación.
storePuede ser app_store o play_store.
paywall_showed_atLa fecha en que se mostró el paywall al cliente.
developer_idID de desarrollador (SDK) del paywall donde se originó la transacción.
ab_test_nameNombre de la prueba A/B donde se originó la transacción.
ab_test_revisionRevisión de la prueba A/B donde se originó la transacción.
paywall_nameNombre del paywall donde se originó la transacción.
paywall_revisionRevisión del paywall donde se originó la transacción.

Solución de problemas

Adapty comprueba la validez de tus claves de acceso antes de comenzar la subida. Aunque solo una de tus claves de Google Cloud Storage sea inválida, Adapty cancela la subida y genera un error.

Para garantizar subidas ininterrumpidas, reemplaza tus claves antes de que expiren. Si actualizas la clave de eventos, no olvides actualizar también la clave de visitas a paywalls, y viceversa.