Compra no aplicativo (IAP) e métrica da receita da assinatura

Premium

Visão geral: mensure e valide automaticamente a receita de compras in-app e assinaturas auto-renováveis para ter uma visão completa dos ciclos de vida do seu cliente e métricas precisas de ROAS.

Visão geral

Os anunciantes podem usar a receita de compras in-app (IAP) validadas e de assinatura para medir:

  • Toda a receita de compras in-pp de produtos e assinaturas gerenciadas por meio do App Store Connect (iOS) ou do Google Play Console (Android).
  • Reembolsos.
  • Receita de transação pendente e adiada (Android).
  • Eventos relacionados à assinatura que ocorrem dentro ou fora do seu aplicativo.

A solução de receita de IAP e assinatura também:

  • Garante que nenhuma transação duplicada seja registrada. Para iOS, ela também garante que nenhuma duplicação seja registrada para compartilhamento familiar.
  • Permite que a AppsFlyer encaminhe transações da Apple App Store para você (o anunciante).
  • Fornece dados True Revenue, ou seja, dados de receita líquida que levam em consideração a comissão e os impostos da loja.

Os dados de compra e assinatura são originários de:

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

Os dados de receita de compra e assinatura estão disponíveis através dos dashboards e relatórios da AppsFlyer. Eles também podem ser compartilhados com parceiros por meio de postbacks.

Considerações:

  • Se usar esta solução de métrica de receita de assinatura e IAP, você não deve enviar eventos de compra in-app ou executarvalidateAndLogInAppPurchase, pois isso resultará na declaração de receita duplicada.
  • A receita de assinatura pode começar a registrar as alterações do ciclo de vida do assinante para os assinantes existentes assim que eles lançam uma versão do aplicativo que inclui o conector do SDK de compra.

Fluxo:

  1. Um usuário faz uma compra in-app ou uma assinatura renovável automaticamente.
  2. O aplicativo faz uma transação na loja de aplicativos.
  3. O conector do SDK de compra da AppsFlyer detecta automaticamente a compra e envia sua carga para a AppsFlyer para validação e registro.
  4. A AppsFlyer valida a compra com a loja relevante para garantir que não seja fraudulenta.
    • Após a validação bem-sucedida, a AppsFlyer registra a compra ou assinatura.
    • Se a validação de recebimento falhar, o evento será exibido no relatório de dados brutos de eventos in-app bloqueados (disponível para assinantes do Protect360). 
  5. A AppsFlyer transfere a resposta para o conector SDK, que por sua vez transfere a resposta de validação de recebimento (sucesso ou falha) para o aplicativo.
  6. Quaisquer notificações recebidas do servidor também são processadas pela lógica de negócios de receita de assinatura e compra da AppsFlyer.
    • As notificações sobre transações relatadas anteriormente via conector SDK são validadas e processadas, resultando na criação interna de um evento de compra ou ciclo de vida.
    • As notificações sobre transações desconhecidas são descartadas.
    • Para iOS, todas as notificações do servidor podem ser redirecionadas para seus próprios servidores.

 Fluxo de trabalho de integração de receita de assinatura e IAP

Siga com precisão a ordem das instruções de configuração listadas na tabela abaixo para garantir precisão otimizada e relatórios completos de IAP e receitas de assinaturas auto-renováveis e eventos de ciclo de vida. Deixar de fazer isso pode resultar em imprecisões permanentes nos relatórios. Detalhes completos de cada etapa estão incluídos nas aba depois da tabela.

Etapa Tarefas
1

Configure notificações para IAP e receita de assinaturas do Google Play.

2

Configure notificações para IAP e receita de assinaturas da iOS App Store.

3
  • Integre o conector do SDK de compra da AppsFlyer para Android e iOS.
  • Recomendado para proprietários de aplicativos de assinatura: para identificar sua base de assinantes mais rapidamente, configure as notificações do servidor antes de lançar a versão do aplicativo com o conector SDK.
4

Integre a True Revenue tax API. Isso só será necessário se você quiser editar as taxas de imposto padrão. Caso contrário, os impostos serão informados para qualquer transação medida pelo ROI360.

5

Teste a integração para garantir que:

  • O conector SDK está devidamente integrado.
  • As notificações do servidor foram configuradas e recebidas corretamente pela AppsFlyer.
6

Lance as versões do aplicativo Android e iOS com os conectores do SDK de compra.

Etapa 1: Configure as notificações do Google Play

Antes de começar:

  • A configuração da receita de IAP e assinatura consiste em etapas executadas na plataforma Google Cloud e na IU da AppsFlyer. Recomendamos que você mantenha as abas da plataforma Google Cloud e AppsFlyer abertas durante a configuração.
  • A configuração na IU da AppsFlyer requer permissões de administrador.

Siga as instruções na aba abaixo para configurar notificações do Google Play:

1.1 :Vincule sua conta de desenvolvedor do Google Play ao seu projeto do Google Cloud

  1. No Google Play Console, acesse sua conta de desenvolvedor do Google Play.
  2. Vincule a conta ao seu projeto do Google Cloud. Para obter instruções, consulte este tópico de ajuda do Google.
  3. Ative a API do desenvolvedor do Google Play. Para obter instruções, consulte este tópico de ajuda do Google.

1.2 Crie uma conta de serviço

  1. Acesse o Google Cloud e abra o projeto que você acabou de vincular em 1.1.
  2. Em seu projeto, vá para IAM and Admin > Service Accounts e clique em Create service account

01.png

  1. Na página Criar conta de serviço, preencha a etapa Informações da conta de serviço.

02.png

  1. Clique em Criar e continuar.
  2. Na etapa Conceder acesso ao projeto a esta conta de serviço, selecione a função  de assinante Pub/sub.

03.png

  1. Clique em Continuar > OK.

1.3: Faça o download da chave privada da conta.

  1. Na página Contas de serviço , localize a conta de serviço relevante e clique em  ellipsis.png  e depois em Gerenciar chaves.

08.png

  1. Na aba Chaves da página da conta de serviço, clique em ADICIONAR CHAVE > Criar nova chave.

10.png

  1. Na caixa de diálogo Criar chave privada, selecione o tipo de chave JSON .
  2. Clique em Criar. O arquivo JSON de chave privada é baixado.
  3. Na AppsFlyer, vá para ROI360 > Configurações de receita.

41.png

  1. Selecione seu aplicativo na lista.
  2. Na aba Compras e assinaturas, clique em upload-2.png para carregar o arquivo JSON. 

40.png

 

1.4: Defina permissões de acesso à API

  1. No Google Play Console, vá para Configuração > Usuários e permissões.
  2. Na lista Contas de serviço, localize a conta de serviço que você criou em 1.2 clique em Gerenciar permissões do Play Console.

14.png

  1. Na aba Permissões, vá para a seção Permissões da conta e selecione ambos:
    • Ver dados financeiros.
    • Gerenciar pedidos e assinaturas.

15.png

  1. Clique em Convidar usuário e em Enviar convite.

Ou 1.5 Envie notificações do Google Play diretamente para a AppsFlyer

Selecione um dos dois métodos usados para receber dados de IAP e receita de assinatura do Google Play.

Ou:

  • Crie um tópico onde a AppsFlyer receba diretamente as notificações RTDN do Google Play (continue nesta etapa)

ou

  • Defina a AppsFlyer como assinante de seu tópico PUB/SUB pré-existente (vá para a próxima etapa).

Para criar um tópico onde a AppsFlyer receba diretamente as notificações RTDN, execute as seguintes etapas:

  1. Na AppsFlyer, vá para ROI360 > Configurações de receita > Compras e assinatura, selecione Permitir que o tópico da AppsFlyer obtenha mensagens RTDN diretamente do Google.

42.png

  1. Copie o tópico da AppsFlyer para a área de transferência.
  2. Em Google Play Console > Todos os aplicativos, selecione seu aplicativo. O painel é aberto.

18.png

  1. Acesse Configuração de monetização e, na seção Cobrança do Google Play, no campo Nome do tópico, cole o endereço do tópico da AppsFlyer que você copiou na subetapa 2.

19.png

  1. Clique em Salvar alterações.

OU 1.6 Encaminhe notificações do Google Play para a AppsFlyer

O outro método para receber notificações de IAP e assinatura é aplicável quando você já possui um tópico pré-existente que recebe notificações do Google Play. Nesse caso, defina a AppsFlyer como assinante do seu tópico PUB/SUB pré-existente em vez de criar um novo tópico (como na etapa anterior).

Para definir a AppsFlyer como assinante de seu tópico PUB/SUB pré-existente

  1. Na AppsFlyer, vá para ROI360 > Configurações de receita > Compras e assinaturas, selecione Encaminhar suas mensagens de tópico RTDN para a AppsFlyer.
  2. Copie o URL do ponto final para a área de transferência.

52.png

  1. Na plataforma do Google Cloud, em seu projeto, pesquise Pub/Sub.

21.png

  1. Em Pub/Sub, vá para a seção Tópicos e verifique se você tem um tópico de publicação/assinatura dedicado para assinaturas.

22.png

  1. Vá para a seção Assinaturas e clique em Criar assinatura.

25.png

  1. Digite o ID da assinatura.
  2. Selecione o tópico relevante do pub/sub no menu suspenso.

26.png

  1. Para Tipo de entrega, selecione Push.
  2. Insira o URL do ponto final que você registrou na subetapa 2.
  3. Para Data de expiração, selecione Nunca expirar.

28.png

  1. Clique em Salvar.
  2. Vá para a seção Assinaturas e copie o nome do tópico para a área de transferência.

46.png

  1. No Google Play Console, vá para Configuração de monetização e, na seção Faturamento do Google Play, no campo Nome do tópico, cole o nome do tópico que você copiou na etapa anterior.

19.png

  1. Clique em Salvar.

1.7 Configure serviços automáticos

  1. Na AppsFlyer, vá para ROI360 > Configurações de receita > Compras e assinaturas, ative um ou ambos:
    • Validar compras com o Google Play .
    • Atribuir e relatar assinaturas auto-renováveis.

50.png

  1. [Opcional] Marque Permitir que a AppsFlyer desduplique transações que já foram relatadas. Isso garante que nenhuma transação duplicada seja registrada.
  2. Clique em Salvar.
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.

Etapa 2: Configure notificações da App Store do iOS

Antes de começar:

  • Configurar a receita de IAP e assinatura consiste em etapas realizadas na App Store Connect e na UI da AppsFlyer. Mantenha as abas da App Store Connect e da AppsFlyer abertas durante a configuração.

  • A configuração na IU da AppsFlyer requer permissões de administrador.

Para configurar o IAP e a receita de assinatura:

  1. No App Store Connect, vá para Recursos > Assinaturas e clique em Gerenciar para obter a chave secreta compartilhada do App Store Connect.
    app_store_connect_shared_secret.png
  2. Na AppsFlyer, vá para ROI360 > Configurações de receita > Compras e assinaturas.
    A página de configuração de receita é aberta.
    ARS-VIAP.png
  3. Insira sua chave secreta compartilhada da App Store Connect.
  4. Copie o endpoint da AppsFlyer e insira-o em sua configuração da App Store Connect:
    1. Na App Store Connect, selecione seu aplicativo.
    2. Na seção Informações do aplicativo, role para baixo até Notificações do servidor da loja de aplicativos e cole o ponto final da AppsFlyer nos campos URL do servidor de produção e URL do servidor Sandbox.
      ASSN.png
    3. Clique em Salvar.
  5. [Opcional] Selecione para enviar notificações de servidor para seu endpoint e digite seu endpoint. 
  6. Na página de configuração de receita de assinatura e IAP da AppsFlyer, ative um ou ambos:
    • Atribuir e relatar assinaturas auto-renováveis.
    • Validar compras com a Apple App Store.
  7. [Opcional] Marque Permitir que a AppsFlyer desduplique transações que já foram relatadas.
    Isso garante que nenhuma transação duplicada seja registrada.
  8. [Opcional] Marque Desduplicar receita por mtivos de Compartilhamento familiar.
    Isso garante que nenhuma receita duplicada seja registrada para compras de compartilhamento familiar. Eventos de receita para outros membros da família incluem o parâmetro purchase_ownership_type=FAMILY_SHARED e exibem receita zero.

Observação:

  • A Apple só pode enviar notificações de servidor para um endpoint.
  • 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.

Etapa 3: Integre o conector do SDK de compra

A integração do conector do SDK de compra permite que seu aplicativo registre compras in-app e assinaturas renováveis automaticamente. Você pode optar por registrar um ou ambos os tipos de receita na página Configurações de receita > Compras e assinaturas na AppsFlyer para Android e iOS.

Para integrar o conector do SDK:

  1. Peça ao seu desenvolvedor Android para integrar o conector do SDK de compra para Android da AppsFlyer.
    • O conector de compra V1 para Android da AppsFlyer oferece suporte à biblioteca de faturamento 4 do Google.
    • O conector de compra V2 para Android da AppsFlyer oferece suporte à biblioteca de faturamento 5 do Google.
  2. Diga ao seu desenvolvedor iOS para integrar o conector do SDK de compra do iOS da AppsFlyer.

Observação: para aplicativos criados usando a estrutura do Unity, consulte a documentação do conector do Unity

Etapa 4: Integre a API de imposto True Revenue

True Revenue é uma camada de lógica de negócios criada para atender à solução de receita de assinaturas e compras in-app da AppsFlyer. Ela calcula automaticamente o valor da receita líquida para cada transação recebida em tempo real e o inclui em relatórios. O imposto é informado por padrão para qualquer transação medida pelo ROI360 usando a configuração de taxa de imposto padrão. A configuração pode ser editada usando a API fiscal dedicada.

Saiba mais sobre True Revenue

Para editar a configuração fiscal usando a API fiscal:

  1. Dê ao seu desenvolvedor:
    • O token da API V2 a ser usado como a chave de autorização.
    • Os parâmetros e valores que contêm informações sobre quais impostos calcular, conforme descrito na tabela a seguir. 
  2. Peça ao seu desenvolvedor para seguir as instruções da tax API para criar regras de taxa de imposto. Observação: A API permite um arquivo JSON no corpo da solicitação de post. Este arquivo JSON inclui todos os países e taxas de impostos suportados. O desenvolvedor pode editá-lo ou usá-lo como está na API.

Parâmetros e valores para usar na API

Parâmetro Obrigatório Observações Registre o valor (para uso do seu desenvolvedor)
tax_name Sim
  • Nome que aparece na fatura do cliente que descreve o tipo específico de imposto. 
  • Exemplo: Vendas, IVA, GST
 
tax_rate Sim
  • Número com até 4 casas decimais representando o percentual do imposto a ser cobrado.
  • Exemplo: 7.25
 
tax_exclusive Não
  • Parâmetro booleano, verdadeiro ou falso.
  • False significa que o imposto está incluído na receita geral.
  • True significa que o imposto é adicionado à receita declarada geral. Por exemplo, nos EUA ou no Canadá, onde o preço da etiqueta não inclui o imposto sobre vendas.
  • O padrão é falso.
 
país Não
  • Código de país ISO de duas letras para o qual o imposto é aplicado.
  • Exemplo: GB
 
subdivision Não
  • Para alguns países, pode haver um estado/subdivisão adicional.
  • Manuseado de acordo com os códigos de subdivisão ISO 3166-2.
  • Deve incluir o código do país e o código da subdivisão.
  • Exemplo: EUA-CA
 
postal_code Não
  • String de letras e/ou números
  • Exemplo: L4J8E3
 
deduction_order Não
  • Enumeração, 0, 1 ou 2:
    • 0 significa que a comissão da loja é deduzida primeiro da receita bruta e o imposto é deduzido do valor restante.
    • 1 significa que o imposto é deduzido primeiro da receita bruta e a comissão da loja é deduzida do valor restante.
    • 2 significa que tanto o imposto quanto a comissão da loja são deduzidos da receita total.
 

Etapa 5: Testando IAP e receita de assinatura

É melhor validar as integrações de IAP e receita de assinatura em um ambiente Sandbox para garantir que o conector do SDK esteja devidamente integrado e que as notificações do servidor sejam configuradas e recebidas corretamente pela AppsFlyer.

Antes do teste, certifique-se de que seu desenvolvedor configure o ambiente Sandbox no SDK Connector (definindo o Sandbox como true). Isso permite que o ROI360 crie apenas eventos in-app Sandbox com receita 0 para testes. Assim, os dados de produção não são afetados.

Considerações sobre o ambiente Sandbox

No ambiente sandbox:

  • Somente os eventos de compra inicial fazem com que o conector do SDK produza um evento que é registrado pela AppsFlyer. Um evento IAP é chamado af_purchase_sandbox_sdk. Um evento de assinatura é chamado af_ars_sandbox_sdk.
  • Todos os outros eventos de compra são descartados, o que significa que o conector SDK não produz um evento.
  • As notificações do servidor de entrada só são processadas se o conector SDK primeiro registrar a transação original. Neste caso, um evento IAP é produzido e se chama af_purchase_sandbox_s2s. Um evento de assinatura é produzido e se chama af_ars_sandbox_s2s.
  • Um evento não é produzido para nenhuma notificação de servidor para a qual o conector SDK não registrou primeiro a transação original.
  • Para iOS, certifique-se de que, em Notificações do servidor da loja de aplicativos, na conexão da loja de aplicativos, o ponto final da AppsFlyer esteja configurado como seu URL do servidor Sandbox.
    ASSN.png
  • Para Android, os testes realizados por Testadores de Licença resultam em eventos Sandbox mesmo que o ambiente Sandbox no SDK não esteja configurado.

Testar receita de IAP e assinatura

Para testar receita de IAP e assinatura:

  1. Diga aos seus desenvolvedores para seguirem as instruções do Android , iOS Unity  para configurar o ambiente Sandbox no SDK Connector.
  2. Faça uma compra de teste. As transações realizadas pelo Testador de Licença no Google Play e pelo TestFlight no iOS também são compatíveis.
    Observação: qualquer produto de assinatura pode ser testado apenas uma vez em cada dispositivo de teste. Em outras palavras, você não pode registrar várias compras de teste da mesma assinatura no mesmo dispositivo, pois elas não serão registradas.
  3. Verifique se o evento é exibido no painel Atividade da AppsFlyer. Um evento IAP é chamado af_purchase_sandbox_sdk. Um evento de assinatura é chamado af_ars_sandbox_sdk.Esses eventos incluem:
    • Uma receita com valor 0 (para não distorcer os relatórios reais da AppsFlyer).
    • Um parâmetro af_sandbox_revenue que inclui o valor da receita do produto comprado para que você se certifique de que a receita correta seja relatada.
  4. Se você estiver testando um produto por assinatura, dê algum tempo para que a AppsFlyer receba uma notificação do servidor. Geralmente isso ocorre alguns minutos após a compra inicial. 
  5. Verifique se um evento é exibido no painel Atividade da AppsFlyer. Uma compra de assinatura auto-renovável é chamada af_ars_sandbox_s2s. O evento inclui:
    • Uma receita com valor 0 (para não distorcer os relatórios reais da AppsFlyer).
    • Um parâmetro af_sandbox_revenue que inclui o valor da receita do produto comprado para que você se certifique de que a receita correta seja relatada.

Etapa 6: Lance a versão do aplicativo com o conector do SDK

Antes de seu desenvolvedor lançar a nova versão do aplicativo com o conector do SDK de compra integrado, certifique-se de que:

  • Os eventos in-app que você deseja capturar como um IAP ou assinatura não são bloqueados por uma das regras de validação que você configurou na AppsFlyer.
  • Seu desenvolvedor deve ter sinalizadores de área restrita marcados como falsos.
  • Para iOS, certifique-se de que, em Notificações do servidor da loja de aplicativos, na conexão da loja de aplicativos, o ponto final da AppsFlyer esteja configurado como seu URL do servidor Sandbox.
    ASSN.png

Referência

Eventos e parâmetros relacionados a IAP

As seções seguintes mostram os eventos relacionados a IAP que a AppsFlyer mede, e os parâmetros que são registrados para cada evento. Consulte o dicionário de parâmetros do evento para obter uma explicação dos parâmetros incluídos.

Todos os eventos gerados:

  • São considerados eventos S2S.
  • São acessíveis em relatórios de dados brutos (como eventos in-app orgânicos ou não orgânicos).
  • Podem ser enviados por postbacks para parceiros.
  • Podem ser usados no SKAN Conversion Studio.

Observação: dependendo da plataforma do dispositivo do usuário, alguns parâmetros nem sempre são preenchidos para um evento in-app.

Compra (af_purchase)

Descrição

Registrado quando um usuário faz uma 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)

Descrição

Registrado quando um usuário cancela uma 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 pendente (af_purchase_pending)

Descrição

Registrado quando um usuário faz uma compra, mas o pagamento ainda não foi processado.

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)

Descrição

Registrado quando uma compra é reembolsada.

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 (incluído no evento quando a receita é maior que zero)
  • 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 teste (af_purchase_sandbox_sdk)

Descrição

Registrado ao testar uma compra registrada por SDK em ambiente de área restrita.

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 teste (af_purchase_sandbox_s2s)

Descrição

Registrado ao testar uma compra relatada por S2S em um ambiente sandbox.

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 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. Consulte o dicionário de parâmetros do evento para obter uma explicação dos parâmetros incluídos.

Todos os eventos gerados:

  • São considerados eventos S2S.
  • São acessíveis em relatórios de dados brutos (como eventos in-app orgânicos ou não orgânicos).
  • Podem ser enviados por postbacks para parceiros.
  • Podem ser usados no SKAN Conversion Studio.

Observação: dependendo da plataforma do dispositivo do usuário, alguns parâmetros nem sempre são preenchidos para um evento in-app.

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_canceled)

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. Isso acontece após o cancelamento da renovação automática e a expiração do período de avaliação. 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_reason

Conversão do teste (af_ars_trial_converted)

Descrição

Registrado quando uma renovação com preço total começa, 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
  • event_revenue_usd
  • af_revenue (incluído no evento apenas quando a receita for maior que zero.) 
  • 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

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
  • event_revenue_usd
  • event_revenue (incluído no evento quando a receita é maior que zero)
  • 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

Assinatura cancelada (af_ars_subscription_canceled)

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
  • event_revenue (incluído no evento quando a receita do evento é maior que zero)
  • store_commission
  • af_net_revenue
  • af_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 renovação automática ou a expiração do período de cobrança. 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_reason

Assinatura reembolsada (af_ars_subscription_refunded)

Descrição

Registrado quando um reembolso é emitido para um assinante.

Observação:

  • Este evento geralmente é 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_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 (incluído no evento quando a receita é maior que zero)
  • 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

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
  • event_revenue_usd
  • event_revenue (incluído no evento quando a receita é maior que zero)
  • store_commission
  • af_net_revenue
  • af_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
  • event_revenue_usd
  • event_revenue (incluído no evento quando a receita é maior que zero)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Assinante existente (af_ars_existing_subscriber)

Descrição

Registrado quando o conector do SDK é notificado sobre um assinante no meio de um ciclo de cobrança, antes de receber uma notificação de acompanhamento do servidor que faz a transição do assinante para outro estágio relevante do ciclo de vida. Esse evento geralmente é gerado durante o período de integração e adoção do conector do 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 teste (af_ars_sandbox_sdk)

Descrição

Registrado ao testar uma compra registrada por SDK em ambiente de área restrita.

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 teste (af_ars_sandbox_s2s)

Descrição

Registrado ao testar uma compra relatada por S2S em um ambiente sandbox.

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

Dicionário de parâmetros

Os parâmetros para IAP e eventos de assinatura são exibidos em relatórios de dados brutos como suas próprias colunas ou preenchidos como parte do valor do evento.

Os parâmetros que possuem suas próprias colunas são:

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

Consulte o dicionário de campos de dados para obter mais detalhes sobre esses parâmetros.

A tabela a seguir descreve os parâmetros de dados brutos disponíveis em eventos ARS e VIAP.

Parâmetro Observações Produto
af_cancelation_date_ms Data do cancelamento IAP
af_reason
  • Em eventos relacionados a cancelamento ou churn: o motivo pelo qual um usuário cancelou ou deu churn. Valores possíveis:
    • iOS:
      • cancel_intent
      • billing_issue
      • declined_price_increase
      • product_unavailable
    • Android:
      • Eu não uso este serviço o suficiente
      • Problemas técnicos
      • Motivos relacionados com os custos
      • Encontrei um aplicativo melhor
      • Outros
  • Em eventos de retomada de assinatura, o motivo pelo qual um usuário retomou sua assinatura. Valores possíveis:
    • Android:
      • pausou e retomou
      • renovação automática desativada e ativada
  • Em eventos relacionados a reembolso: o motivo pelo qual o usuário recebeu um reembolso. Valores possíveis:
    • iOS:
      • 1: problema com seu aplicativo
      • 0: outro motivo
  • IAP
  • Assinatura
af_expires_date_ms

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

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.

Assinatura

af_discount_id

O ID da oferta apresentada ao usuário durante a compra inicial. O ID é preenchido apenas quando há um código de desconto.

  • IAP
  • Assinatura
af_discount_type

O tipo de desconto resgatado pelo usuário. Valores possíveis:

  • iOS
    • introdutório
    • assinatura
  • Android
    • preço inicial
    • one_time_code
    • vanity_code
Assinatura
af_original_transaction_id
  • O ID original da transação
  • Somente iOS
  • IAP
  • Assinatura
af_order_id
  • O ID do pedido para a transação
  • Somente Android
  • IAP
  • Assinatura
af_purchase_token
  • O token de compra para a transação
  • Somente Android
  • IAP
  • Assinatura
af_transaction_id
  • A identificação da transação
  • Somente iOS
  • IAP
  • Assinatura
af_purchase_state

Valores possíveis:

  • Comprado
  • Cancelado
  • Pendente

IAP 

af_original_transaction_id
  • O ID original da transação
  • Somente iOS
  • IAP
  • Assinatura
af_refunded_transaction_ids
  • Um conjunto de todos os IDs de transação reembolsados
  • Somente iOS
  • IAP
  • Assinatura
af_product_id

O ID do produto de assinatura

  • IAP
  • Assinatura
af_purchase_date_ms

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

  • IAP
  • Assinatura
af_store

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

  • IAP
  • Assinatura
af_environment

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

  • IAP
  • Assinatura
af_period_type
  • Tipo de período da assinatura ou avaliação.
  • Valores possíveis:
    • Avaliação
    • introdução
    • Normal

Assinatura

store_commission
  • A porcentagem calculada de comissão que a loja recebe do produto comprado.
  • Exibido como uma casa decimal.
  • Exemplo: 30
  • IAP
  • Assinatura
af_net_revenue

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

  • IAP
  • Assinatura
af_net_revenue_factors
  • Uma matriz representando todas as razões fatorizadas que produzem o montante reportado de af_net_revenue.
  • Valor de exemplo: store_commission
  • IAP
  • Assinatura

af_net_revenue_tax_name

  • Nome que aparece na fatura do cliente que descreve o tipo específico de imposto. 
  • Exemplo: Vendas, IVA, GST
  • IAP
  • Assinatura

af_net_revenue_tax_rate

  • Número com até 4 casas decimais representando o percentual do imposto cobrado.
  • Exemplo: 7.25
  • IAP
  • Assinatura

af_net_revenue_tax_exclusive

  • Parâmetro booleano, verdadeiro ou falso.
  • False significa que o imposto está incluído na receita geral.
  • True significa que o imposto é adicionado à receita declarada geral. Por exemplo, nos EUA ou no Canadá, onde o preço da etiqueta não inclui o imposto sobre vendas.
  • IAP
  • Assinatura

af_net_revenue_country

  • Código de país ISO de duas letras para o qual o imposto é aplicado.
  • Exemplo: GB
  • IAP
  • Assinatura

af_net_revenue_subdivision

  • Para alguns países, pode haver um estado/subdivisão adicional. Isso é tratado de acordo com os códigos de subdivisão ISO 3166-2 .
  • Inclui o código do país e o código da subdivisão.
  • Exemplo: EUA-CA
  • IAP
  • Assinatura

af_net_revenue_postal_code

  • String de letras e/ou números
  • Exemplo: L4J8E3
  • IAP
  • Assinatura
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.
Assinatura

True Revenue

True Revenue é uma camada de lógica de negócios criada para atender à solução de receita de assinatura e compra no aplicativo da AppsFlyer. Ela calcula automaticamente o valor da receita líquida para cada transação recebida em tempo real e o inclui em relatórios. A True Revenue considera os seguintes fatores no cálculo da receita bruta para líquida: 

  • Comissão da loja:
    • É calculada e relatada automaticamente. Nenhuma ação da sua parte é necessária.
    • Para compras, a comissão da loja é de 30%.
    • Para as assinaturas, a comissão é calculada automaticamente por assinante, levando em consideração o tempo de vida do assinante, (App Store: começando com 30% de comissão e reduzindo para 15% após um ano, Play Store: 15% de comissão).
    • Parâmetros de receita líquida relacionados estão disponíveis em relatórios de dados brutos.
  • Imposto: o imposto é informado por padrão para qualquer transação medida pelo ROI360 usando a configuração de taxa de imposto padrão. A configuração pode ser editada usando a API fiscal dedicada.

Ao visualizar a receita real em relatórios, os parâmetros a seguir contêm os dados da receita líquida. Consulte o dicionário de parâmetros para saber mais detalhes.

Parâmetro Fator de receita líquida

store_commission

Comissão da loja

af_net_revenue_tax_name

Imposto

af_net_revenue_tax_rate

Imposto

af_net_revenue_tax_exclusive

Imposto

af_net_revenue_postal_code

Imposto

af_net_revenue_country

Imposto

af_net_revenue_subdivision

Imposto
af_net_revenue
  • Comissão da loja
  • Imposto
af_net_revenue_factors
  • Comissão da loja
  • Imposto

Especificações e limitações

Especificação Produto Observações
Gravar a instalação e anonimizar os dados
  • IAP
  • Receita de assinatura
Não suportado
Bibliotecas de faturamento Google V6
  • IAP
  • Receita de assinatura
Não suportado
Novas assinaturas

Receita de assinatura

Registrado apenas por meio do SDK de compra da AppsFlyer
Alteração de preço

Receita de assinatura

Se a receita da assinatura não receber uma notificação originada no SDK com o preço do novo produto, a receita de assinaturas continua a informar o preço do produto anterior como receita. Assim que o novo preço do produto for recebido do SDK de compra, o novo preço será registrado.
Receita bruta
  • IAP
  • Receita de assinatura
Suportado
Receita líquida
  • IAP
  • Receita de assinatura
Compatível apenas com dados brutos
Imposto

Receita de assinatura

Suportado
Comissão de loja de receita líquida
  • IAP
  • Receita de assinatura
  • Para iOS, os 15% para assinantes com mais de 1 ano: compatível apenas com dados brutos 
  • Programas para pequenas empresas: não compatível
Reembolsos IAP Podem ser relatados até 180 dias após a compra original.
Desduplicação
  • IAP
  • Receita de assinatura
Compatível com transações relatadas até 180 dias após a data do evento.
Modo restrito do SDK
  • IAP
  • Receita de assinatura
As assinaturas ROI360 e VIAP são compatíveis no modo estrito do SDK.
Moeda
  • IAP
  • Receita de assinatura
A receita é relatada na moeda original (usando o parâmetro event_revenue) e em USD (usando o parâmetro event_revenue_usd parameter).