ANÁLISE DE CHURN

Como descobrir o que prevê o churn com os seus próprios dados de clientes

Que atributos e eventos de clientes recolher, como fazer análises de coortes e de risco relativo e como evitar falsos positivos e números inventados pela IA.

Publicado a 9 min de leitura

Todos os negócios de subscrição têm uma teoria sobre a razão por que os clientes saem. “Os clientes vindos de anúncios pagos saem mais.” “As equipas que não convidam um segundo utilizador nunca ficam.” Algumas destas teorias estão certas. Muitas não, e a única forma de o saber é verificá-las com os seus próprios dados.

Este guia trata do que recolher, de como comparar grupos com análises de coortes e de risco relativo, de como evitar as armadilhas estatísticas que fazem o ruído aleatório parecer conhecimento e de como usar a IA para explicar os resultados sem a deixar inventar números.

Passo 1: decidir o que “churn” significa

Antes de qualquer análise, escreva uma definição. Por exemplo:

  • Perdido: subscrição cancelada ou terminada por falta de pagamento, e não reativada em 30 dias.
  • Janela de observação: os primeiros 90 dias do cliente, ou um período de calendário.
  • Quem conta: apenas clientes pagantes, ou também os períodos experimentais (analise-os à parte; a conversão do período experimental é outra pergunta).

Separe o churn voluntário (o cliente cancelou) do churn involuntário (um pagamento falhou e nunca foi recuperado). Têm causas diferentes. Um cartão pré-pago e um utilizador desiludido não são o mesmo problema. O nosso artigo sobre churn involuntário trata do lado dos pagamentos.

Passo 2: recolher os atributos e eventos certos

Quer dados que existiam antes de o cliente sair e sobre os quais pudesse agir. Um bom conjunto inicial:

Campo Tipo Valores de exemplo Porque conta
signup_date Atributo 2026-06-12 Coortes; sazonalidade
signup_source Atributo google_ads, facebook_ads, organic, referral Qualidade do canal, não apenas volume
plan Atributo starter, team Adequação entre plano e necessidade
seats Atributo 1, 5, 20 As contas com uma só licença comportam-se muitas vezes de forma diferente
company_size / country / industry Atributo 11-50, DE, agency Adequação do segmento
trial_length_days Atributo 7, 14 Se períodos experimentais mais longos ajudam
coupon_at_signup Atributo LAUNCH50, nenhum Clientes adquiridos com desconto
payment_method Atributo card_credit, card_prepaid, sepa, link Risco de churn involuntário
activated_at Evento / data 2026-06-14 Chegou ao primeiro momento de valor?
last_active_at Atributo 2026-09-30 Utilização recente
key_feature_used Contagem de eventos reports_created: 4 Profundidade de utilização
support_tickets Contagem 0, 3 Atrito
nps_score Atributo 0 a 10 Satisfação declarada

Algumas notas para fazer isto bem:

  • Defina a ativação de forma concreta. “Criou um primeiro projeto e convidou um colega nos primeiros 7 dias” é mensurável. “Obteve valor” não é.
  • Registe os valores num momento fixo. Se comparar o last_active_at dos clientes perdidos com o dos ativos, o grupo perdido vai parecer inativo porque saiu. Isso não lhe diz nada. Use um ponto fixo, como a atividade nos primeiros 14 dias.
  • Mantenha categorias largas. Vinte origens de inscrição com três clientes cada não podem ser analisadas. Agrupe-as (pesquisa paga, redes sociais pagas, orgânico, referência, outro).
  • Dados do método de pagamento a partir do Stripe. Os objetos de cartão no Stripe incluem um campo funding (crédito, débito, pré-pago ou desconhecido) (referência da API do Stripe), que pode usar sem tratar números de cartão.
  • Tenha em conta a privacidade. Recolha o que precisa, documente porquê e siga a sua política de privacidade e a lei local.

Passo 3: construir coortes e comparar taxas de churn

A análise útil mais simples compara as taxas de churn entre grupos que diferem num atributo.

Pegue em todos os que se inscreveram num período suficientemente longo para o churn se manifestar (por exemplo, inscritos no 1.º trimestre, observados durante 90 dias). Para cada valor de um atributo, conte os clientes e os clientes perdidos.

Exemplo ilustrativo (não são dados reais):

Origem da inscrição Clientes Perdidos em 90 dias Taxa de churn
Orgânico 400 60 15%
Redes sociais pagas 200 50 25%
Referência 100 10 10%

Risco relativo

O risco relativo (RR) compara a taxa de churn de cada grupo com uma referência. Usando o orgânico como referência:

  • Redes sociais pagas: 25% / 15% = RR 1,67. Os clientes vindos de redes sociais pagas saíram cerca de 1,7 vezes mais.
  • Referência: 10% / 15% = RR 0,67. Os clientes vindos de referências saíram cerca de um terço menos.

O risco relativo é fácil de explicar a qualquer pessoa na empresa, o que é a sua principal vantagem face a modelos mais complexos. Veja risco relativo para a definição formal.

Passo 4: verificar se a diferença é real

Uma diferença numa tabela não é automaticamente uma conclusão. Com grupos pequenos, o acaso por si só produz grandes diferenças.

Tamanho da amostra

Olhe para as contagens, não apenas para as percentagens. Se as redes sociais pagas tivessem 20 clientes e 5 tivessem saído, a taxa de 25% poderia facilmente ser 10% ou 45% com mais um mês de inscrições. Uma regra prática: desconfie de qualquer grupo com menos de algumas dezenas de clientes ou menos de cerca de dez eventos de churn, e diga-o no relatório.

Intervalos de confiança

Reporte um intervalo, não apenas um número. Um intervalo de confiança a 95% para um risco relativo dá-lhe o intervalo de valores compatíveis com os seus dados. Com a tabela ilustrativa acima, o intervalo para as redes sociais pagas fica em cerca de 1,2 a 2,3, por isso o risco mais alto é bastante claro. Se fosse 0,8 a 3,4, não saberia se as redes sociais pagas são de facto piores. O método habitual usa o logaritmo do risco relativo; a maioria das bibliotecas de estatística calcula-o por si.

Uma versão rápida em Python, para uma comparação:

import math

def relative_risk(a_churn, a_total, b_churn, b_total, z=1.96):
    rr = (a_churn / a_total) / (b_churn / b_total)
    se = math.sqrt(1/a_churn - 1/a_total + 1/b_churn - 1/b_total)
    low = math.exp(math.log(rr) - z * se)
    high = math.exp(math.log(rr) + z * se)
    return rr, low, high

# Paid social vs organic, illustrative numbers from the table above
print(relative_risk(50, 200, 60, 400))  # about (1.67, 1.19, 2.33)

Comparações múltiplas

É a armadilha em que caem a maioria dos dashboards. Se testar 40 atributos com um nível de significância de 5%, deve esperar que cerca de 2 pareçam “significativos” por puro acaso, mesmo que nenhum conte. Quanto mais divide, mais falsas conclusões obtém.

Formas de lidar com isto:

  • Decida primeiro uma lista curta de hipóteses, e trate tudo o resto como exploração.
  • Ajuste ao número de testes. A correção de Bonferroni (dividir o limiar de significância pelo número de testes) é simples e estrita. O procedimento de Benjamini-Hochberg controla a taxa de falsas descobertas e é menos conservador.
  • Confirme com dados novos. Encontre um padrão nas inscrições do 1.º trimestre e verifique depois se se mantém no 2.º. Uma conclusão que se repete merece ação.

Passo 5: correlação, não causalidade

Mesmo um risco relativo sólido e confirmado diz-lhe que um atributo anda a par do churn. Não lhe diz que o atributo causa o churn.

Formas habituais de isto correr mal:

  • Variáveis de confusão. Os clientes vindos de redes sociais pagas podem sair mais porque são sobretudo freelancers a trabalhar sozinhos, e esses saem mais seja qual for o canal. Verifique a relação dentro dos segmentos (redes sociais pagas vs orgânico, apenas entre contas com uma só licença).
  • Causalidade inversa. Os clientes que abrem muitos pedidos de suporte podem sair mais, ou os clientes que já não estão a obter valor abrem mais pedidos.
  • Seleção. Os clientes que escolheram o plano anual já estão mais comprometidos. A faturação anual pode não causar a retenção; os clientes comprometidos podem escolher a faturação anual.

A forma de estabelecer uma causa é uma experiência: mudar uma coisa para um grupo aleatório e comparar. Por exemplo, se a ativação parece prever a retenção, teste uma alteração no onboarding que aumente a ativação para uma metade aleatória das novas inscrições e veja se a retenção acompanha. O nosso guia sobre testar ofertas de retenção trata da mesma lógica de grupo de controlo para as ofertas do fluxo de cancelamento.

Passo 6: transformar conclusões em ações

Conclusão (exemplo) Ação possível Como verificar
As inscrições vindas de redes sociais pagas saem mais Mudar a segmentação ou a landing page; comparar coortes A coorte de redes sociais pagas do trimestre seguinte
As contas com uma só licença saem mais Sugerir convidar um colega durante o onboarding Teste A/B da sugestão
Quem não se ativou até ao dia 7 sai mais Lembretes aos dias 3 e 5, ajuda na configuração Teste A/B dos lembretes
Os cartões pré-pagos falham mais nas renovações Pedir um método de pagamento de reserva, lembretes mais cedo Comparar a taxa de falha nas renovações
Um NPS baixo precede o cancelamento Dar seguimento às notas baixas numa semana Comparar o churn com e sem seguimento

Usar a IA para explicar os resultados, em segurança

Os modelos de linguagem são bons a transformar uma tabela de resultados num resumo claro e numa lista de ideias. São maus em aritmética e produzem números plausíveis que estão errados. A divisão segura é:

  1. Calcule todos os números em código. As taxas de churn, os riscos relativos, os intervalos, os tamanhos de amostra e os p-values ajustados vêm de um script ou de uma consulta SQL determinísticos.
  2. Dê ao modelo apenas os resultados calculados, como dados estruturados, e peça-lhe que os explique.
  3. Proíba números novos. Instrua o modelo a usar apenas os valores presentes nos dados de entrada e verifique a saída: cada número no resumo deve corresponder a um número nos resultados.
  4. Exija ressalvas. Peça-lhe que assinale amostras pequenas, intervalos largos e que as conclusões são correlações.
  5. Mantenha uma pessoa no circuito para tudo o que mude os preços, a segmentação ou o produto.

Uma estrutura de prompt curta que funciona:

You are given churn analysis results as JSON. Each row has an attribute,
a value, customers, churned, relative_risk, ci_low, ci_high and
adjusted_p. Explain the three strongest findings for a non-technical
founder. Use only numbers that appear in the JSON. Mention sample size
for each finding. Say these are correlations, not causes. Suggest one
experiment per finding.

Checklist

  • Churn definido por escrito, voluntário e involuntário separados.
  • Atributos registados num momento fixo.
  • Categorias agrupadas para que cada uma tenha clientes suficientes.
  • Risco relativo com intervalos de confiança para cada comparação.
  • Tamanhos de amostra mostrados ao lado de cada resultado.
  • Correção para comparações múltiplas, ou resultados confirmados com dados novos.
  • Variáveis de confusão verificadas dentro dos segmentos.
  • Os resumos da IA usam apenas números calculados.
  • As principais conclusões transformadas em experiências.

Como o NoChurn ajuda

Com os dados próprios do NoChurn, envia qualquer atributo de cliente ou evento de utilização através da API, em lotes, por CSV ou com o SDK. O NoChurn calcula as estatísticas em código (risco relativo, tamanho da amostra e confiança) para encontrar os atributos que andam a par do churn e usa depois a IA para explicar os resultados e sugerir ações, indicadas como correlação, não causa. Os mesmos dados, com o método de pagamento e a origem da inscrição, alimentam o score de churn dado a cada cliente na inscrição. Veja a referência da API e os preços.

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