Como Rastrear Regressão de Etapa no Pipeline CRM
Detecte quando negócios retrocedem no pipeline, sinalize cada regressão no Google Sheets e crie um resumo semanal que seu diretor comercial pode usar.
Este guia mostra como identificar regressão de etapa no Google Sheets usando o histórico de etapas exportado do seu CRM, sinalizar cada movimento retroativo com uma fórmula e resumir tudo em um dashboard que seu diretor comercial pode consultar na reunião de segunda-feira. Quando um negócio regride de Proposta para Descoberta, isso é um sinal que merece atenção - e a maioria dos dashboards de CRM não vai exibir isso automaticamente.
O que você vai precisar
- Uma exportação do histórico de etapas do CRM (HubSpot Pipeline Activity, Salesforce OpportunityFieldHistory ou equivalente) com no mínimo: ID do negócio, nome da etapa, data de mudança de etapa e colunas de rep/responsável
- Google Sheets com essa exportação carregada - realisticamente de 5 mil a 80 mil linhas, dependendo do histórico disponível e da atividade da equipe
- Familiaridade com VLOOKUP, QUERY e ordenação manual de intervalos
- Uma lista definida de etapas do pipeline na ordem correta (se os reps usam cinco nomes diferentes para "Descoberta", resolva isso antes)
Guia passo a passo
Exporte os Dados Corretos do Seu CRM
Os relatórios padrão de negócios do CRM mostram uma linha por negócio, com a etapa atual de cada um. Isso não é útil aqui. O que você precisa é de uma linha por mudança de etapa: um log de histórico mostrando cada vez que um negócio se moveu, em qual direção e quando. São duas exportações bem diferentes, e vale confirmar que você tem a correta antes de construir qualquer coisa.
No HubSpot, isso fica em Relatórios > Vendas > Histórico de Etapa de Negócio. No Salesforce, consulte o objeto OpportunityFieldHistory filtrado por Field = 'StageName'. No Pipedrive, exporte o "Pipeline change log" em Relatórios. Todo CRM grande tem esses dados, mas o caminho para acessá-los varia.
- Baixe como CSV com no mínimo estas colunas: ID do negócio, nome da etapa, data da mudança e responsável pelo negócio
- Inclua o valor do negócio se disponível - uma regressão em um negócio de R$ 500 mil é uma conversa diferente de uma regressão em um negócio de R$ 8 mil
- Exporte pelo menos 6 meses de histórico para análise de tendências; uma única semana não diz quase nada sobre padrões
- Espere de 15 mil a 60 mil linhas para uma equipe com 10 ou mais reps e 6 meses de dados
Pro Tip
Se a exportação trouxer "Etapa de Origem" e "Etapa de Destino" como colunas separadas, use esse formato. Ele elimina dois passos abaixo. Se você só tem a etapa atual por evento, vai calcular a etapa anterior no Passo 4.Audite e Padronize os Nomes das Etapas
Antes de construir qualquer coisa, pivoteie a coluna de etapa e veja todos os valores distintos. É aqui que você descobre que "Demo", "Demonstração de Produto" e "Demo/Apresentação" são a mesma etapa inserida de formas diferentes por reps diferentes, e agora cada fórmula de comparação vai tratá-las como três etapas separadas e perder dois terços das regressões.
Crie uma aba de padronização com duas colunas: "Nome Original" na coluna A e "Nome Canônico" na coluna B. Depois adicione uma coluna de padronização ao lado dos seus dados brutos:
=IFERROR(VLOOKUP(TRIM(C2), Padronizacao!$A:$B, 2, FALSE), C2)- o IFERROR passa adiante qualquer nome que já esteja correto- O TRIM não é opcional; exportações de CRM costumam trazer espaços no início ou no fim que são invisíveis na célula, mas quebram qualquer correspondência exata
- Use
=UNIQUE(C2:C)em uma coluna auxiliar para listar todos os nomes de etapa distintos antes de montar a tabela de padronização - Quando a coluna de padronização estiver correta, copie e use Colar Especial > Somente Valores sobre a coluna de etapa e exclua a coluna auxiliar
Crie uma Tabela de Ordem das Etapas
A regressão de etapa só faz sentido depois que você define numericamente o que significa "avançar". Crie uma nova aba chamada OrdemEtapas com duas colunas: Etapa e Ordem. Liste cada nome canônico de etapa e atribua um número inteiro a cada um. A direção dos números é o que a lógica de regressão vai testar.
| Etapa | Ordem |
|---|---|
| Prospecção | 1 |
| Qualificação | 2 |
| Descoberta | 3 |
| Demo | 4 |
| Proposta | 5 |
| Negociação | 6 |
| Fechado Ganho | 7 |
| Fechado Perdido | 99 |
Fechado Perdido recebe 99, não 8. Atribuir 8 faria com que um negócio migrando de Fechado Perdido de volta para Negociação fosse sinalizado como regressão, quando na verdade é uma reabertura: algo diferente a ser rastreado separadamente.
- Use apenas inteiros, sem decimais, para manter as comparações sem ambiguidade
- Se o seu pipeline tem caminhos paralelos (por exemplo, "Avaliação Técnica" pode ocorrer junto com "Proposta"), atribua o mesmo número de ordem às etapas paralelas e decida em equipe se o movimento entre trilhas conta como regressão
- Adicione uma coluna "Status" em OrdemEtapas (Ativo/Inativo) para lidar com etapas renomeadas durante o ano sem perder dados históricos
- Mantenha essa tabela atualizada quando o administrador do CRM adicionar novas etapas - uma etapa ausente produz um erro de VLOOKUP capturado pelo IFERROR, o que indica que algo precisa de correção
Pro Tip
Bloqueie a aba OrdemEtapas para que um rep ou administrador do CRM não edite os números acidentalmente durante a análise. Proteja em Dados > Proteger planilhas e intervalos.Ordene os Dados e Vincule os Números de Ordem das Etapas
Este é o ponto central de toda a análise. Você precisa das linhas ordenadas por ID_Negocio de forma crescente e, em seguida, por Data_Mudanca de forma crescente. Isso coloca os eventos de cada negócio em ordem cronológica, o que permite comparar cada linha com a anterior dentro do mesmo negócio. Se a ordenação estiver errada, todos os sinalizadores de regressão serão inválidos.
No Google Sheets: Dados > Classificar intervalo > Classificar por ID_Negocio (A-Z), depois adicione um segundo nível de classificação para Data_Mudanca (A-Z). Com 40 mil linhas, isso leva cerca de 10 a 15 segundos.
Agora adicione três colunas auxiliares aos seus dados:
Coluna G (Ordem_Etapa) - ordem numérica da etapa de cada linha:
=IFERROR(VLOOKUP(C2, OrdemEtapas!$A:$B, 2, FALSE), 0)
Coluna H (Nome_Etapa_Anterior) - o nome da etapa da linha acima, mas somente quando pertence ao mesmo negócio:
=IF(A2=A1, C1, "")
Coluna I (Ordem_Etapa_Anterior) - mesma verificação de negócio para a ordem numérica:
=IF(A2=A1, G1, "")
- Arraste as três fórmulas da linha 2 até a última linha de dados
- As linhas onde ID_Negocio muda (primeiro evento de um novo negócio) retornam vazio em H e I, o que está correto: não há etapa anterior para comparar
- Qualquer linha onde G retorna 0 indica um nome de etapa não reconhecido; filtre os zeros e verifique a tabela de padronização do Passo 2
Pro Tip
Com 50 mil linhas ou mais, essas colunas auxiliares levam de 20 a 40 segundos para recalcular a cada edição. Após a configuração inicial, copie as colunas G a I e use Colar Especial > Somente Valores para fixá-las. Repita o processo a cada semana ao carregar novos dados.Sinalize os Eventos de Regressão
Com os dados ordenados e os números de ordem das etapas prontos, o sinalizador de regressão se resume a duas comparações: existe uma etapa anterior para comparar (ou seja, a coluna I não está vazia) e o número de ordem atual é menor do que o anterior? Um número de ordem menor significa que o negócio regrediu.
Coluna J (Sinal_Regressao):
=IF(I2="", "Primeira Entrada", IF(G2<I2, "Regressão", IF(G2=I2, "Sem Mudança", "Avanço")))
Coluna K (Caminho_Regressao) - a transição exata de etapa, legível para a tabela do diretor:
=IF(J2="Regressão", H2&" → "&C2, "")
Isso gera entradas como "Proposta → Descoberta" e "Negociação → Demo": as transições que seu VP de Vendas vai querer analisar em detalhes.
- Filtre a coluna J por "Regressão" e confira de 10 a 15 linhas antes de confiar no resultado em escala
- As entradas "Sem Mudança" aparecem quando um negócio foi salvo no CRM sem alteração de etapa (comum quando reps editam outros campos como data de fechamento ou valor); são ruído, não regressões
- Fique atento a negócios que passam pela mesma etapa duas vezes: isso aparece como "Avanço", depois "Sem Mudança", depois "Regressão" em sequência, o que geralmente indica um problema de entrada de dados que vale sinalizar ao administrador do CRM
- As linhas de "Primeira Entrada" são automaticamente excluídas da análise, pois a coluna I está vazia; não é necessário IFERROR nas consultas seguintes
Monte Resumos de Regressão com QUERY
Com cada regressão sinalizada na coluna J, as agregações que importam para o relatório de operações são: quais reps têm mais regressões, quais transições de etapa ocorrem com mais frequência e se a tendência mensal está melhorando ou piorando. O QUERY processa mais de 80 mil linhas em menos de 2 segundos para essas agregações: não use COUNTIFS aqui, ele trava acima de 30 mil linhas em uma planilha com outros cálculos rodando.
Crie uma aba chamada Resumo_Regressao. Comece com estas três consultas:
Regressões por rep:
=QUERY(Dados!A:K, "SELECT E, COUNT(A) WHERE J='Regressão' GROUP BY E ORDER BY COUNT(A) DESC LABEL E 'Rep', COUNT(A) 'Total de Regressões'", 1)
Caminhos de regressão mais comuns:
=QUERY(Dados!A:K, "SELECT K, COUNT(A) WHERE J='Regressão' GROUP BY K ORDER BY COUNT(A) DESC LIMIT 10 LABEL K 'Caminho de Regressão', COUNT(A) 'Total'", 1)
Tendência mensal:
=QUERY(Dados!A:K, "SELECT YEAR(D), MONTH(D), COUNT(A) WHERE J='Regressão' GROUP BY YEAR(D), MONTH(D) ORDER BY YEAR(D) DESC, MONTH(D) DESC LABEL YEAR(D) 'Ano', MONTH(D) 'Mês', COUNT(A) 'Regressões'", 1)
- Substitua
Dados!A:Kpelo nome real da sua aba - As funções de data do QUERY, YEAR() e MONTH(), exigem que a coluna de data seja um valor de data real do Google Sheets, não uma string de texto; se as datas foram importadas como texto (comum em exportações do Salesforce), use
=DATEVALUE(D2)para convertê-las antes de executar essas consultas - Adicione uma coluna de taxa de regressão ao lado da tabela por rep: regressões divididas pelo total de eventos de etapa por rep conta uma história mais honesta do que a contagem bruta (um rep com 200 negócios e 20 regressões tem a mesma taxa de 10% que um com 30 negócios e 3 regressões, mas as contagens brutas parecem bem diferentes)
- Se a coluna Data_Mudanca tiver formatos mistos como "2024-01-15", "15/01/24" e "15 jan 2024" coexistindo (o que acontece quando exportações vêm de múltiplas regiões do CRM), é necessária uma etapa de normalização de datas antes que o QUERY consiga filtrar por data
Pro Tip
Formatos de data mistos são um problema de limpeza à parte. Uma combinação de IFERROR, DATEVALUE e REGEXEXTRACT consegue analisar a maioria dos formatos, mas reserve de 30 a 60 minutos na primeira vez que você se deparar com uma coluna muito variada.Monte a Aba de Dashboard para o Diretor
A aba de resumo é para análise. A aba de dashboard é o que aparece projetado na reunião de segunda-feira. Mantenha-a com 3 painéis: números principais, uma tabela por rep e os principais caminhos de regressão. Qualquer coisa além disso transforma a planilha em algo que seu diretor para de consultar.
Um dashboard que se atualiza automaticamente exige que as fórmulas QUERY busquem dados ao vivo, então não fixe os valores aqui como fez com as colunas auxiliares no Passo 4.
- Painel 1 (números principais): Duas contagens QUERY com limites de data: uma para esta semana e outra para a semana passada, mais uma célula de subtração simples mostrando o delta. Formatação condicional vermelha se as regressões aumentaram, verde se diminuíram.
- Painel 2 (tabela por rep no trimestre atual): Use a consulta QUERY por rep do Passo 6, filtrada a partir da data de início do trimestre atual usando
DATE(YEAR(TODAY()), MONTH(TODAY())-MOD(MONTH(TODAY())-1, 3), 1)como limite inferior. Limite a 5 linhas comLIMIT 5para que a tabela tenha tamanho fixo. - Painel 3 (principais caminhos de regressão): A consulta de caminhos limitada ao top 5, com uma observação sobre qual caminho representa qual percentual do total de regressões. Essa coluna de percentual é aritmética manual, mas vale incluir.
- Adicione uma célula "Atualizado em" com
=TEXT(NOW(), "DD/MM/AAAA")para que qualquer pessoa que abrir o arquivo saiba se os dados são recentes ou têm duas semanas de defasagem - Bloqueie a aba do dashboard contra edições em Dados > Proteger planilhas e intervalos: uma tecla pressionada por acidente na célula errada vai quebrar uma fórmula QUERY e não vai ser óbvio o porquê até alguém notar que os números pararam de atualizar
Conclusão
O que você construiu é uma camada de detecção de regressão que funciona com qualquer exportação de CRM: mapeamento de ordem de etapas, comparação linha a linha protegida por verificações de ID do negócio e agregações QUERY que escalam além de 80 mil linhas sem desacelerar. O dashboard do diretor oferece uma resposta concreta para "a saúde do pipeline está melhorando?" em vez de um encolher de ombros e uma promessa de investigar.
A próxima pergunta que a maioria das equipes faz depois de rodar isso por um mês é se é possível automatizar a atualização semanal dos dados. É aí que o processo manual chega ao seu limite: a lógica de detecção é sólida, mas alguém ainda precisa baixar, limpar, ordenar e recarregar a exportação toda semana. Escolha um plano do ModelMonkey - ele funciona tanto no Google Sheets quanto no Excel.
Perguntas frequentes
Qual é a diferença entre regressão de etapa e reabertura de negócio?
Regressão de etapa é um negócio movendo-se para trás dentro de um pipeline ativo (de Proposta para Descoberta). Reabertura é um negócio marcado como Fechado Perdido que volta para qualquer etapa ativa. Atribuir 99 a Fechado Perdido na tabela OrdemEtapas impede que reaberturas apareçam como regressões, pois qualquer etapa ativa (ordens de 1 a 6) é numericamente menor que 99, e a fórmula interpreta isso como "Avanço" em vez de "Regressão". Rastreie reaberturas separadamente filtrando as linhas onde Nome_Etapa_Anterior é igual a "Fechado Perdido".
Meu CRM só exporta a etapa atual do negócio, não o histórico de etapas. Ainda consigo detectar regressão?
Sim, mas você vai precisar de 2 capturas feitas em momentos diferentes. Exporte a lista completa de negócios esta semana e novamente na próxima. Use VLOOKUP para cruzar a etapa da semana passada com a exportação desta semana pelo ID do negócio. Onde a ordem da etapa atual for menor do que a da captura anterior, há uma regressão. O trade-off é que você só vai capturar regressões ocorridas entre as duas datas de exportação: múltiplos movimentos retroativos na mesma semana se condensam em um único sinal.
Como a fórmula lida com negócios que pulam etapas para frente e depois regridem?
A comparação linha a linha do Passo 5 lida com isso corretamente porque compara cada evento com o evento imediatamente anterior do mesmo negócio, não com o primeiro evento. Um negócio que passa por Prospecção, depois Demo, depois Proposta e volta para Descoberta vai sinalizar o último movimento como regressão de Proposta (ordem 5) para Descoberta (ordem 3), o que é exatamente correto.
Por que QUERY em vez de COUNTIFS para as tabelas de resumo?
Com 5 mil linhas, COUNTIFS funciona bem. Acima de 30 mil linhas, COUNTIFS com múltiplos critérios avalia cada combinação de células a cada recálculo. Em uma planilha com outras fórmulas rodando, isso empurra os tempos de recálculo para mais de 60 segundos, às vezes muito mais. O QUERY usa um mecanismo similar ao SQL que agrega de forma significativamente mais rápida: uma tabela por rep com 80 mil linhas roda em menos de 3 segundos. Se a sua planilha começar a travar, o COUNTIFS costuma ser o culpado.
O que acontece quando o administrador do CRM adiciona uma nova etapa ao pipeline?
Adicione a nova etapa e seu número de ordem na tabela OrdemEtapas imediatamente. As linhas históricas com esse nome de etapa antes da adição retornarão 0 no VLOOKUP (capturado pelo IFERROR e exibido como sinal). Assim que você adicionar a linha em OrdemEtapas, esses zeros se resolvem corretamente no próximo recálculo. O caso mais difícil é quando uma etapa é inserida entre duas já existentes: por exemplo, adicionar "Avaliação Técnica" entre Demo (ordem 4) e Proposta (ordem 5), pois todas as etapas acima precisam ser renumeradas para manter a ordem relativa intacta.