Churn alto = crescimento impossível. Clientes entram pela porta, saem pela janela.
Matemática do churn:
- Churn 8%/mês → Cliente fica média 12 meses → LTV = R$ 3.588 (R$ 299 × 12)
- Churn 3%/mês → Cliente fica média 33 meses → LTV = R$ 9.867 (R$ 299 × 33)
- Diferença: +175% LTV apenas reduzindo churn
Este artigo mostra framework completo de Customer Success para SaaS B2B.
O que é Customer Success (CS)
Diferença de suporte:
- Suporte: Reativo, resolve tickets, tático
- CS: Proativo, garante sucesso do cliente, estratégico
Objetivo: Cliente atinge resultado desejado usando seu produto.
Resultados:
- Menor churn
- Maior expansão (upsell, cross-sell)
- NPS alto (promotores trazem novos clientes)
Health Score (prediz churn)
Health Score = métrica de 0-100 que indica saúde do cliente.
Fatores (pesos sugeridos):
// lib/health-score.ts
export function calculateHealthScore(customer: Customer) {
const scores = {
// Uso do produto (40%)
usage: calculateUsageScore(customer),
// Engajamento (25%)
engagement: calculateEngagementScore(customer),
// Valor percebido (20%)
value: calculateValueScore(customer),
// Relacionamento (15%)
relationship: calculateRelationshipScore(customer)
}
return (
scores.usage * 0.4 +
scores.engagement * 0.25 +
scores.value * 0.2 +
scores.relationship * 0.15
)
}
function calculateUsageScore(customer: Customer): number {
const {
activeUsers,
totalSeats,
daysActive,
lastLoginDays
} = customer
let score = 100
// % de seats ativos
const seatUtilization = activeUsers / totalSeats
if (seatUtilization < 0.3) score -= 40 // Menos de 30%
else if (seatUtilization < 0.5) score -= 20
else if (seatUtilization < 0.7) score -= 10
// Frequência de uso
if (lastLoginDays > 14) score -= 30 // Não usa há 2 semanas
else if (lastLoginDays > 7) score -= 15
// Features críticas usadas
const criticalFeaturesUsed = customer.features.filter(f => f.critical && f.used).length
const totalCriticalFeatures = customer.features.filter(f => f.critical).length
const featureAdoption = criticalFeaturesUsed / totalCriticalFeatures
if (featureAdoption < 0.5) score -= 20
return Math.max(0, score)
}
function calculateEngagementScore(customer: Customer): number {
let score = 100
// NPS recente
if (customer.nps < 0) score -= 40 // Detrator
else if (customer.nps <= 6) score -= 20 // Passivo
// Participa de webinars/treinamentos
if (customer.webinarsAttended === 0) score -= 15
// Abre tickets de suporte
if (customer.supportTicketsLast30Days > 5) score -= 20 // Muitos problemas
return Math.max(0, score)
}
function calculateValueScore(customer: Customer): number {
let score = 100
// ROI reportado
if (!customer.roiReported) score -= 30
else if (customer.roiReported < 2) score -= 20 // ROI baixo
// Crescimento de uso
const growthRate = (customer.metricsThisMonth - customer.metricsLastMonth) / customer.metricsLastMonth
if (growthRate < -0.1) score -= 25 // Decrescendo
return Math.max(0, score)
}
function calculateRelationshipScore(customer: Customer): number {
let score = 100
// Tempo desde última QBR
if (customer.daysSinceLastQBR > 120) score -= 30
// Respondeu última pesquisa
if (!customer.respondedLastSurvey) score -= 20
// Champion identificado (pessoa interna que defende produto)
if (!customer.hasChampion) score -= 25
return Math.max(0, score)
}
Segmentação por health:
- 🟢 Healthy (80-100): Baixo risco, foco em expansão
- 🟡 At Risk (50-79): Médio risco, intervenção preventiva
- 🔴 Critical (0-49): Alto risco de churn, ação urgente
Playbooks de intervenção
Playbook 1: Cliente “At Risk” (Health 50-79)
Trigger: Health score cai abaixo de 80.
Ações (automáticas):
// lib/playbooks/at-risk.ts
export async function handleAtRiskCustomer(customerId: string) {
const customer = await getCustomer(customerId)
// 1. Cria task para CSM (Customer Success Manager)
await createTask({
assignee: customer.csmId,
title: `[At Risk] ${customer.name} - Health: ${customer.healthScore}`,
description: `
Motivos:
- Uso: ${customer.usageScore}/100
- Engajamento: ${customer.engagementScore}/100
- Valor: ${customer.valueScore}/100
Ações sugeridas:
- [ ] Call de check-in (entender dores)
- [ ] Revisar onboarding (features não usadas)
- [ ] Oferecer treinamento personalizado
`,
dueDate: addDays(new Date(), 3) // 3 dias para agir
})
// 2. Email automático para cliente
await sendEmail({
to: customer.email,
subject: 'Como podemos ajudar você a ter mais sucesso?',
template: 'at-risk-check-in',
data: {
name: customer.name,
csmName: customer.csm.name,
calendlyLink: customer.csm.calendlyLink
}
})
// 3. Notifica Slack
await sendSlackMessage({
channel: '#customer-success',
text: `⚠️ Cliente at-risk: ${customer.name} (Health: ${customer.healthScore})`
})
}
Template de email:
Olá {{name}},
Notei que o uso do Conecta Prof diminuiu nas últimas semanas.
Tudo bem por aí? Há algo que possamos melhorar?
Gostaria de marcar 15min de call para entender como está sendo
sua experiência e se podemos ajudar de alguma forma.
[Agendar call com {{csmName}}]({{calendlyLink}})
Ou responda este email com suas dúvidas!
Abraço,
{{csmName}}
Customer Success Manager
Playbook 2: Cliente “Critical” (Health menor que 50)
Trigger: Health score menor que 50 OU cliente cancela.
Ações urgentes:
export async function handleCriticalCustomer(customerId: string) {
const customer = await getCustomer(customerId)
// 1. Escalação para VP de CS
await createTask({
assignee: VP_CS_ID,
priority: 'URGENT',
title: `[CRITICAL] ${customer.name} - Risco de churn`,
dueDate: new Date() // Hoje
})
// 2. Call de salvamento (save call)
await sendEmail({
to: customer.email,
cc: VP_CS_EMAIL,
subject: 'Podemos conversar?',
body: `
Olá ${customer.name},
Percebemos que vocês não estão usando muito o Conecta Prof.
Antes de tomar qualquer decisão, gostaria de entender:
- O que não está funcionando?
- Como podemos melhorar?
- Há algo que possamos fazer para ajudar?
Pode ser uma call rápida (15min) comigo?
[Link para agendar](...)
Estou comprometido em fazer isso funcionar para vocês.
${VP_CS_NAME}
VP of Customer Success
`
})
// 3. Oferece desconto/crédito (se aplicável)
if (customer.mrr > 5000) {
await createDiscount({
customerId,
amount: 0.3, // 30% off por 3 meses
duration: 3,
reason: 'Retention offer'
})
}
}
Playbook 3: Cliente “Healthy” (Health >80) — Expansão
Objetivo: Upsell ou cross-sell.
export async function handleHealthyCustomer(customerId: string) {
const customer = await getCustomer(customerId)
// Identifica oportunidades de expansão
const opportunities = []
// Oportunidade 1: Seat expansion (usando 90%+ dos seats)
if (customer.activeUsers / customer.totalSeats > 0.9) {
opportunities.push({
type: 'SEAT_EXPANSION',
potential: customer.mrr * 0.5, // +50% seats = +50% MRR
message: 'Cliente usando 90%+ dos seats. Sugerir upgrade.'
})
}
// Oportunidade 2: Plan upgrade (feature limits atingidos)
if (customer.plan === 'PRO' && customer.apiCallsThisMonth > 8000) {
// Limite do Pro é 10K
opportunities.push({
type: 'PLAN_UPGRADE',
potential: customer.mrr * 2, // Pro → Enterprise = 2x MRR
message: 'Próximo do limite de API calls. Sugerir Enterprise.'
})
}
if (opportunities.length > 0) {
await createTask({
assignee: customer.csmId,
title: `[Expansion] ${customer.name} - ${opportunities.length} oportunidades`,
description: opportunities.map(o => `- ${o.type}: ${o.message} (Potencial: +R$ ${o.potential})`).join('\n')
})
}
}
QBR (Quarterly Business Review)
O que é: Reunião trimestral com cliente para revisar resultados.
Agenda (60min):
1. Recap trimestre (10min)
- Objetivos definidos no último QBR
- O que foi alcançado
2. Métricas de uso (15min)
- Usuários ativos (vs trimestre anterior)
- Features mais usadas
- Benchmarks (vs média de clientes similares)
3. Valor gerado (15min)
- ROI calculado (R$ economizados ou ganhos)
- Case studies internos
- Depoimentos de usuários
4. Roadmap (10min)
- Features lançadas recentemente
- O que vem nos próximos 3 meses
- Como isso ajuda o cliente
5. Próximos passos (10min)
- Objetivos para próximo trimestre
- Recursos necessários (treinamento, suporte)
- Oportunidades de expansão
Template de QBR deck (slides):
# QBR - [Nome Cliente] - Q4 2026
## Slide 1: Agenda
- Recap Q3
- Métricas de uso
- Valor gerado
- Roadmap
- Próximos passos
## Slide 2: Objetivos Q3
✅ Aumentar usuários ativos de 45 para 60 (+33%)
✅ Adotar feature de relatórios
❌ Integrar com Salesforce (adiado para Q1)
## Slide 3: Métricas de uso
- Usuários ativos: 68 (+51% vs Q3)
- Sessions/usuário: 12,3 (vs 8,2 em Q3)
- Features usadas: 8 de 12
- NPS: 42 (promotores: 65%)
## Slide 4: Valor gerado
Economia estimada: R$ 18.000/mês
- Automatização de agendamentos: R$ 12K
- Redução de no-shows: R$ 6K
ROI: 620% (investimento R$ 299/mês, retorno R$ 18K)
## Slide 5: Roadmap Q1 2027
- ✨ Integração Salesforce
- ✨ Relatórios avançados (BI)
- ✨ Mobile app (iOS/Android)
## Slide 6: Próximos passos
Objetivos Q1:
- [ ] 80 usuários ativos (+18%)
- [ ] Integração Salesforce concluída
- [ ] NPS >50
Recursos:
- Treinamento para novos usuários (Janeiro)
- Sessão de setup Salesforce (Fevereiro)
Resultado esperado: Cliente renova + upsell.
Estrutura de time CS
CS para diferentes estágios:
Estágio 1: Menos de 50 clientes (R$ 0-50K MRR)
- Headcount: Founder faz CS
- Custo: R$ 0
- Ferramentas: Spreadsheet + email
Estágio 2: 50-150 clientes (R$ 50-150K MRR)
- Headcount: 1 CSM (tempo parcial)
- Custo: R$ 6-10K/mês
- Ferramentas: HubSpot ou Intercom
- Ratio: 1 CSM para 100 clientes
Estágio 3: 150-500 clientes (R$ 150-500K MRR)
- Headcount: 2 CSMs + 1 CS lead
- Custo: R$ 25-35K/mês
- Ferramentas: ChurnZero ou Vitally
- Segmentação: High-touch (mais de R$ 5K MRR) vs low-touch (menos de R$ 5K)
Estágio 4: 500+ clientes (R$ 500K+ MRR)
- Headcount: Time completo (CSMs + CS Ops + VP)
- Custo: R$ 80-150K/mês
- Ferramentas: Gainsight (enterprise)
Métricas de CS
Primárias (acompanhar mensalmente):
// Dashboard de CS
export const csMetrics = {
// Churn
monthlyChurn: 3.2, // % clientes que cancelam/mês (meta: <5%)
revenueChurn: 2.8, // % MRR perdido (melhor que customer churn se expansão > churn)
// Expansão
expansionMRR: 12500, // MRR de upsells/cross-sells
expansionRate: 8.5, // % clientes que expandem (meta: >10%)
// Net Revenue Retention (NRR)
nrr: 115, // % (>100% = expansão > churn, ideal >110%)
// Engagement
avgHealthScore: 78, // Média de health score (meta: >75)
atRiskCustomers: 12, // Clientes com health <50
// Relacionamento
nps: 45, // Net Promoter Score (meta: >40)
qbrCompletion: 82 // % clientes que fizeram QBR (meta: >80%)
}
Cálculo de NRR (Net Revenue Retention):
NRR = (MRR início mês + Expansão - Churn - Contraction) / MRR início mês × 100
Exemplo:
- MRR início: R$ 100K
- Expansão (upsells): R$ 18K
- Churn (cancelamentos): R$ 5K
- Contraction (downgrades): R$ 2K
NRR = (100K + 18K - 5K - 2K) / 100K × 100 = 111%
✅ NRR >100% = crescimento mesmo sem novos clientes
Ferramentas de CS
1. ChurnZero (R$ 1.200-3K/mês):
- Health scoring automático
- Playbooks (automações)
- In-app messaging
- Dashboards
2. Vitally (R$ 800-2K/mês):
- Similar a ChurnZero
- Melhor UX
- Mais barato
3. Intercom (R$ 600-1.8K/mês):
- Chat + CS em 1
- Product tours
- Email sequences
4. HubSpot (R$ 0-1.2K/mês):
- CRM gratuito
- CS básico
- Bom para começar
Recomendação:
- Menos de R$ 100K MRR: HubSpot (free tier)
- R$ 100-500K: Vitally
- Mais de R$ 500K: ChurnZero ou Gainsight
Case real: Redução de churn 8% → 3%
Perfil: SaaS de gestão para restaurantes (180 clientes, R$ 54K MRR).
Problema (antes de CS estruturado):
- Churn: 8,2%/mês
- NPS: 18 (mais detratores que promotores)
- Motivos de cancelamento: “não vejo valor”, “muito complexo”
Implementação (3 meses):
Mês 1: Health score
- Implementou cálculo de health
- Identificou 42 clientes “at risk”
Mês 2: Playbooks
- Email automático para at-risk
- Call de check-in (20 calls/semana)
- Descobriu: 70% não usavam feature principal (relatórios)
Mês 3: Treinamento + QBRs
- Webinar semanal (feature deep-dive)
- QBRs com top 30 clientes
- Onboarding melhorado (guia feature crítica)
Resultado (6 meses):
| Métrica | Antes | Depois | Variação |
|---|---|---|---|
| Churn | 8,2% | 3,1% | -62% |
| NPS | 18 | 52 | +189% |
| Expansion MRR | R$ 2K | R$ 9,8K | +390% |
| LTV | R$ 3.588 | R$ 9.483 | +164% |
ROI:
- Investimento CS: R$ 18K (CSM 3 meses + ferramentas)
- MRR salvo: R$ 16,5K/mês (62% menos churn)
- Payback: 1 mês
Próximos passos
- Implementar health score (1 semana)
- Criar playbooks básicos (at-risk, critical)
- Contratar CSM (se >100 clientes)
- Setup ferramenta de CS (HubSpot ou Vitally)
- Primeiro round de QBRs (top 20 clientes)
- Medir churn e NRR mensalmente
Lembre-se: Reduzir churn 1% = aumentar LTV 10-30%. Vale mais que adquirir novos clientes (CAC zero).