FLUXOS DE CANCELAMENTOGOOGLE PLAY

O inquérito de cancelamento do Google Play e como reduzir os cancelamentos no Android

Como ler o inquérito de cancelamento do Google Play pela API, o que o Play permite oferecer (pausa, mudança de plano, restauro) e um fluxo justo na app.

Publicado a 6 min de leitura

Os subscritores Android normalmente cancelam na Google Play Store, não na sua app. É a Google que gere esse fluxo e, quando o utilizador o conclui, o Play pode perguntar-lhe porque está a sair. A resposta não se perde: fica guardada na subscrição e pode lê-la a partir da Google Play Developer API. Combinada com a pausa, as mudanças de plano e o restauro, dá-lhe mais com que trabalhar do que muitos developers imaginam.

Este guia mostra onde fica a resposta ao inquérito, o que a Google lhe permite oferecer antes e depois de um cancelamento e como construir um fluxo na app que mantenha o botão de cancelar à distância de um toque. Baseia-se na documentação da Google: o ciclo de vida das subscrições, subscrições: deep links e gestão de clientes, a referência das RTDN e a referência da Google Play Developer API para purchases.subscriptionsv2 (todos consultados em novembro de 2026).

De onde vêm os cancelamentos

O guia do ciclo de vida da Google lista três origens:

  • O utilizador, a partir do centro de subscrições do Play.
  • Automaticamente, quando uma subscrição não recupera depois da suspensão da conta (account hold). O mesmo guia diz que os utilizadores que não aceitam um aumento de preço com consentimento antes da renovação também perdem a subscrição automaticamente.
  • O comerciante, através de purchases.subscriptionsv2.cancel.

Em todos os casos, uma subscrição normal com renovação automática envia uma notificação SUBSCRIPTION_CANCELED, o estado passa a SUBSCRIPTION_STATE_CANCELED e expiryTime contém a data em que o acesso deve terminar. O utilizador mantém o acesso até lá. A Google avisa que retirar o acesso a conteúdo a que o utilizador ainda tem direito viola a sua política de subscrições.

Ler o inquérito de cancelamento

Depois de uma notificação SUBSCRIPTION_CANCELED, chame purchases.subscriptionsv2.get com o purchase token. A resposta tem um canceledStateContext com um de quatro ramos:

Ramo Significado
userInitiatedCancellation O utilizador cancelou
systemInitiatedCancellation A Google cancelou, por exemplo por causa de um problema de faturação
developerInitiatedCancellation O comerciante cancelou
replacementCancellation A subscrição foi substituída por uma nova

Para os cancelamentos feitos pelo utilizador, userInitiatedCancellation contém cancelTime e um cancelSurveyResult. A referência da API descreve este último como “informação fornecida pelo utilizador quando conclui o fluxo de cancelamento da subscrição (inquérito sobre o motivo do cancelamento).” O campo reason assume um destes valores:

Valor Significado
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE Pouca utilização da subscrição
CANCEL_SURVEY_REASON_TECHNICAL_ISSUES Problemas técnicos ao usar a app
CANCEL_SURVEY_REASON_COST_RELATED Questões relacionadas com o custo
CANCEL_SURVEY_REASON_FOUND_BETTER_APP O utilizador encontrou uma app melhor
CANCEL_SURVEY_REASON_OTHERS Outros motivos, com o texto livre do utilizador em reasonUserInput
CANCEL_SURVEY_REASON_UNSPECIFIED Não especificado

Três notas práticas:

  1. Leia-o no momento do cancelamento. O canceledStateContext só está presente enquanto a subscrição está cancelada ou expirada, e o purchase token deixa de funcionar 60 dias depois da expiração. Se o utilizador restaurar a subscrição, a Google diz que todos os campos de cancelamento são apagados.
  2. Conte com lacunas. Não pode partir do princípio de que todos os utilizadores responderam. Preveja motivos não especificados.
  3. Guarde o texto livre como dados não fiáveis. É o que o utilizador escreveu, seja o que for.

Cinco motivos fixos são pouco detalhados, mas correspondem bem a ações: custo, utilização, qualidade, concorrência.

O que a Google lhe permite oferecer em alternativa

Pausa

O guia do ciclo de vida da Google diz que todas as subscrições têm a pausa ativada por defeito (pode desativá-la na Play Console). Os utilizadores escolhem a duração da pausa com base no período de faturação:

Período de faturação Durações da pausa
Semanal 1, 2, 3 ou 4 semanas
Mensal, trimestral, semestral, anual 1, 2 ou 3 meses

A Google nota que as durações podem mudar. A pausa começa no fim do período atual; durante a pausa o utilizador não tem acesso e não paga; no fim, a Google tenta renovar. O seu backend vê SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED quando o utilizador a agenda, SUBSCRIPTION_PAUSED quando começa e SUBSCRIPTION_RECOVERED quando é retomada (ou SUBSCRIPTION_ON_HOLD se o pagamento falhar na retoma). A Google sugere oferecer uma forma de retomar manualmente, através de um deep link para o Google Play.

Para um utilizador que cancela porque “não vai usar durante algum tempo”, uma pausa é muitas vezes a resposta honesta.

Mudanças de plano

Pode permitir que os utilizadores mudem de nível ou de período de faturação na sua app, com uma oferta se quiser (o exemplo da Google é um desconto no primeiro ano ao passar de mensal para anual). O replacement mode decide quando a mudança se aplica e como é creditado o tempo não usado. DEFERRED, por exemplo, aplica a mudança na próxima renovação. Um nível mais barato é uma resposta natural a COST_RELATED.

Restauro

Uma subscrição cancelada que ainda não expirou pode ser restaurada pelo utilizador a partir do centro de subscrições da Play Store com o botão Resubscribe. A Google exige que todos os developers o suportem. Recebe SUBSCRIPTION_RESTARTED e a subscrição renova como antes.

Construir um fluxo de cancelamento na app

O guia de subscrições da Google diz que a sua app deve incluir um link num ecrã de definições para os utilizadores gerirem as suas subscrições, e que “também pode oferecer uma opção para os utilizadores cancelarem na sua app ou no seu site.” Isso dá-lhe dois desenhos possíveis.

Opção A: o seu ecrã, depois o Play

  1. “Gerir subscrição” nas definições abre o seu ecrã.
  2. Uma pergunta: porque quer cancelar? Use motivos próximos dos cinco da Google, para que os dados batam certo.
  3. Uma resposta relevante por motivo: pausa para pouca utilização, plano mais barato para o custo, uma correção ou um contacto para problemas técnicos.
  4. Um botão Continuar para cancelar, sempre visível, que abre o deep link para a página da subscrição no Play: https://play.google.com/store/account/subscriptions?sku= o ID do seu produto &package= o nome do seu pacote. A Google diz que os utilizadores podem gerir aí os métodos de pagamento e aceder a “cancelamento, nova subscrição e pausa.”

Opção B: cancelar na sua app

O seu backend pode cancelar através de purchases.subscriptionsv2.cancel. O cancellationType importa:

  • USER_REQUESTED_STOP_RENEWALS: cancelamento pedido pelo utilizador; só para a próxima renovação e a subscrição pode ser restaurada.
  • DEVELOPER_REQUESTED_STOP_PAYMENTS: pedido pelo developer; não pode ser restaurada.

Para um utilizador que pediu para cancelar, use USER_REQUESTED_STOP_RENEWALS, para que mantenha o acesso até ao fim do período e ainda possa mudar de ideias na Play Store. Com este desenho, o botão “Cancelar” do seu fluxo cancela mesmo, num toque, que é a forma mais limpa de respeitar as expectativas de cancelamento num clique. A Google descreve a resposta ao inquérito como vinda do próprio fluxo de cancelamento do Play, por isso, para os cancelamentos feitos através da sua app, conte com o motivo que recolhe por si.

Em qualquer caso: o mesmo peso visual para “Cancelar” e para a oferta, sem ciclos de confirmação, sem “contacte o suporte para cancelar.”

Depois de um cancelamento

Entre SUBSCRIPTION_CANCELED e SUBSCRIPTION_EXPIRED, o utilizador ainda é subscritor.

  • A Google sugere mostrar uma mensagem na sua app com a data de expiração.
  • A Google nota também que pode detetar os cancelamentos em tempo real e “enviar-lhes notificações push ou mensagens na app a pedir que voltem a subscrever.”
  • Adapte a mensagem ao motivo do inquérito, e envie uma, não cinco.
  • Depois da expiração, passe à reconquista: veja como reconquistar subscritores que saíram no Google Play.

Medir

Por mês e por motivo: cancelamentos (a partir de SUBSCRIPTION_CANCELED com um contexto iniciado pelo utilizador), restauros (SUBSCRIPTION_RESTARTED), pausas agendadas, mudanças de plano e a parte que expirou de facto. Compare os motivos entre versões da app: um salto em TECHNICAL_ISSUES depois de uma versão é um relatório de bug.

Fazer isto com o NoChurn

O NoChurn lê a resposta ao inquérito de cancelamento do Google Play a cada cancelamento e coloca-a na cronologia do cliente, ao lado dos motivos recolhidos no seu próprio fluxo. O seu fluxo de cancelamento está disponível como API headless para a sua app Android: motivos, uma oferta (desconto, pausa ou mudança de plano) e um botão de cancelar sempre visível que abre a página da subscrição no Google Play. A Google mantém os pagamentos, as novas tentativas e o seu próprio botão de cancelar. Os motivos acionam depois os emails de reconquista e a pontuação de churn. Veja NoChurn + Google Play.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Pare de perder receita.

  • Grátis até $300 de MRR
  • Sem cartão
  • Pronto em 10 minutos
  • Nunca uma comissão sobre o que recuperamos