[Beta fechado] Mensurando assinaturas renováveis automaticamente (ARS)

beta_feature.png

Visão geral: Medir automaticamente a receita de assinaturas auto-renováveis (ARS) para ter uma visão completa dos ciclos de vida de seu assinante e métricas precisas do ROAS.

Visão geral do ARS

Assinaturas auto-renováveis (ARS) são eventos que continuam recorrentes em seu aplicativo. As assinaturas são renovadas automaticamente no final de sua duração, até que os usuários optem por fazer um upgrade, reduzir ou cancelar. Cada upgrade, redução ou cancelamento significa alterações na receita recebida.

A solução AppsFlyer ARS valida e registra automaticamente os eventos relacionados à assinatura que acontecem dentro ou fora de seu aplicativo e os atribui. Os eventos relacionados à assinatura acontecem nos seguintes casos:

  • O conector SDK de compra ARS Android e iOS da AppsFlyer.
  • Notificações do servidor App Store e Google Play (RTDN) enviadas para AppsFlyer.

Os dados de ARS estão disponíveis através de painéis e relatórios AppsFlyer.

Considerações

  • Se você usa a solução de medição ARS, não deve usar a validação do recibo de compra para registrar as assinaturas. O resultado disso é a duplicação de receita relatada.

Configuração da solução AppsFlyer ARS

Escopo do trabalho
Quem desempenha uma função Tarefas
Profissional de marketing
  • Faça a configuração de ARS para Android.
  • Faça a configuração de ARS para iOS.
Desenvolvedor Android

Integra o conector SDK de compra ARS Android da AppsFlyer.

Recomendado: para identificar sua base de assinantes mais rapidamente, tenha notificações do servidor configuradas, antes de liberar sua versão do aplicativo com o conector SDK de compra ARS.

Desenvolvedor iOS

Integra o conector SDK de compra ARS iOS da AppsFlyer.

Recomendado: para identificar sua base de assinantes mais rapidamente, tenha notificações do servidor configuradas, antes de liberar sua versão do aplicativo com o conector SDK de compra ARS.

Configurar ARS para Android

Antes de começar:

  • A configuração de ARS consiste em etapas realizadas na App Store Connect, na plataforma Google Cloud e na IU da AppsFlyer. Mantenha as abas para App Store Connect, Google Cloud Platform e AppsFlyer abertas durante a configuração.
  • A configuração na IU da AppsFlyer requer permissões de administrador.

admin.png Para configurar a ARS:

  1. Na plataforma Google Cloud, vá para Service Accounts e clique em Create service account.
  2. Digite o nome de uma conta de serviço.
  3. Clique em Create and continue.
  4. Para Role, selecione pub/sub subscriber.
  5. Clique em Continue > Done.
  6. Na plataforma do Google Cloud, vá para Service Accounts, encontre a conta relevante e clique em Actions > Manage keys.
  7. Clique em ADD KEY > Create new key.
  8. Para tipo de chave, selecione JSON.
  9. Clique em Create.
    A chave privada JSON da conta de serviço do Google é baixada.
  10. No Google Play Console, vá para Setup > API access.
  11. Na lista de service accounts, encontre a conta de serviço relevante e clique em Grant permissions.
  12. Em Permissions , vá para Account permissions e selecione ambas:
  13. Clique em Invite user > Send invite.
  14. Na AppsFlyer, vá para Integration > Subscription Attribution.
    A página de relatório de receitas é aberta.
  15. Na área de compras e assinaturas, faça o upload da chave privada JSON da sua conta de serviço do Google.
  16. Selecione o método usado para receber dados ARS do Google. Ou:
    • Permita que a AppsFlyer receba mensagens RTDN diretamente do Google.
      1. Copie o tópico da AppsFlyer.
      2. Selecione seu app no Google Play console.
        O dashboard é aberto.
      3. Vá para Monetization setup, e, na sessão Google Play Billing, no campo Topic , cole o tópico da AppsFlyer que você registrou na subetapa 1.
      4. Clique em Save.
    • Encaminhe suas mensagens RTDN para a AppsFlyer.
      1. Copie o tópico da AppsFlyer.
      2. Na plataforma Google Cloud, em Pub/Sub, vá para a sessão Topics e verifique se você tem um tópico dedicado a pub/subs para assinaturas.
      3. Na plataforma Google Cloud, em Pub/Sub, vá para a sessão de Subscriptions e clique em Create subscription.
      4. Digite um Subscription ID (nome).
      5. Selecione o tópico relevante do pub/sub no menu suspenso.
      6. Para Delivery type, selecione Push.
      7. Digite a URL do endpoint (tópico da AppsFlyer) que você registrou no subetapa 1.
      8. Para Expiration period, selecione Never expire.
      9. Deixe tudo o resto como está.
      10. Clique em Save.
      11. Na plataforma Google Cloud, em Pub/Sub, vá para a sessão Subscriptions, e copie o nome do tópico.
      12. No Google Play Console, vá para Monetization setup e, na sessão Google Play Billing, no campo Topic, cole o nome do tópico que você copiou na subetapa 11.
      13. Clique em Save.
  17. Na página de configuração de receita da AppsFlyer, acesse Attribute and report auto-renewable subscriptions.
  18. Clique em Save.
  19. Avise seu desenvolvedor do Android para que ele integre o Android ARS purchase SDK connector da AppsFlyer.

Observação: Pode levar algum tempo (às vezes até 24 horas) após a configuração das credenciais e permissões da conta de serviço para poder usá-las. Isso pode fazer com que você receba erros ao tentar se conectar ao Google RTDN.

Configurar ARS para iOS

Antes de começar:

  • A criação do ARS consiste em etapas realizadas na App Store Connect e na UI da AppsFlyer. Mantenha as abas do App Store Connect e da AppsFlyer abertas durante a configuração.
  • A configuração na IU da AppsFlyer requer permissões de administrador.

admin.png Para configurar a ARS:

  1. Na AppsFlyer, vá para Integration > Subscription Attribution.
    A página de relatório de receitas é aberta.
  2. Insira sua chave secreta compartilhada da App Store Connect.
  3. Copie o endpoint da AppsFlyer e insira-o em sua configuração da App Store Connect.
  4. [Opcional] Selecione para enviar notificações de servidor para seu endpoint e digite seu endpoint. 
  5. Ative Attribute and report auto-renewable subscriptions.
  6. Clique em Salvar.
  7. Entre na App Store Connect e selecione seu aplicativo.
  8. Na sessão App Information, vá até as notificações do servidor da App Store e, no campo Production Server URL, cole o endpoint da AppsFlyer que você copiou na etapa 3. 
  9. Clique em Salvar.
  10. Peça ao seu desenvolvedor do iOS para integrar o iOS ARS purchase SDK connector da AppsFlyer.

Observação:

  • A Apple só pode enviar notificações de servidor para um endpoint. Se você quiser que a AppsFlyer encaminhe todas as notificações recebidas para seu endpoint, entre em contato com seu CSM e lhe passe seu URL de endpoint. (O URL deve ser um endpoint HTTP ou HTTPS válido. De preferência HTTPS).
  • Os clientes podem enviar notificações do servidor Apple de seu backend diretamente para o URL do endpoint de notificação, mas as solicitações devem ser exatamente como são recebidasda App Store.

Eventos e parâmetros relacionados à assinatura

As seções seguintes mostram os eventos relacionados à assinatura que a AppsFlyer mede, e os parâmetros que são registrados para cada evento.

Observação: todos os parâmetros se aplicam ao Android e iOS, a menos que seja indicado o contrário.

Teste iniciado (af_ars_trial_started)

Descrição

Registrado quando um assinante inicia um período de teste.

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

Teste cancelado (af_ars_trial_cancelled)

Descrição

Registrado quando um assinante cancela a renovação automática da assinatura durante o período de teste. Se um usuário não restaurar a auto-renovação dentro do período de teste, segue-se um evento de churn.

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

Churn do teste (af_ars_trial_churned)

Descrição

Registrado quando ocorre o churn de um assinante após um período de teste. Isto acontece após o cancelamento da auto-renovação e expiração do período de teste. Também pode acontecer após uma cobrança ou questão técnica com a renovação que leva ao churn.

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_churn_reason

Conversão do teste (af_ars_trial_converted)

Descrição

Registrado quando se inicia uma renovação do preço total, após um período de teste.

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_revenue_usd
  • af_revenue
  • store_commission
  • net_revenue
  • net_revenue_factors

Início da assinatura (af_ars_subscription_subscription_started)

Descrição

Registrado quando se inicia uma assinatura com desconto ou a preço integral.

Observação:

  • Novas assinaturas só podem ser registradas através do conector SDK.
  • Para o iOS, se um assinante recompra uma assinatura que já possui, o conector SDK reporta uma validação de recibo bem sucedida de volta ao aplicativo, mas não registra uma nova transação na 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
  • af_revenue_usd
  • af_revenue
  • store_commission
  • net_revenue
  • net_revenue_factors

Assinatura cancelada (af_ars_subscription_cancelled)

Descrição

Registrado quando uma assinatura de renovação automática é cancelada no meio de um período de faturamento. Se um usuário não restaurar a auto-renovação dentro do período de faturamento, segue-se um evento de churn.

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

Assinatura pausada (af_ars_subscription_paused) - Somente Android

Descrição

Registrado quando um usuário pausa uma assinatura ativa.

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

Assinatura retomada (af_ars_subscription_resumed)

Descrição

Registrado quando uma assinatura de preço total é retomada após uma assinatura em que houve churn ou reembolso.

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
  • af_revenue
  • store_commission
  • net_revenue
  • net_revenue_factors

Churn da assinatura (af_ars_subscription_churned)

Descrição

Registrado quando ocorre o churn de um assinante. Isso geralmente acontece após o cancelamento da auto-renovação e expiração do período de teste. Também pode acontecer após uma cobrança ou questão técnica com a renovação que leva ao churn.

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_churn_reason

Assinatura reembolsada (af_ars_subscription_refunded)

Descrição

Registrado quando um reembolso é emitido para um assinante.

Observação: este evento normalmente é gerado junto com um valor negativo. Nos casos em que é impossível detectar quais transações foram reembolsadas, ou os detalhes do reembolso não estão incluídos na notificação, o evento de reembolso não mostra nenhum valor.

Parâmetros 

  • app_id
  • customer_user_id
  • af_cancellation_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
  • af_revenue_usd
  • af_revenue
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_store
  • af_environment
  • af_period_type
  • store_commission
  • net_revenue
  • net_revenue_factors
  • net_revenue_usd

Carência de faturamento da assinatura (af_ars_subscription_billing_grace)

Descrição

Registrado quando uma renovação de assinatura falha devido a um problema de cobrança e o assinante entra no período de carência de cobrança.

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

Assinatura renovada (af_ars_subscription_renewed)

Descrição

Registrado quando uma assinatura de renovação automática é feita.

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_revenue_usd
  • af_revenue
  • store_commission
  • net_revenue
  • net_revenue_factors

Assinatura alterada (af_ars_subscription_xgraded)

Descrição

Registrado quando um assinante faz upgrades, redução, ou cross-grades para um produto diferente.

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_revenue_usd
  • af_revenue
  • store_commission
  • net_revenue
  • net_revenue_factors

Dicionário de parâmetros de eventos

Parâmetro Observações
app_id

O ID do aplicativo

customer_user_id

O último ID de usuário do cliente, conforme informado pelo anunciante.

af_cancellation_reason
  • O motivo pelo qual o usuário recebeu um reembolso:
    • 1: problema com seu aplicativo
    • 0: outro motivo
  • Somente iOS
af_churn_reason

O motivo do churn de um usuário. Valores potenciais:

  • iOS
    • cancel_intent
    • billing_issue
    • cost_related
    • product_unavailable
    • unknown_reason
  • Android
    • Eu não uso este serviço o suficiente
    • Problemas técnicos
    • Motivos relacionados com os custos
    • Encontrei um aplicativo melhor
    • Outros
country_code

O código do país

af_currency

A moeda local da transação

af_expires_date_ms

A data de vencimento do atual ciclo de cobrança da assinatura

af_subscription_ownership_type

FAMILY_SHARED significa que o usuário tem acesso através do compartilhamento familiar.  PURCHASED significa que o usuário pagante fez a compra.

af_discount_id

O ID da oferta apresentada ao usuário durante a compra inicial

af_original_transaction_id
  • O ID original da transação
  • Somente iOS
af_order_id
  • O ID do pedido para a transação
  • Somente Android
af_purchase_token
  • O token de compra para a transação
  • Somente Android
af_transaction_id
  • A identificação da transação
  • Somente iOS
af_refunded_transaction_ids Um conjunto de todos os IDs de transação reembolsados
apenas para iOS
af_revenue_usd

A receita bruta relatada em USD - com base no último preço conhecido do produto

af_revenue

A receita bruta informada na moeda local com base no último preço conhecido do produto

af_product_id

O ID do produto de assinatura

advertiser_id

O ID do anunciante

idfa

Identificador do dispositivo iOS

ip

Endereço IP

appsflyer_id

ID do usuário AppsFlyer

purchase_date_ms

A data de compra do evento in-app informado do ID do produto

af_store

A loja de aplicativos da qual o produto de assinatura foi comprado

af_environment

O ambiente do qual os dados são recebidos, seja produção ou sandbox.

af_period_type

Tipo de período de assinatura. Por exemplo: teste, introdução, ou normal.

store_commission
  • A porcentagem calculada de comissão que a loja recebe do produto comprado.
  • Exibido como uma casa decimal.
net_revenue

Receita líquida calculada com base em todas as razões fatorizadas. Ver net_revenue_factors.

net_revenue_factors
  • Uma matriz representando todas as razões fatorizadas que produzem o montante reportado de net_revenue.
  • Valor de exemplo: store_commission
af_cuids
  • No contexto de ARS, este parâmetro contém uma matriz com todos os CUIDs.
  • O conjunto de CUIDs é exibido independentemente da identificação do dispositivo. Assim, os mesmos CUIDs podem ser exibidos para mais de um ID de dispositivo.
Parâmetros

Informações adicionais

Testando ARS via sandbox

Os clientes podem validar sua integração de ARS em um ambiente sandbox e garantir que:

  • O conector ARS SDK está devidamente integrado.
  • As notificações do servidor ARS estão devidamente configuradas.

Considerações:

No ambiente sandbox:

  • Somente os eventos iniciais de compra fazem com que o conector ARS SDK produza um evento. O evento é chamado af_ars_sandbox_sdk, e inclui:
    • Um valor de receita 0.
    • Um parâmetro af_sandbox_revenue que inclui o valor da receita do produto comprado.
  • Todos os outros eventos de compra são descartados, o que significa que o conector ARS SDK não produz um evento.
  • As notificações do servidor de entrada só são processadas se o conector ARS SDK primeiro registrar a transação original. Neste caso, é produzido um evento chamado af_ars_sandbox_s2s.
  • Um evento não é produzido para nenhuma notificação de servidor para a qual o conector ARS SDK não registrou primeiro a transação original.

Características e limitações

Características e limitações
Característica Observações
Bibliotecas de faturamento V5 do Google Não suportado
Notificações da Apple V2 Não suportado
Receita bruta Suportado
Receita líquida Não suportado
Comissão da loja Não suportado
Imposto Não suportado
Novas assinaturas Registrado somente através do SDK da AppsFlyer
Alteração de preço Se a ARS não receber uma notificação originada do SDK com o novo preço do produto, a ARS continuará a relatar o preço do produto anterior como receita. Assim que o novo preço do produto for recebido do SDK de compra da ARS, o novo preço será registrado.