Compra in-app (IAP) y medición de ingresos por suscripción

Premium

De un vistazo: Valida y mide automáticamente los ingresos de las compras in-app y las suscripciones autorrenovables para obtener una imagen completa de los ciclos de vida de tus clientes y mediciones precisas del ROAS.

Información general

Los anunciantes pueden usar los ingresos por suscripción y de compras in-app validadas (IAP) para medir:

  • Todos los ingresos procedentes de compras in-app de productos y suscripciones gestionados a través de App Store Connect (iOS) o Google Play Console (Android).
  • Reembolsos.
  • Ingresos por transacciones pendientes y diferidas (Android).
  • Eventos relacionados con la suscripción que ocurren dentro o fuera de tu aplicación.

La solución de ingresos por suscripción e IAP también:

  • Asegura que no se registren transacciones duplicadas. Para iOS, esto también puede garantizar que no se registren duplicados para el uso compartido en familia.
  • Permite que AppsFlyer te reenvíe las transacciones de Apple App Store (el anunciante).
  • Proporciona datos de ingresos reales, es decir, datos de ingresos netos que tienen en cuenta las comisiones e impuestos de la tienda.

Los datos de compra y suscripción provienen de:

  • El conector del SDK de compra de AppsFlyer para Android e iOS (incluye envoltorio Unity).
  • Notificaciones del servidor de App Store y Google Play (RTDN) enviadas a AppsFlyer.

Los datos de ingresos por compras y suscripciones están disponibles a través de los paneles de control y reportes de AppsFlyer. También se pueden compartir con los partners mediante postbacks.

Consideraciones:

  • Si utilizas esta solución de medición de ingresos por suscripción e IAP, no debes enviar eventos de compras in-app ni ejecutar validateAndLogInAppPurchase, ya que al hacerlo se reportan ingresos duplicados.
  • Los ingresos por suscripción pueden comenzar a registrar los cambios en el ciclo de vida de los suscriptores existentes tan pronto como inicien una versión de la aplicación que incluya el conector del SDK de compra.

Proceso:

  1. Un usuario realiza una compra in-app o una suscripción autorrenovable.
  2. La aplicación realiza una transacción en la tienda de aplicaciones.
  3. El conector del SDK de compra de AppsFlyer detecta automáticamente la compra y envía su carga útil a AppsFlyer para su validación y registro.
  4. AppsFlyer valida la compra con la tienda correspondiente para garantizar que no sea fraudulenta.
    • Tras la validación exitosa, AppsFlyer registra la compra o suscripción.
    • Si la validación de recibo falla, el evento se muestra en el reporte de raw data de eventos in-app bloqueados (disponible para suscriptores de Protect360). 
  5. AppsFlyer transfiere la respuesta al conector del SDK, que a su vez transfiere la respuesta de validación de recibo (éxito o fallo) a la aplicación.
  6. Todas las notificaciones entrantes del servidor también se procesan mediante la lógica empresarial de los ingresos por compra y suscripción de AppsFlyer.
    • Las notificaciones sobre transacciones previamente reportadas a través del conector del SDK se validan y procesan, y dan como resultado la creación interna de un evento de compra o ciclo de vida.
    • Se eliminan las notificaciones relativas a transacciones desconocidas.
    • Para iOS, todas las notificaciones del servidor se pueden redirigir a tus propios servidores.

 Flujo de trabajo de integración de ingresos por suscripción e IAP

Sigue exactamente el orden de las instrucciones de configuración que se indican en la tabla a continuación, para garantizar una precisión óptima y un reporte completo de los ingresos por suscripciones autorrenovables e IAP, y los eventos del ciclo de vida. No hacerlo puede resultar en inexactitudes permanentes en los reportes. Los detalles completos de cada paso se incluyen en las pestañas que siguen a la tabla.

Paso Tareas
1

Configura notificaciones para IAP e ingresos por suscripción de Google Play.

2

Configura notificaciones para IAP e ingresos por suscripción desde el App Store de iOS.

3
  • Integra el conector del SDK de compra de AppsFlyer para Android e iOS.
  • Recomendado para propietarios de aplicaciones de suscripción: para identificar tu base de suscriptores más rápido, configura las notificaciones del servidor antes de lanzar tu versión de la aplicación con el conector del SDK.
4

Integra la API de impuestos de ingresos reales. Esto solo es necesario si quieres editar las tasas impositivas predeterminadas. En caso contrario, se reportan los impuestos para cualquier transacción medida por el ROI360.

5

Prueba la integración para garantizar que:

  • El conector del SDK está correctamente integrado.
  • AppsFlyer configura y recibe correctamente las notificaciones del servidor.
6

Lanza las versiones de la aplicación para Android e iOS con los conectores del SDK de compra.

Paso 1: Configurar notificaciones de Google Play

Antes de empezar:

  • La configuración de ingresos por subscripción e IAP consta de varios pasos que se realizan en Google Cloud Platform y en la interfaz de usuario de AppsFlyer. Te recomendamos que mantengas las pestañas en Google Cloud Platform y AppsFlyer abiertas durante toda la configuración.
  • La configuración en la interfaz de usuario de AppsFlyer requiere permisos de administrador.

Sigue las instrucciones de la pestaña a continuación para configurar las notificaciones de Google Play:

1.1 Vincular tu cuenta de desarrollador de Google Play a tu proyecto de Google Cloud

  1. En Google Play Console, ve a tu cuenta de desarrollador de Google Play.
  2. Vincula la cuenta a tu proyecto de Google Cloud. Para obtener instrucciones, consulta este tema de ayuda de Google.
  3. Habilita la API para desarrolladores de Google Play. Para obtener instrucciones, consulta este tema de ayuda de Google.

1.2 Crear la cuenta de servicio

  1. Ve a Google Cloud y abre el proyecto que acabas de vincular en el Paso 1.1.
  2. En tu proyecto, ve a IAM and Admin (IAM y admin) > Service Accounts (Cuentas de servicio), y haz clic en Create service account (Crear cuenta de servicio). 

01.png

  1. En la página Create service account (Crear cuenta de servicio), completa el paso Service account details (Detalles de la cuenta de servicio).

02.png

  1. Haz clic en Create and continue (Crear y continuar).
  2. En el paso Grant this service account access to the project (Otorgar a esta cuenta de servicio acceso al proyecto), selecciona el rol Pub/sub subscriber (Suscriptor pub/sub).

03.png

  1. Haz clic en Continue (Continuar) >  Done (Hecho).

1.3 Descargar la clave privada de la cuenta

  1. En la página Service accounts (Cuentas de servicio), busca la cuenta de servicio correspondiente y haz clic en ellipsis.png y luego en Manage keys (Administrar claves).

08.png

  1. En la pestaña Keys (Claves) de la página de la cuenta de servicio, haz clic en ADD KEY (AGREGAR CLAVE) > Create new key (Crear nueva clave).

10.png

  1. En el cuadro de diálogo Create private key (Crear clave privada), selecciona el tipo de clave JSON.
  2. Haz clic en Create (Crear). Se descarga el archivo JSON de la clave privada.
  3. En AppsFlyer, ve a ROI360 > Configuración de ingresos.

41.png

  1. Selecciona tu app en la lista.
  2. En la pestaña Compras y suscripciones, haz clic en upload-2.png para subir el archivo JSON. 

40.png

 

1.4 Establecer los permisos de acceso a la API

  1. En Google Play Console, ve a Setup (Configuración) > Usuarios y permisos.
  2. En la lista Service accounts (Cuentas de servicio), busca la cuenta de servicio creada en el paso 1.2 y haz clic en Manage Play Console permissions (Administrar permisos de Play Console).

14.png

  1. En la pestaña Permissions (Permisos), ve a la sección Account permissions (Permisos de cuenta) y selecciona ambos:
    • Ver datos financieros.
    • Gestionar pedidos y suscripciones.

15.png

  1. Haz clic en Invite user (Invitar usuario) y luego en Send invite (Enviar invitación).

O bien, 1.5 Enviar las notificaciones de Google Play directamente a AppsFlyer

Selecciona uno de los dos métodos utilizados para recibir los datos de ingresos por suscripción e IAP de Google Play.

O bien:

  • Crea un tema donde AppsFlyer reciba directamente las notificaciones RTDN de Google Play (continúa en este paso).

o bien,

  • Configura AppsFlyer como suscriptor de tu tema PUB/SUB preexistente (salta al siguiente paso).

Para crear un tema donde AppsFlyer reciba directamente las notificaciones RTDN, realiza los siguientes pasos:

  1. En AppsFlyer, ve a ROI360 > Configuración de ingresos > Compras y suscripción, selecciona Permitir que el tema de AppsFlyer obtenga mensajes RTDN directamente de Google.

42.png

  1. Copia el tema de AppsFlyer en el portapapeles.
  2. En Google Play Console > All apps (Todas las aplicaciones), selecciona tu aplicación.
    Se abre el panel de control.

18.png

  1. Ve a Monetization setup (Configuración de monetización) y, en la sección Google Play Billing (Facturación de Google Play), en el campo Topic name (Nombre del tema), pega el tema de AppsFlyer que registraste en el subpaso 2.

19.png

  1. Haz clic en Save Changes (Guardar cambios).

O 1.6 Reenviar las notificaciones de Google Play a AppsFlyer

El otro método para recibir notificaciones de IAP y suscripción es aplicable cuando ya tienes un tema preexistente que recibe notificaciones de Google Play. En este caso, establece AppsFlyer como suscriptor de tu tema PUB/SUB preexistente en lugar de crear un nuevo tema (como en el paso anterior).

Para establecer AppsFlyer como suscriptor de tu tema PUB/SUB preexistente

  1. En AppsFlyer, ve a ROI360 > Configuración de ingresos > Compras y suscripciones, selecciona Reenvía tus mensajes con el tema RTDN a AppsFlyer.
  2. Copia la URL del punto de conexión en el portapapeles.

52.png

  1. En Google Cloud Platform, bajo tu proyecto, busca Pub/Sub.

21.png

  1. En Pub/Sub, ve a la sección Topics (Temas) y verifica que tengas un tema pub/sub dedicado para suscripciones.

22.png

  1. Ve a la sección Subscriptions (Suscripciones) y haz clic en Create subscription (Crear suscripción).

25.png

  1. Introduce el ID de suscripción.
  2. Selecciona el tema pub/sub de suscripción correspondiente en el menú desplegable.

26.png

  1. Para Delivery type (Tipo de entrega), selecciona Push.
  2. Introduce la URL del punto de conexión que registraste en el subpaso 2.
  3. Para Expiration period (Período de vencimiento), selecciona Never expire (No vence nunca).

28.png

  1. Haz clic en Save (Guardar).
  2. Ve a la sección Subscriptions (Suscripciones) y copia el nombre del tema en el portapapeles.

46.png

  1. En Google Play Console, ve a Monetization setup (Configuración de la monetización), y en la sección Google Play Billing (Facturación de Google Play), en el campo Topic name (Nombre del tema), pega el nombre del tema que copiaste en el paso anterior.

19.png

  1. Haz clic en Save (Guardar).

1.7 Configurar servicios automáticos

  1. En AppsFlyer, ve a ROI360 Configuración de ingresos > Compras y suscripciones, y activa una o ambas de estas opciones:
    • Validar compras con Google Play.
    • Atribuir y reportar las suscripciones autorrenovables.

50.png

  1. [Opcional] Marca Permitir que AppsFlyer elimine las transacciones duplicadas que ya se reportaron. Esto asegura que no se registren transacciones duplicadas.
  2. Haz clic en Save (Guardar).
Nota: Puede llevar un tiempo (a veces incluso 24 horas) después de configurar las credenciales y los permisos de la cuenta de servicio hasta poder utilizarlos. Esto puede hacer que recibas errores al intentar conectarte a Google RTDN.

Paso 2: Configurar notificaciones desde el App Store de iOS

Antes de empezar:

  • La configuración de los ingresos por suscripción e IAP consta de pasos realizados en App Store Connect y en la interfaz de usuario de AppsFlyer. Mantén abiertas las pestañas de App Store Connect y AppsFlyer durante la configuración.

  • La configuración en la interfaz de usuario de AppsFlyer requiere permisos de administrador.

Para configurar los ingresos por suscripción e IAP:

  1. En App Store Connect, ve a Features (Características) > Subscriptions (Suscripciones) y haz clic en Manage (Administrar) para obtener la clave secreta compartida de App Store Connect.
    app_store_connect_shared_secret.png
  2. En AppsFlyer, ve a ROI360 > Configuración de ingresos > Compras y suscripciones.
    Se abre la página Configuración de ingresos.
    ARS-VIAP.png
  3. Introduce tu clave secreta compartida de App Store Connect.
  4. Copia el punto de conexión de AppsFlyer e introdúcelo en tu configuración de App Store Connect:
    1. En App Store Connect, selecciona tu aplicación.
    2. En la sección App Information (Información de la aplicación), desplázate hasta las notificaciones del servidor del App Store y pega el punto de conexión de AppsFlyer en los campos Production Server URL (URL del servidor de producción) y Sandbox Server URL (URL del servidor de entorno de pruebas).
      ASSN.png
    3. Haz clic en Guardar.
  5. [Opcional] Selecciona el envío de notificaciones del servidor a tu punto de conexión e introduce tu punto de conexión. 
  6. En la página de configuración de ingresos por suscripción e IAP de AppsFlyer, activa una o ambas opciones:
    • Atribuir y reportar las suscripciones autorrenovables.
    • Validar compras con el Apple App Store.
  7. [Opcional] Marca Permitir que AppsFlyer elimine las transacciones duplicadas que ya se reportaron.
    Esto garantiza que no se registren transacciones duplicadas.
  8. [Opcional] Marca Eliminar ingresos duplicados para compras En Familia.
    Esto garantiza que no se registren ingresos duplicados por las compras familiares compartidas. Los eventos generadores de ingresos para otros miembros de la familia incluyen el parámetro purchase_ownership_type=FAMILY_SHARED y muestran cero ingresos.

Nota:

  • Apple solo puede enviar notificaciones del servidor a un punto de conexión.
  • Los clientes pueden enviar notificaciones del servidor de Apple desde su backend directamente a la URL del punto de conexión de notificaciones, pero las solicitudes deben ser exactamente como se reciben del App Store.

Paso 3: Integrar el conector del SDK de compra

La integración del conector del SDK de compra permite que tu aplicación registre tanto las compras in-app como las suscripciones autorrenovables. Puedes seleccionar registrar uno o ambos tipos de ingresos en la página Configuración de ingresos > Compras y suscripciones en AppsFlyer para Android e iOS.

Para integrar el conector del SDK:

  1. Dile a tu desarrollador de Android que integre el conector del SDK de compra de AppsFlyer para Android.
    • El conector de compra de AppsFlyer V1 para Android es compatible con la biblioteca de facturación de Google 4.
    • El conector de compra de AppsFlyer V2 para Android es compatible con la biblioteca de facturación de Google 5.
  2. Dile a tu desarrollador de iOS que integre el conector del SDK de compra de iOS de AppsFlyer.

Nota: Para las aplicaciones creadas con el marco de Unity, consulta la documentación del conector Unity.

Paso 4: Integrar la API de impuestos de ingresos reales

Los ingresos reales son una capa de la lógica empresarial creada para servir a la solución de ingresos por suscripciones y compras in-app de AppsFlyer. Calcula automáticamente el valor de los ingresos netos de cada transacción entrante en tiempo real y lo incluye en los reportes. Los impuestos se reportan por defecto para cualquier transacción medida por el ROI360 utilizando la configuración de tasa impositiva predeterminada. La configuración se puede editar utilizando la API de impuestos dedicada.

Aprender más sobre los ingresos reales

Para editar la configuración fiscal mediante la API de impuestos:

  1. Dale a tu desarrollador:
    • El token API V2 para usar como clave de autorización.
    • Los parámetros y valores que contienen información sobre qué impuestos calcular, como se indica en la tabla que sigue. 
  2. Dile a tu desarrollador que siga sus instrucciones de la API de impuestos para crear las reglas de tasas impositivas. Nota: La API permite un archivo JSON en el cuerpo de la solicitud post. Este archivo JSON incluye todos los países compatibles y las tasas impositivas. El desarrollador puede editarlo o utilizarlo como está en la API.

Parámetros y valores a utilizar en la API

Parámetro Obligatorio Observaciones Registra el valor (para que lo use tu desarrollador)
tax_name
  • Nombre que aparece en la factura del cliente que describe el tipo específico de impuesto. 
  • Ejemplo: Ventas, IVA, GST
 
tax_rate
  • Número de hasta 4 decimales que representa el porcentaje impositivo a recaudar.
  • Ejemplo: 7,25
 
tax_exclusive No
  • Parámetro booleano, ya sea verdadero (true) o falso (false).
  • Falso significa que el impuesto está incluido en los ingresos generales.
  • Verdadero significa que el impuesto se suma a los ingresos totales declarados. Por ejemplo, en EE. UU. o Canadá, donde los precios no incluyen el impuesto sobre las ventas.
  • El valor predeterminado es falso.
 
País No  
subdivision No
  • Para algunos países, puede haber un estado/subdivisión adicional.
  • Se maneja de acuerdo con los códigos de subdivisión ISO 3166-2.
  • Debe incluir el código de país y el código de subdivisión.
  • Ejemplo: US-CA
 
postal_code No
  • Cadena de letras y/o números
  • Ejemplo: L4J8E3
 
deduction_order No
  • Enum, ya sea 0, 1 o 2:
    • 0 significa que la comisión de la tienda se deduce primero de los ingresos brutos y los impuestos se deducen del monto restante.
    • 1 significa que el impuesto se deduce primero de los ingresos brutos y la comisión de la tienda se deduce del monto restante.
    • 2 significa que tanto el impuesto como la comisión de la tienda se deducen de los ingresos totales.
 

Paso 5: Prueba de los ingresos por suscripción e IAP

Es mejor que valides las integraciones de ingresos por suscripción e IAP en un entorno de pruebas para asegurarte de que el conector del SDK esté correctamente integrado y que las notificaciones del servidor estén configuradas y recibidas correctamente por AppsFlyer.

Antes de la prueba, asegúrate de que tu desarrollador configure el entorno de pruebas en el conector del SDK (configurando Sandbox en true). Esto permite a ROI360 crear solo eventos in-app de entorno de pruebas con 0 ingresos por las pruebas. Por lo tanto, los datos de producción no se ven afectados.

Consideraciones sobre el entorno de pruebas

En un entorno de pruebas:

  • Solo los eventos de compra iniciales hacen que el conector del SDK produzca un evento que AppsFlyer registra. Un evento IAP se llama af_purchase_sandbox_sdk. Un evento de suscripción se llama af_ars_sandbox_sdk.
  • Todos los demás eventos de compra se eliminan, lo que significa que el conector del SDK no produce un evento.
  • Las notificaciones entrantes del servidor solo se procesan si el conector del SDK registra primero la transacción original. En este caso, se produce un evento IAP llamado af_purchase_sandbox_s2s. Se produce un evento de suscripción llamado af_ars_sandbox_s2s.
  • No se produce ningún evento para ninguna notificación del servidor para la cual el conector del SDK no haya registrado primero la transacción original.
  • Para iOS, asegúrate de que en las notificaciones del servidor del App Store en App Store Connect, el punto de conexión de AppsFlyer esté configurado con la URL del servidor de tu entorno de pruebas.
    ASSN.png
  • Para Android, las pruebas realizadas por los probadores de licencias dan como resultado eventos de entorno de pruebas incluso si el entorno de pruebas en el SDK no está configurado.

Prueba de los ingresos por suscripción e IAP

Para probar los ingresos por suscripción e IAP:

  1. Pide a tus desarrolladores que sigan sus instrucciones para Android , iOS Unity, para configurar el entorno de pruebas en el conector del SDK.
  2. Haz una compra de prueba. También se admiten las transacciones realizadas por License Tester en Google Play y por TestFlight en iOS.
    Nota: Cualquier producto de suscripción se puede probar solo una vez desde cada dispositivo de prueba. Es decir, no se pueden registrar múltiples compras de prueba de la misma suscripción desde el mismo dispositivo, ya que no se registrarán.
  3. Verifica el evento se muestra en el panel de control de actividad de AppsFlyer. Un evento IAP se llama af_purchase_sandbox_sdk. Un evento de suscripción se llama af_ars_sandbox_sdk. Estos eventos incluyen:
    • Un valor de ingresos 0 (para no distorsionar los reportes reales de AppsFlyer).
    • Un parámetro af_sandbox_revenue que incluye el valor de ingresos del producto comprado para asegurarte de que se reporten los ingresos correctos.
  4. Si estás probando un producto de suscripción, dale un tiempo para que AppsFlyer reciba una notificación del servidor. Por lo general, esto ocurre dentro de unos minutos después de la compra inicial. 
  5. Verifica que aparezca un evento en el panel de control de actividad de AppsFlyer. La compra de una suscripción autorrenovable se denomina af_ars_sandbox_s2s. El evento incluye:
    • Un valor de ingresos 0 (para no distorsionar los reportes reales de AppsFlyer).
    • Un parámetro af_sandbox_revenue que incluye el valor de ingresos del producto comprado para asegurarte de que se reporten los ingresos correctos.

Paso 6: Lanzar la versión de la aplicación con el conector del SDK

Antes de que tu desarrollador lance la nueva versión de la aplicación con el conector del SDK de compra integrado, asegúrate de que:

  • Los eventos in-app que quieres capturar como IAP o suscripción no están bloqueados por una de las reglas de validación que hayas configurado en AppsFlyer.
  • Tu desarrollador debe tener cualquier marca en el entorno de pruebas marcada como falsa.
  • Para iOS, asegúrate de que en las notificaciones del servidor del App Store en App Store Connect, el punto de conexión de AppsFlyer esté configurado con la URL del servidor de tu entorno de pruebas.
    ASSN.png

Referencia

Eventos y parámetros relacionados con IAP

Las siguientes secciones muestran los eventos relacionados con IAP que AppsFlyer mide y los parámetros que se registran para cada evento. Consulta el diccionario de parámetros de eventos para obtener una explicación de los parámetros incluidos.

Todos los eventos generados:

  • Se consideran eventos S2S.
  • Son accesibles en los reportes de raw data (como eventos in-app orgánicos o no orgánicos).
  • Se pueden enviar a los partners mediante postbacks.
  • Se puede utilizar en SKAN Conversion Studio.

Nota: Dependiendo de la plataforma del dispositivo del usuario, algunos parámetros no siempre se rellenan para un evento in-app.

Compra (af_purchase)

Descripción

Se registra cuando un usuario realiza una compra.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_net_revenue
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code
  • af_net_revenue_factors

Compra cancelada (af_purchase_canceled)

Descripción

Se registra cuando un usuario cancela una compra.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment

Compra pendiente (af_purchase_pending)

Descripción

Se registra cuando un usuario realiza una compra pero el pago aún no se ha procesado.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment

Reembolso (af_purchase_refund)

Descripción

Se registra cuando se reembolsa una compra.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_discount_type
  • event_revenue_usd
  • event_revenue (incluido en el evento cuando los ingresos superan cero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Compra de prueba (af_purchase_sandbox_sdk)

Descripción

Se registra cuando se prueba una compra registrada a través del SDK en un entorno de pruebas.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_purchase_state
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id

Compra de prueba (af_purchase_sandbox_s2s)

Descripción

Se registra cuando se prueba una compra registrada a través de S2S en un entorno de pruebas.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_purchase_state
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id

Eventos y parámetros relacionados con la suscripción

Las siguientes secciones muestran los eventos relacionados con la suscripción que AppsFlyer mide, y los parámetros que se registran para cada evento. Consulta el diccionario de parámetros de eventos para obtener una explicación de los parámetros incluidos.

Todos los eventos generados:

  • Se consideran eventos S2S.
  • Son accesibles en los reportes de raw data (como eventos in-app orgánicos o no orgánicos).
  • Se pueden enviar a los partners mediante postbacks.
  • Se puede utilizar en SKAN Conversion Studio.

Nota: Dependiendo de la plataforma del dispositivo del usuario, algunos parámetros no siempre se rellenan para un evento in-app.

Prueba iniciada (af_ars_trial_started)

Descripción

Se registra cuando un suscriptor comienza un período de prueba.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Prueba cancelada (af_ars_trial_canceled)

Descripción

Se registra cuando un suscriptor cancela la renovación automática de la suscripción durante el período de prueba. Si un usuario no restaura la renovación automática dentro del período de prueba, sigue un evento de abandono.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Prueba abandonada (af_ars_trial_churned)

Descripción

Se registra cuando un suscriptor se da de baja tras un período de prueba. Esto sucede después de la cancelación de la renovación automática y la expiración del período de prueba. También puede ser consecuencia de un problema de facturación o técnico con la renovación que provoque el abandono.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_reason

Prueba convertida (af_ars_trial_converted)

Descripción

Se registra cuando comienza una renovación a precio completo, después de un período de prueba. 

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • af_revenue (incluido en el evento solo cuando los ingresos superan cero.) 
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Suscripción iniciada (af_ars_subscription_started)

Descripción

Se registra cuando se inicia una suscripción con descuento o a precio completo.

Nota:

  • Las nuevas suscripciones solo pueden registrarse a través del conector del SDK.
  • En el caso de iOS, , si un suscriptor vuelve a comprar una suscripción que ya posee, el conector del SDK reporta a la aplicación una validación de recibo correcta, pero no registra una nueva transacción en AppsFlyer.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (incluido en el evento cuando los ingresos superan cero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Suscripción cancelada (af_ars_subscription_canceled)

Descripción

Se registra cuando se cancela una suscripción de renovación automática en medio de un período de facturación. Si un usuario no restaura la renovación automática dentro del mismo período de facturación, sigue un evento de abandono.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Suscripción en pausa (af_ars_subscription_paused) - Solo Android

Descripción

Se registra cuando un usuario detiene una suscripción activa.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Suscripción reanudada (af_ars_subscription_resumed)

Descripción

Se registra cuando se reanuda una suscripción de precio completo después de una suscripción abandonada o reembolsada.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • af_reason
  • event_revenue (incluido en el evento cuando los ingresos por eventos superan cero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Suscripción abandonada (af_ars_subscription_churned)

Descripción

Se registra cuando un suscriptor abandona la suscripción. Esto suele ocurrir tras la cancelación de la renovación automática o la expiración del período de facturación. También puede ser consecuencia de un problema de facturación o técnico con la renovación que provoque el abandono.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_reason

Suscripción reembolsada (af_ars_subscription_refunded)

Descripción

Se registra cuando se emite un reembolso al suscriptor.

Nota:

  • Este evento suele generarse junto con un valor negativo. En los casos en los que es imposible detectar qué transacciones fueron reembolsadas, o los detalles del reembolso no están incluidos en la notificación, el evento de reembolso no muestra ningún valor.

Parámetros 

  • app_id
  • customer_user_id
  • af_reason
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_refunded_transaction_ids
  • event_revenue_usd
  • event_revenue (incluido en el evento cuando los ingresos superan cero)
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_store
  • af_environment
  • af_period_type
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Gracia de facturación de la suscripción (af_ars_subscription_billing_grace)

Descripción

Se registra cuando una renovación de la suscripción falla por un problema de facturación y el suscriptor entra en el periodo de gracia de facturación.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Suscripción renovada (af_ars_subscription_renewed)

Descripción

Se registra cuando tiene lugar una suscripción con renovación automática.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (incluido en el evento cuando los ingresos superan cero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Suscripción modificada (af_ars_subscription_xgraded)

Descripción

Se registra cuando un suscriptor actualiza, baja de categoría o cambia de producto.

Parámetros 

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (incluido en el evento cuando los ingresos superan cero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Suscriptor existente (af_ars_existing_subscriber)

Descripción

Se registra cuando se notifica al conector del SDK sobre un suscriptor en medio de un ciclo de facturación, antes de recibir una notificación de seguimiento del servidor que transfiere al suscriptor a otra etapa del ciclo de vida relevante. Este evento generalmente se genera durante tu periodo de onboarding y adopción del conector del SDK.

Parámetros 

  • app_id
  • customer_user_id
  • País
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Compra de prueba (af_ars_sandbox_sdk)

Descripción

Se registra cuando se prueba una compra registrada a través del SDK en un entorno de pruebas.

Parámetros 

  • app_id
  • customer_user_id
  • País
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Compra de prueba (af_ars_sandbox_s2s)

Descripción

Se registra cuando se prueba una compra registrada a través de S2S en un entorno de pruebas.

Parámetros 

  • app_id
  • customer_user_id
  • País
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Diccionario de parámetros

Los parámetros de los eventos de IAP y suscripción se muestran en los reportes de raw data, ya sea como sus propias columnas o rellenados como parte del valor del evento.

Los parámetros que tienen sus propias columnas son:

  • app_id
  • customer_user_id
  • country_code
  • af_currency
  • event_revenue_usd
  • af_revenue
  • android_id
  • ip
  • idfa
  • appsflyer_id

Consulta el diccionario de campos de datos para obtener más información sobre estos parámetros.

En la siguiente tabla se describen los parámetros de raw data disponibles en los eventos ARS y VIAP.

Parámetro Observaciones Producto
af_cancelation_date_ms Fecha de la cancelación IAP
af_reason
  • En eventos relacionados con la cancelación o el abandono del cliente, la razón por la que un usuario abandonó o canceló. Posibles valores:
    • iOS:
      • cancel_intent
      • billing_issue
      • declined_price_increase
      • product_unavailable
    • Android:
      • No uso este servicio lo suficiente
      • Problemas técnicos
      • Motivos relacionados con el costo
      • Encontré una aplicación mejor
      • Otros
  • En eventos de suscripción reanudada, la razón por la que un usuario reanudó su suscripción. Valores posibles:
    • Android:
      • pausado y reanudado
      • renovación automática desactivada y activada
  • En eventos relacionados con reembolsos, la razón por la que el usuario recibió un reembolso. Posibles valores:
    • iOS:
      • 1: problema con tu aplicación
      • 0: otra razón
  • IAP
  • Suscripción
af_expires_date_ms

La fecha de vencimiento del ciclo de facturación de la suscripción actual

Suscripción

af_subscription_ownership_type

FAMILY_SHARED significa que el usuario tiene acceso a través del uso compartido familiar.  PURCHASED significa que el usuario que paga realizó la compra.

Suscripción

af_discount_id

El ID de la oferta presentada al usuario durante la compra inicial. El ID se rellena solo cuando hay un código de descuento.

  • IAP
  • Suscripción
af_discount_type

El tipo de descuento canjeado por el usuario. Valores posibles:

  • IOS
    • introductory
    • subscription
  • Android
    • intro price
    • one_time_code
    • vanity_code
Suscripción
af_original_transaction_id
  • El ID de la transacción original
  • Solo para iOS
  • IAP
  • Suscripción
af_order_id
  • El ID del pedido de la transacción
  • Solo para Android
  • IAP
  • Suscripción
af_purchase_token
  • El token de compra para la transacción
  • Solo para Android
  • IAP
  • Suscripción
af_transaction_id
  • El ID de la transacción
  • Solo para iOS
  • IAP
  • Suscripción
af_purchase_state

Valores posibles:

  • Comprado
  • Cancelado
  • Pendiente

IAP 

af_original_transaction_id
  • El ID original de la transacción
  • Solo para iOS
  • IAP
  • Suscripción
af_refunded_transaction_ids
  • Una matriz de todos los ID de transacciones reembolsadas
  • Solo para iOS
  • IAP
  • Suscripción
af_product_id

El ID del producto de suscripción

  • IAP
  • Suscripción
af_purchase_date_ms

La fecha de compra del evento in-app del ID de producto reportado.

  • IAP
  • Suscripción
af_store

La tienda de aplicaciones en la que se compró el producto de suscripción.

  • IAP
  • Suscripción
af_environment

El entorno desde el cual se reciben los datos, ya sea producción o el entorno de pruebas.

  • IAP
  • Suscripción
af_period_type
  • Tipo de suscripción o período de prueba.
  • Valores posibles:
    • Prueba
    • intro
    • Normal

Suscripción

store_commission
  • El porcentaje calculado de comisión que la tienda obtiene del producto comprado.
  • Se muestra como un decimal.
  • Ejemplo: 30
  • IAP
  • Suscripción
af_net_revenue

Los ingresos netos calculados en base a todas las razones factorizadas. Consulta af_net_revenue_factors.

  • IAP
  • Suscripción
af_net_revenue_factors
  • Una matriz que representa todas las razones factorizadas que producen la cantidad reportada de net_revenue.
  • Ejemplo de valor: store_commission
  • IAP
  • Suscripción

af_net_revenue_tax_name

  • Nombre que aparece en la factura del cliente que describe el tipo específico de impuesto. 
  • Ejemplo: Ventas, IVA, GST
  • IAP
  • Suscripción

af_net_revenue_tax_rate

  • Número de hasta 4 decimales que representa el porcentaje impositivo recaudado.
  • Ejemplo: 7,25
  • IAP
  • Suscripción

af_net_revenue_tax_exclusive

  • Parámetro booleano, ya sea verdadero (true) o falso (false).
  • Falso significa que el impuesto está incluido en los ingresos generales.
  • Verdadero significa que el impuesto se suma a los ingresos totales declarados. Por ejemplo, en EE. UU. o Canadá, donde los precios no incluyen el impuesto sobre las ventas.
  • IAP
  • Suscripción

af_net_revenue_country

  • IAP
  • Suscripción

af_net_revenue_subdivision

  • Para algunos países, puede haber un estado/subdivisión adicional. Esto se maneja de acuerdo con los códigos de subdivisión ISO 3166-2.
  • Incluye el código de país y el código de subdivisión.
  • Ejemplo: US-CA
  • IAP
  • Suscripción

af_net_revenue_postal_code

  • Cadena de letras y/o números
  • Ejemplo: L4J8E3
  • IAP
  • Suscripción
af_cuids
  • En el contexto de ARS, este parámetro contiene una matriz con todos los CUID.
  • La matriz de CUID se muestra independientemente de los ID de los dispositivos. Por lo tanto, los mismos CUID pueden aparecer para más de un ID de dispositivo.
Suscripción

Ingresos reales

Los ingresos reales son una capa de la lógica empresarial creada para servir a la solución de ingresos por suscripciones y compras in-app de AppsFlyer. Calcula automáticamente el valor de los ingresos netos de cada transacción entrante en tiempo real y lo incluye en los reportes. Los ingresos reales consideran los siguientes factores en el cálculo de los ingresos de brutos a netos: 

  • Comisión de la tienda:
    • Se calcula y se reporta automáticamente. No se requiere ninguna acción de tu parte.
    • Para las compras, la comisión de la tienda es del 30 %.
    • Para las suscripciones, la comisión se calcula automáticamente por suscriptor, teniendo en cuenta la vida útil del suscriptor, (App Store: a partir del 30 % de comisión, y reduciéndose al 15 % después de un año, Play Store: 15 % de comisión).
    • Los parámetros de ingresos netos relacionados están disponibles en los reportes de raw data.
  • Impuestos: los impuestos se reportan por defecto para cualquier transacción medida por el ROI360, utilizando la configuración de tasa impositiva predeterminada. La configuración se puede editar utilizando la API de impuestos dedicada.

Al visualizar los ingresos reales en los reportes, los siguientes parámetros contienen los datos de ingresos netos. Consulta el diccionario de parámetros para obtener más detalles.

Parámetro Factor de ingresos netos

store_commission

Comisión de la tienda

af_net_revenue_tax_name

Impuesto

af_net_revenue_tax_rate

Impuesto

af_net_revenue_tax_exclusive

Impuesto

af_net_revenue_postal_code

Impuesto

af_net_revenue_country

Impuesto

af_net_revenue_subdivision

Impuesto
af_net_revenue
  • Comisión de la tienda
  • Impuesto
af_net_revenue_factors
  • Comisión de la tienda
  • Impuesto

Especificaciones y limitaciones

Especificación Producto Observaciones
Registro de instalación y anonimización
  • IAP
  • Ingresos por suscripción
No se admite
Bibliotecas de facturación de Google V6
  • IAP
  • Ingresos por suscripción
No se admite
Nuevas suscripciones

Ingresos por suscripción

Solo registrados a través del SDK de compra de AppsFlyer
Cambio de precio

Ingresos por suscripción

Si los ingresos por suscripción no reciben una notificación originada por el SDK con el nuevo precio del producto, los ingresos por suscripción siguen reportando el precio anterior del producto como ingresos. Una vez recibido el nuevo precio del producto del SDK de compra de ARS, se registra el nuevo precio.
Ingresos brutos
  • IAP
  • Ingresos por suscripción
Compatible
Ingresos netos
  • IAP
  • Ingresos por suscripción
Se admite solo en el raw data
Impuesto

Ingresos por suscripción

Compatible
Comisión de la tienda de los ingresos netos
  • IAP
  • Ingresos por suscripción
  • Para iOS, el 15 % para suscriptores desde hace más de 1 año: solo se admite en el raw data. 
  • Programas para pequeñas empresas: no se admiten
Reembolsos IAP Se pueden reportar hasta 180 días después de la compra original.
Eliminación de duplicados
  • IAP
  • Ingresos por suscripción
Compatible con transacciones reportadas hasta 180 días después de la fecha del evento.
Modo estricto del SDK
  • IAP
  • Ingresos por suscripción
Las suscripciones a ROI360 y VIAP son compatibles con el modo estricto del SDK.
Divisa
  • IAP
  • Ingresos por suscripción
Los ingresos se reportan en la divisa original (usando el parámetro event_revenue) y en USD (usando el parámetro event_revenue_usd).