Resumo: configure a solução de mensuração de receita de compras in-app e assinaturas no ROI360 da AppsFlyer.
Sobre a mensuração de receita de compras in-app e assinaturas no ROI360
Saiba mais sobre a solução de mensuração de receita de compras in-app e assinaturas do ROI360 da AppsFlyer, que valida e mensura automaticamente a receita de compras in-app e assinaturas auto-renováveis para fornecer uma visão completa dos ciclos de vida dos seus clientes e mensurações precisas de ROAS.
Configuração
Normalmente, a configuração envolve várias pessoas, incluindo profissionais de marketing, desenvolvedores de aplicativos e talvez um gerente de produto ou projeto.
Os passos necessários para configurar a solução de mensuração de receita de compras in-app e assinaturas incluem:
- Configurar a integração com o Google Play
- Configurar a integração com a App Store do iOS
- Integrar o purchase SDK connector
- Testar a mensuração de receita de compras in-app e assinaturas
- Lançar a versão do aplicativo com o SDK connector
Detalhes sobre cada passo estão nas seções abaixo.
Passo 1: Configurar a integração com o Google Play
Antes de começar:
- Configurar a mensuração de receita de compras in-app e assinaturas consiste em etapas realizadas no Google Cloud Platform, Google Play Console e na interface da AppsFlyer. Recomendamos que você mantenha as abas de todos os 3 abertas durante a configuração.
- A configuração na interface 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
Pré-requisitos: Acesso ao Google Play Console e ao Google Cloud Project.
Para vincular sua Google Play Developer Account ao seu Google Cloud Project
- No Google Play Console, acesse sua Google Play Developer Account.
- Vincule a conta ao seu Google Cloud Project. Para mais instruções, veja esse artigo de ajuda do Google.
- Ative a Google Play Developer API. Para mais instruções, veja esse artigo de ajuda do Google.
1.2. Configure sua Service Account no Google Cloud Platform
Pré-requisitos: Acesso à Google Cloud Platform.
Para configurar sua service account:
- Crie ou encontre a Service Account:
- Na Google Cloud Platform, vá para a seção Service Accounts e clique em Create Service Account.
- Insira os detalhes da service account.
- Copie o endereço de e-mail.
- Clique em create and continue.
- Em Grant this service account access to the project , selecione a função Pub/sub.
-
Clique em Continue > Done.
- Na Google Cloud Platform, vá para a seção Service Accounts e clique em Create Service Account.
- Baixe a Service Account Private Key:
- Na Google Cloud Platform, vá para Service accounts, encontre a conta desejada (a que você acabou de criar) e clique no ícone More actions.
- Clique em Manage keys.
- Clique em Add key > Create new key.
- No popup Create private key, em Key type, selecione JSON e clique em Create.
- Clique em Create. O arquivo private key JSON é baixado.
- Salve o arquivo JSON, que será enviado para a AppsFlyer mais tarde. Atenção! Você deve salvar a chave; ela não pode ser recuperada depois. Se você não salvá-la, terá que criar uma nova chave.
1.3. Envie a Service Account Private Key para a AppsFlyer
Pré-requisitos: Acesso de administrador à AppsFlyer.
Para enviar a Service Account Private Key para a AppsFlyer:
1.4. Defina permissões de acesso à API no Google Play Console.
Pré-requisitos: Acesso ao Google Play Console.
Atençã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 mensagens de erro em etapas posteriores.
Para definir permissões de acesso à API no Google Play Console:
- No Google Play Console, vá para Users and permissions, encontre a conta de serviço que você criou e clique em Invite new users.
- Digite o endereço de e-mail que você copiou ao configurar sua conta de serviço na etapa 1.2.1.3.
- Na aba Permissions, vá para a seção Account permissions e selecione ambos:
- Clique Invite user.
- Na janela de confirmação, clique em Send invite.
1.5 [Recomendado] Envie notificações do Google Play diretamente para a AppsFlyer
Para receber dados de receita de compras in-app e assinaturas do Google Play, selecione entre as seguintes opções:
- (Recomendado) O Google Play envia as notificações diretamente para a AppsFlyer. Com essa opção, nenhuma cópia de notificação pode ser encaminhada para seu endpoint. Se você quiser selecionar essa opção, siga as instruções nesta etapa.
- O Google Play envia as notificações para você primeiro, que são então encaminhadas para a AppsFlyer. Se você escolher essa opção, pule para a próxima etapa.
Pré-requisitos: Acesso ao Google Play Console e à interface da AppsFlyer.
Para enviar notificações do Google Play diretamente à AppsFlyer:
- Na AppsFlyer, no menu lateral, vá para Configurações > Configurações de receita, selecione seu aplicativo e na aba Compras e assinaturas, selecione Permitir que o tópico da AppsFlyer receba mensagens RTDN diretamente do Google.
- Copie o tópico da AppsFlyer para a área de transferência.
- Em Google Play Console > Home, selecione para visualizar seu aplicativo. O painel é aberto.
- Vá para Monetize with Play > Monetization setup e, em Google Play Billing, certifique-se de selecionar Enable real-time notification.
- No campo Topic name, cole o endereço do tópico da AppsFlyer.
- Para Notification content, selecione Subscriptions, voided purchases, and all one-time products.
- Clique em Save changes.
Pode levar um tempo (às vezes até 24 horas) para que essa alteração tenha algum efeito. Por isso, é importante esperar antes de testar.
1.6 [Opcional] Encaminhe notificações do Google Play para a AppsFlyer
Atenção: Essa etapa somente é necessária se você não optar por seguir o método recomendado de envio de dados de receita de compras in-app e assinaturas via notificações diretas enviadas pelo Google Play à AppsFlyer. Se você completou as etapas para o método recomendado, para criar um tópico onde a AppsFlyer recebe diretamente as notificações RTDN do Google Play, pule essa etapa.
Se você quiser configurar a AppsFlyer como um assinante do seu tópico PUB/SUB existente, continue com as instruções abaixo.
Pré-requisitos: Acesso ao Google Cloud Platform e à interface da AppsFlyer.
Para encaminhar notificações do Google Play para a AppsFlyer:
- No AppsFlyer, no menu lateral, vá para Configurações > Configurações de receita; selecione seu aplicativo e na aba Compras e assinaturas, selecione Encaminhar mensagens de tópico RTDN para a AppsFlyer.
- Copie a URL do endpoint para a área de transferência.
- Na plataforma do Google Cloud, em seu projeto, pesquise Pub/Sub.
- Em Pub/Sub, vá para a seção Topics e verifique se você tem um tópico de pub/sub dedicado para assinaturas.
- Em Pub/Sub vá para Subscriptions e clique em Create subscription.
- Digite o Subscription ID.
- Selecione o tópico relevante do pub/sub no menu suspenso.
- Para Delivery type, selecione Push.
- Cole a URL do endpoint que você copiou da AppsFlyer.
- Para Expiry period, selecione Never expire.
- Clique em Create.
- Vá para a seção Subscriptions e clique no nome do tópico que você deseja.
- Copie o nome do tópico para a área de transferência.
- No Google Play Console, vá para Monetize with Play > Monetization setup e, na seção Google Play Billing, no campo Topic name, cole o nome do tópico que você copiou na etapa anterior.
- Para Notification content, selecione Subscriptions, voided purchases, and all one-time products.
- Clique em Save changes.
Pode levar um tempo (às vezes até 24 horas) para que essa alteração tenha algum efeito. Por isso, é importante esperar antes de testar.
1.7. Validar a chave e selecionar os tipos de mensuração de receita na AppsFlyer.
Para selecionar os tipos de mensuração de receita:
- Na AppsFlyer, no menu lateral, vá para Configurações > Configurações de receita > Compras e assinaturas, e clique em Validar chave.
Atenção:- após definir as credenciais e permissões da conta de serviço, pode levar até 24 horas para que você possa usá-las. Isso pode fazer com que você receba mensagens de erro ao tentar validar a chave ou realizar um teste de validação.
- Para contornar esse problema, no Google Play Console, vá para qualquer aplicativo, acesse Monetize > Products > Subscriptions/In-app products, e faça qualquer mudança. Por exemplo, edite a descrição do seu produto e salve-a. Isso deve atualizar instantaneamente as credenciais e permissões da conta. Feito isso, você pode desfazer as alterações.
- Ative um ou ambos:
- [Opcional] Selecione Permitir que a AppsFlyer desduplique transações que já foram relatadas. Isso garante que nenhuma transação duplicada seja registrada.
- [Opcional] Marque Permitir que a AppsFlyer verifique automaticamente as transações pendentes, adiadas ou reembolsadas em meu nome. Isso permite que a AppsFlyer registre corretamente todas as transações.
- Clique em Salvar.
Pode levar um tempo (às vezes até 24 horas) para que essa alteração tenha algum efeito. Por isso, é importante esperar antes de testar.
Passo 2: Configurar a integração com a App Store do iOS
Antes de começar:
- Para configurar a receita de compras in-app e assinaturas, você deve seguir as etapas realizadas no App Store Connect e na interface da AppsFlyer. Mantenha as abas do App Store Connect e da AppsFlyer abertas durante a configuração.
- A configuração na interface da AppsFlyer requer permissões de administrador.
- Seu aplicativo iOS requer o uso do StoreKit v1, que fornece a estrutura para lidar com compras in-app e assinaturas.
Siga as instruções nas abas abaixo para configurar as notificações da App Store.
2.1 Atualizar as credenciais da App Store para validação de recibos do ROI360
Obtenha as seguintes credenciais do App Store Connect e insira-as na página de Configurações de receita dentro da plataforma AppsFlyer.
- In-App Purchase key
- Key ID
- Issuer ID
Antes de começar:
- Para configurar as credenciais, você deve realizar ações tanto no App Store Connect quanto na AppsFlyer. Durante a configuração, mantenha as abas da App Store Connect e da AppsFlyer abertas.
- Você precisa de permissões de administrador para configurar chaves na AppsFlyer.
Para definir as credenciais do iOS:
-
Na App Store Connect, vá para Users and Access
- Vá para Users and Access > Integrations e, na lista Keys, selecione In-App Purchase.
- Clique + para gerar uma nova In-App Purchase key.
- Digite um nome para sua chave de API.
- Clique em Generate.
- Clique em Download In-App Purchase Key ao lado da chave que você acabou de gerar para baixá-la. Atenção: você só pode baixar a chave uma vez.
- Na AppsFlyer, no menu lateral, selecione configurações > configurações de receita.
- Selecione seu aplicativo na lista.
- Abra a aba Compras e assinaturas.
- No campo In-App Purchase key, clique no ícone de upload (
) para enviar o arquivo p8.
- Na App Store Connect, copie o Key ID da chave que você acabou de gerar e cole-o na configuração de compras e assinaturas da AppsFlyer, em Key ID.
-
Na App Store Connect, copie o Issuer ID e cole-o na configuração de compras e assinaturas da AppsFlyer em Issuer ID. Atenção: se o Issuer ID não for exibido na parte superior da página, crie uma chave de API da App Store Connect (com qualquer nível de acesso). Depois disso, o Issuer ID aparecerá no topo da página para a In-App Purchase key.
- Nas configurações de compras e assinaturas da AppsFlyer, clique em validar chaves para garantir que as chaves que você inseriu estão corretas. Atenção: a opção de validar chave pode não funcionar se seu aplicativo ainda não estiver publicado na App Store.
2.2 [Recomendado] Enviar notificações da App Store diretamente para a AppsFlyer
A Apple só pode enviar notificações de servidor para um único endpoint, seja para o endpoint da AppsFlyer (recomendado) ou para o seu próprio endpoint (e você então encaminha as notificações para a AppsFlyer).
Se você quiser seguir a opção recomendada, para enviar notificações diretamente para a AppsFlyer, continue com as instruções abaixo.
Se você optar por encaminhar notificações do seu endpoint para a AppsFlyer, pule para a próxima etapa.
Para enviar notificações diretamente para a AppsFlyer:
-
Nas configurações de receita da AppsFlyer, copie o endpoint de notificações de servidor do AppsFlyer para inseri-lo na sua configuração do App Store Connect.
-
Na App Store Connect, em App Information, vá para App Store Server Notifications e, ao lado de Production Server URL, clique em Edit.
- Cole a URL copiada da AppsFlyer, selecione Version 2 Notifications e clique em Save.
-
Na App Store Connect, em App Information, vá paraApp Store Server Notifications e, ao lado de Sandbox Server URL, clique em Edit.
- Cole a URL copiada da AppsFlyer, selecione Version 2 Notifications e clique em Save.
- Se você quiser receber uma cópia das notificações, na AppsFlyer, insira seu endpoint de encaminhamento de notificações e clique em Salvar.
2.3 [Opcional] Encaminhar notificações do seu endpoint para a AppsFlyer
Atenção: essa etapa só é válida caso você não tenha escolhido seguir o método recomendado. Se você completou as etapas para o método recomendado, pule essa etapa.
Se em vez disso, você quiser enviar notificações para seu endpoint e depois encaminhá-las do seu endpoint para a AppsFlyer, continue com as instruções abaixo.
Para encaminhar notificações de servidor do seu endpoint para a AppsFlyer:
-
Na App Store Connect, em App Information, vá para App Store Server Notifications e, ao lado de Production Server URL, clique em Edit.
- Cole sua URL de endpoint, selecione Version 2 Notifications, e clique em Save.
-
Na App Store Connect, em App Information, vá paraApp Store Server Notifications e, ao lado de Sandbox Server URL, clique em Edit.
- Cole sua URL de endpoint, selecione Version 2 Notifications e clique em Save.
- Configure o envio das notificações do servidor da Apple do seu backend para a URL do endpoint de notificações da AppsFlyer. Atenção: as solicitações devem ser enviadas exatamente conforme recebidas da App Store. Veja os requisitos de formato da Apple
2.4 Selecionar tipos de mensuração de receita na AppsFlyer
- Na página de configuração de receita de compras in-app e assinaturas da AppsFlyer, ative uma ou ambas as opções:
-
[Opcional] Marque Permitir que a AppsFlyer desduplique transações que já foram relatadas.
Isso garante que nenhuma transação duplicada seja registrada. - [Opcional] Marque Permitir que a AppsFlyer relate automaticamente receitas negativas para reembolsos de transações. Isso garante que reembolsos, cancelamentos, etc. sejam registrados.
-
[Opcional] Marque Desduplicar receita de compras 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.
Passo 3: Integrar o purchase SDK connector
Para integrar o conector do SDK:
- Diga ao seu desenvolvedor Android para integrar o purchase SDK connector da AppsFlyer e envie o link para as instruções de integração do purchase SDK connector.
Passo 4: Testar a mensuração de receita de compras in-app e assinaturas
É melhor validar as integrações de receita de compras in-app e assinaturas 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 pela AppsFlyer.
Considerações sobre o ambiente Sandbox
No ambiente sandbox:
- Apenas eventos de compra iniciais fazem com que o conector do SDK produza um evento que é registrado pela AppsFlyer. Um evento de compra in-app é chamado de af_purchase_sandbox_sdk. Um evento de assinatura é chamado de af_ars_sandbox_sdk.
- As notificações do servidor só são processadas se o conector SDK registrar primeiro a transação original. Nesse caso, um evento de compra in-app é chamado af_purchase_sandbox_s2s. Um evento de assinatura é chamado 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.
- Eventos de sandbox têm uma receita de 0.
- Para iOS, se o evento af_purchase_sandbox_sdk contiver o parâmetro af_sandbox_revenue com um valor de receita, isso significa que em produção, esse seria um evento regular af_purchase. Se não houver receita, em produção seria um evento af_purchase_free.
- 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.
Teste a receita de compras in-app e assinaturas
Pré-requisitos:
- Para iOS, certifique-se de que, em App Store Server Notifications na App Store connects, o endpoint da AppsFlyer esteja configurado como sua URL do servidor Sandbox.
Para testar a receita de compras e assinaturas no aplicativo:
- Diga aos seus desenvolvedores para seguirem as instruções do Android, iOS e Unity para configurar um ambiente Sandbox no SDK Connector.
- Faça uma compra de teste ou inicie uma assinatura usando o License Tester no Google Play e TestFlight no iOS.
Atenção: Qualquer produto de assinatura pode ser testado apenas uma vez de 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. - Verifique se o evento é exibido no dashboard de Atividade da AppsFlyer. Na AppsFlyer, no menu lateral, vá para Analisar > Atividade e, no gráfico Tendência de atividade, vá para a aba Eventos in-app e selecione o evento que você quer testar. Um evento de compra in-app é chamado de af_purchase_sandbox_sdk. Um evento de assinatura é chamado de 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.
- Faça um evento de reembolso de teste, renovação de assinatura ou cancelamento de assinatura usando o License Tester no Google Play e TestFlight no iOS.
Atenção: se você estiver testando um produto por assinatura, espere até que a AppsFlyer receba uma notificação do servidor. Geralmente isso ocorre alguns minutos após a compra inicial. - Verifique se o evento é exibido no dashboard de Atividade da AppsFlyer. Na AppsFlyer, no menu lateral, vá para Analisar > Atividade e, no gráfico Tendência de atividade, vá para a aba Eventos in-app e selecione o evento que você quer testar. Uma compra de assinatura auto-renovável é chamada de 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.
Passo 5: Lançar a versão do aplicativo com o SDK connector
Com tudo configurado a partir das etapas anteriores, e o purchase SDK connector da AppsFlyer integrado ao seu aplicativo, diga ao seu desenvolvedor para liberar a versão do aplicativo com o SDK connector integrado.
No entanto, antes que o desenvolvedor libere a nova versão do aplicativo, certifique-se de que:
- Os eventos in-app que você deseja capturar como compra-inapp ou assinatura não sejam bloqueados por regras de validação que você configurou na AppsFlyer.
- Seu desenvolvedor deve ter flags de sandbox marcados como false.
-
Para iOS, certifique-se de que, em App Store Server Notifications, na App Store Connect, o endpoint da AppsFlyer esteja configurado como sua Sandbox Server URL.
Uma vez que o aplicativo com o conector do SDK é liberado, eventos de compras in-app e de assinatura serão gerados e disponibilizados em todos os dashboards da AppsFlyer, assim como em relatórios de dados agregados e brutos, incluindo Revenue ETL.
Atenção: Os eventos só serão gerados para usuários que atualizaram para uma versão do aplicativo que inclui o conector do SDK. Como resultado, até a adoção completa da versão atualizada do aplicativo, espera-se uma discrepância entre os dados de receita do aplicativo e os dados da loja.