FLUXOS DE CANCELAMENTOAPP STORE

Como reduzir cancelamentos numa app iOS sem esconder o botão de cancelar

O que a Apple permite às apps iOS quando alguém quer cancelar: a folha de gestão, mensagens de retenção, promotional offers, mudanças de plano e o que evitar.

Publicado a 6 min de leitura

No iOS, o botão de cancelar não é seu. Os clientes cancelam uma subscrição da App Store nas definições da sua Apple Account, e é a Apple que executa o cancelamento. Não pode bloqueá-lo, atrasá-lo nem pôr um labirinto à frente. O que pode fazer é ajudar o cliente que está prestes a sair a encontrar uma opção melhor, na sua app antes de chegar à página da Apple e, para alguns developers, no próprio ecrã de confirmação da Apple.

Este guia cobre as ferramentas que a Apple documenta para isso e um fluxo de cancelamento que as respeita. Baseia-se na documentação da Apple sobre showManageSubscriptions(in:), a Retention Messaging API, as promotional offers, a referência de notificationType e as App Review Guidelines (todas consultadas em novembro de 2026).

O que a Apple controla

  • Onde acontece o cancelamento. A referência de notificações da Apple descreve o cancelamento como o cliente a cancelar “a partir da página de definições de Subscrições da App Store”. O seu servidor recebe então DID_CHANGE_RENEWAL_STATUS com o subtype AUTO_RENEW_DISABLED.
  • O que significa cancelar. A subscrição deixa de renovar. O cliente mantém o acesso até ao fim do período pago, e mais tarde recebe EXPIRED com o subtype VOLUNTARY.
  • A folha na sua app. O showManageSubscriptions(in:) do StoreKit (ou manageSubscriptionsSheet em SwiftUI) abre o mesmo ecrã de gestão que os clientes veem nas definições da conta, com as opções para ver, fazer upgrade, fazer downgrade ou cancelar. A Apple recomenda adicionar à sua app uma opção para gerir subscrições.

E as regras: a App Review Guideline 5.6 (Developer Code of Conduct) diz que as apps nunca devem “enganar” os clientes nem “recorrer a quaisquer outras práticas manipuladoras dentro ou fora da app”, e um comportamento manipulador repetido pode levar à sua exclusão do Developer Program. A Guideline 3.1.2(a) acrescenta que as apps de subscrição que “tentem enganar os utilizadores” ou usem práticas de bait-and-switch serão removidas. Um fluxo de cancelamento que esconde a saída é exatamente o que estas regras visam, para lá de qualquer lei de defesa do consumidor nos seus mercados.

Ferramenta 1: o seu próprio ecrã “Gerir subscrição”

Antes de abrir a folha da Apple, a sua app pode mostrar o seu próprio ecrã. É aqui que acontece a maior parte do trabalho de retenção, e controla-o por completo, desde que não atrapalhe.

Um padrão que respeita as regras:

  1. Um ecrã, uma pergunta. “Qual é o principal motivo para querer cancelar?” com quatro a seis respostas e um campo de texto livre.
  2. Uma resposta relevante para esse motivo. Demasiado caro: um plano mais barato ou um desconto. Não estou a usar: um lembrete do que perderia, ou um downgrade. Falta uma funcionalidade: uma forma de lho dizer, e uma resposta honesta sobre os planos.
  3. Um botão “Continuar para cancelar” visível em todas as etapas, que abre showManageSubscriptions(in:). Com o mesmo tamanho e peso que o botão da oferta. Sem confirmação extra, sem contagem decrescente.
  4. Pergunta opcional. O cliente pode ir diretamente para a folha da Apple sem responder.

A Apple não lhe envia o motivo do cancelamento; os campos de notificação que documenta para AUTO_RENEW_DISABLED não incluem nenhum. A resposta à sua própria pergunta é o único motivo que vai obter, por isso guarde-a com o cliente.

Ferramenta 2: ofertas que a Apple consegue realmente executar

No iOS, qualquer desconto ou mudança de plano tem de passar pelo StoreKit. Duas opções servem num fluxo de cancelamento.

Promotional offers

O guia da Apple diz que as promotional offers podem ser eficazes para “reter os subscritores atuais”. Cria-as no App Store Connect (até 10 ativas por subscrição), o seu servidor assina cada oferta e o cliente resgata-a na sua app. A Apple sugere até usar a notificação DID_CHANGE_RENEWAL_STATUS para decidir a elegibilidade, para que um cliente que acabou de desativar a renovação veja uma oferta da próxima vez que abrir a app.

Mudanças de plano dentro do grupo

Um downgrade é muitas vezes uma resposta melhor do que um desconto. Dentro de um grupo de subscrições, a referência de notificações da Apple diz que os downgrades produzem efeito na data de renovação seguinte e não afetam o plano atual, enquanto os upgrades produzem efeito de imediato, com reembolso proporcional do período não usado. Recebe DID_CHANGE_RENEWAL_PREF com o subtype DOWNGRADE ou UPGRADE. Um nível mais barato, ou uma mudança de mensal para um período mais longo, mantém o cliente a pagar alguma coisa.

Se quiser oferecer uma pausa, verifique o que a Apple suporta atualmente para o seu tipo de produto. A documentação usada para este guia descreve downgrades, promotional offers e mensagens de retenção, não uma opção de pausa.

Ferramenta 3: mensagens de retenção no próprio ecrã da Apple

A Retention Messaging API da Apple permite-lhe escolher uma mensagem mostrada depois de o cliente tocar em Cancel Subscription numa página de detalhes da subscrição. A Apple mostra então uma página Confirm Cancellation onde o cliente ainda pode cancelar, manter a subscrição ou, consoante a mensagem, resgatar uma oferta ou mudar de plano.

O que a Apple documenta:

  • É uma API em pré-lançamento. Tem de pedir acesso.
  • Quatro tipos de mensagem: texto (com marcadores opcionais), texto com imagem, uma mensagem de mudança de plano que sugere outra subscrição, e uma mensagem de promotional offer.
  • Mensagens predefinidas por produto e por idioma, só em texto. Sem uma mensagem predefinida para um idioma, nada é mostrado nesse idioma.
  • Mensagens em tempo real. O servidor da Apple chama o seu endpoint quando um subscritor ativo vê uma página de detalhes da subscrição com um botão Cancel, e escolhe uma mensagem pré-configurada, incluindo mensagens de oferta e de mudança de plano. As predefinidas servem de recurso se o seu servidor não responder. Antes de ir para produção, o seu endpoint tem de passar o teste de desempenho da Apple.
  • Dispositivos: iOS e iPadOS 15.1 ou posterior, visionOS 1 ou posterior, macOS 14 ou posterior.
  • A Apple pede-lhe que não carregue conteúdo enganador ou inexato.

É o mais próximo que existe no iOS de uma etapa de retenção dentro do próprio fluxo de cancelamento, e a Apple mantém o botão Cancel Subscription nessa página.

Depois de o cliente desativar a renovação

Uma renovação desativada ainda não é um cliente perdido. Entre AUTO_RENEW_DISABLED e EXPIRED, a subscrição continua ativa.

  • Não corte o acesso antes do tempo. O cliente pagou pelo período.
  • Mostre um banner discreto na app com a data de fim e uma forma de voltar a ativar a renovação (de novo a folha da Apple). Se o fizer, recebe DID_CHANGE_RENEWAL_STATUS com AUTO_RENEW_ENABLED.
  • Use o tempo para uma mensagem relevante, com base no motivo indicado. Uma, não uma sequência.
  • Prepare o pós-expiração. Quando a subscrição expirar, entram em cena as win-back offers da Apple.

Medir o que funciona

Acompanhe, por motivo e por oferta:

  1. Quantos clientes abriram o seu ecrã de gestão.
  2. Quantos aceitaram uma oferta ou mudaram de plano.
  3. Quantos continuaram para a folha da Apple.
  4. Quantos desativaram a renovação (a partir de AUTO_RENEW_DISABLED), e quantos a voltaram a ativar.
  5. A retenção duas ou três renovações depois, para quem aceitou uma oferta.

O último é o que mais conta. Um desconto que adia um cancelamento por um mês não é o mesmo que um cliente que fica.

O que evitar

  • Esconder o link para as definições de subscrição da Apple, ou enterrá-lo debaixo de vários ecrãs.
  • Fazer o botão da oferta grande e o link de cancelar pequeno e cinzento.
  • Dizer aos clientes que têm de contactar o suporte para cancelar.
  • Mostrar ofertas que o cliente não consegue realmente resgatar, ou prometer condições que o StoreKit não vai aplicar.
  • Fazer a mesma pergunta ao mesmo cliente sempre que abre o ecrã.

Para os princípios gerais por trás de fluxos de cancelamento justos, veja as nossas boas práticas de fluxos de cancelamento e a visão geral das regras de click to cancel.

Fazer isto com o NoChurn

O fluxo de cancelamento do NoChurn está disponível como API headless, por isso a sua app iOS pode mostrar o seu próprio ecrã nativo: motivos, uma oferta (desconto, mudança de plano ou pausa onde a sua faturação o suportar) e um botão de cancelar sempre visível que abre as definições de subscrição da Apple. O cancelamento em si fica com a Apple. O NoChurn regista o motivo, lê as notificações AUTO_RENEW_DISABLED e EXPIRED para ver o que realmente aconteceu, e usa ambos para o score de churn e para a reconquista. A configuração está em NoChurn + App Store.

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