E a exportação real quebra. Um SUMIF aparentemente correto numa exportação do Salesforce pode virar pipeline ponderado zerado às 6h45 da manhã quando um rep renomeia uma etapa no meio do trimestre ou quando o admin do CRM adiciona uma coluna nova. O resto deste artigo mostra como construir uma estrutura que sobrevive a isso.
Como a Exportação do CRM Chega de Verdade
As exportações do Salesforce e do HubSpot chegam no Sheets parecendo razoavelmente organizadas — até você verificar a coluna de Data de Fechamento. Uma exportação real de 30.000 linhas vai ter "2026-05-01", "01/05/2026", "1 de maio de 2026" e alguns campos em branco, tudo na mesma coluna, porque três fluxos diferentes de cadastro tocaram esses registros ao longo de 18 meses. O campo de Etapa vai ter "Proposta", "proposta", "PROPOSTA - REVISADA" e o que o novo SDR digitou antes de alguém corrigir.
Isso não é um caso extremo. Essa é a exportação. Seu tracker precisa lidar com isso antes de chegar em qualquer fórmula.
Como Estruturar um Tracker de Pipeline de Vendas no Sheets
Mantenha a aba de exportação bruta intacta — nunca transforme os dados no lugar. Construa uma aba Pipeline_Clean que padroniza enquanto lê. Sete colunas cobrem 90% das necessidades de relatório de pipeline:
| Coluna | Cabeçalho | Observações |
|---|---|---|
| A | ID do Deal | Chave única para deduplicação |
| B | Nome do Deal | Texto, sem transformação necessária |
| C | Responsável | TRIM + UPPER para normalizar capitalização |
| D | ARR | Requer wrapper VALUE() |
| E | Etapa | Normalizada via tabela de mapeamento |
| F | Data de Fechamento | Parseada com DATEVALUE() |
| G | Última Atividade | Para sinalizar deals parados |
A coluna de Etapa quebra a maioria dos trackers. Não tente limpar isso na exportação bruta — mantenha uma aba Mapa_Etapas que mapeia cada variante ("proposta", "Proposta - Revisada", "PROP") para um valor canônico. Depois puxe para Pipeline_Clean:
=IFERROR(VLOOKUP(TRIM(LOWER(Raw!E2)), Mapa_Etapas!$A:$B, 2, 0), "DESCONHECIDA")
O IFERROR é obrigatório. Quando um novo nome de etapa aparecer — e vai aparecer, geralmente no meio do trimestre — a fórmula retorna "DESCONHECIDA" em vez de quebrar todo SUMIF downstream. Um valor "DESCONHECIDA" que aparece na tabela do funil é visível. Um SUMIF quebrado que retorna zero, não.
Pipeline Ponderado: O Número que o Seu Diretor Quer de Verdade
O pipeline ponderado multiplica o ARR de cada deal pela sua probabilidade de fechamento na etapa atual. A maioria dos times de vendas atribui percentuais aproximados: Prospecção em 10%, Proposta em 30%, Negociação em 60%, Compromisso Verbal em 85%. Coloque esses pesos em uma aba chamada Pesos, não direto nas fórmulas — as etapas são renomeadas e repesadas a cada alguns trimestres e você não vai querer vasculhar 12 chamadas de SUMPRODUCT para atualizar.
Para até 5.000 linhas, o SUMPRODUCT funciona bem:
=SUMPRODUCT(
(Pipeline_Clean!E2:E5001<>"Fechado Perdido") *
(Pipeline_Clean!E2:E5001<>"Fechado Ganho") *
IFERROR(VLOOKUP(Pipeline_Clean!E2:E5001, Pesos!$A:$B, 2, 0), 0) *
IFERROR(VALUE(Pipeline_Clean!D2:D5001), 0)
)
Acima de 5.000 linhas, o SUMPRODUCT começa a travar. Migre para QUERY nas agregações:
SELECT E, SUM(D)
WHERE E <> 'Fechado Perdido' AND E <> 'Fechado Ganho' AND D IS NOT NULL
GROUP BY E
LABEL SUM(D) 'ARR Total'
Depois multiplique pelos pesos da aba Pesos em uma coluna auxiliar. Menos elegante, mas recalcula em menos de 2 segundos numa planilha de 30.000 linhas. O SUMPRODUCT aninhado equivalente leva 18+ segundos no mesmo conjunto de dados.
Conversão por Etapa: Onde o Funil Realmente Vaza
O total ponderado diz o tamanho do pipeline. A conversão por etapa diz onde os deals vão morrer. Na reunião de segunda com o diretor, esse costuma ser o número mais importante.
Monte uma tabela de funil baseada em COUNTIF onde cada linha é uma etapa canônica, com colunas de contagem de deals, ARR total e taxa de conversão para a etapa seguinte:
=COUNTIF(Pipeline_Clean!$E:$E, A2)
A taxa de conversão entre etapas adjacentes é:
=IFERROR(B3/B2, 0)
Onde B2 é a contagem na etapa N e B3 é a contagem na etapa N+1. Embrulhe em IFERROR porque Prospecção vai estar zerada na primeira segunda-feira de um novo trimestre — e um #DIV/0! no dashboard do diretor é um péssimo começo de semana.
Benchmarks do mercado B2B SaaS — documentados no State of Sales da Salesforce, edição 2024 — indicam que entre 20% e 25% do pipeline qualificado converte em fechado-ganho, mas seus próprios dados históricos da mesma exportação valem mais do que qualquer benchmark externo. A tabela de funil é exatamente o mecanismo para construir esse histórico.
Sinalizando Deals Parados Antes da Reunião de Segunda
Um deal sem atividade há 30 dias que ainda não fechou está ou morto ou precisando de um empurrão — e em qualquer dos dois casos, o time de ops precisa saber antes da reunião, não durante ela. Adicione uma coluna Alerta_Parado à Pipeline_Clean:
=IF(
AND(
E2<>"Fechado Ganho",
E2<>"Fechado Perdido",
IFERROR(HOJE()-VALUE(G2), 999)>30
),
"PARADO",
""
)
O trecho IFERROR(HOJE()-VALUE(G2), 999) faz um trabalho real. Se Última Atividade estiver em branco ou chegar como texto, VALUE() falha, IFERROR retorna 999 e o deal é sinalizado como parado — o que é a decisão certa. Um deal sem data de atividade registrada está efetivamente parado. Puxe a contagem de parados para o seu dashboard de resumo com =COUNTIF(Pipeline_Clean!H:H, "PARADO") e combine com um breakdown por responsável.
Onde o Tracker de Pipeline de Vendas Começa a Ceder
| Volume de Linhas | Abordagem Recomendada |
|---|---|
| Até 5.000 | ARRAYFORMULA + SUMPRODUCT livremente |
| 5.000–20.000 | QUERY para agregações, ARRAYFORMULA para transformações por linha |
| 20.000–50.000 | Somente QUERY para agregações; minimize funções voláteis (HOJE, AGORA) |
| 50.000+ | Arquitetura separada — Sheets apenas como camada de exibição |
A documentação do Google especifica um limite de 10 milhões de células por planilha (support.google.com/drive/answer/37603). Na prática, porém, a performance de fórmulas se degrada bem antes disso. Uma planilha de pipeline com 50.000 linhas e 15 colunas de fórmulas atinge tempos de recálculo acima de 30 segundos — o que inviabiliza totalmente o uso como dashboard em tempo real.
A solução arquitetural: mantenha a exportação bruta em uma planilha, execute limpeza e agregação em uma segunda planilha com IMPORTRANGE puxando apenas os dados processados de resumo, e aponte o dashboard do diretor para essa planilha de resumo. Três abas, uma fonte de verdade, tempos de carregamento abaixo de 3 segundos.
A Coluna que Quebra Tudo (Um Aviso Honesto)
Eis o modo de falha que ninguém menciona: o admin do CRM adiciona uma coluna à exportação entre segunda e terça. Seu IMPORTRANGE está fixado em Raw!A:M. A nova coluna empurra ARR da coluna D para a coluna E. Toda fórmula que referencia a coluna D por posição passa a puxar o campo errado — silenciosamente, sem erro algum, só com números incorretos.
A correção é o referenciamento defensivo: use MATCH para encontrar a posição do cabeçalho da coluna e INDEX para puxar pelo nome em vez de pela letra da coluna.
=INDEX(Raw!$A:$Z, LIN(), MATCH("ARR", Raw!$1:$1, 0))
Isso adiciona custo computacional às fórmulas, mas sobrevive a mudanças de schema — que numa integração com CRM ativo acontecem com muito mais frequência do que qualquer um admite. Em maio de 2026, o Google Sheets não oferece referenciamento nativo de colunas por nome fora de recursos de tabelas estruturadas, então MATCH/INDEX continua sendo a abordagem padrão para trackers resilientes a mudanças de schema.
O Passo que Ninguém Corrige: a Exportação Manual
O maior gargalo operacional de qualquer tracker de pipeline não são as fórmulas — é o ritual de segunda-feira de baixar um CSV do Salesforce, subir no Drive, redirecionar o IMPORTRANGE e torcer para que nada tenha mudado. São 20 minutos toda semana, e o processo trava se alguém estiver de folga ou doente.
O ModelMonkey se conecta diretamente ao Salesforce (somente leitura) e ao HubSpot, puxa a exportação para a sua estrutura no Sheets em agendamento automático e executa a lógica de limpeza na importação. O motor SQL integrado — que roda queries como SELECT Etapa, SUM(ARR) FROM pipeline GROUP BY Etapa diretamente contra os dados da planilha — cuida das agregações que de outra forma exigiriam fórmulas QUERY aninhadas. Para times de sales ops que fazem revisões semanais de pipeline, esse é o único passo manual que pode realmente desaparecer. Escolha um plano do ModelMonkey.
Perguntas Frequentes
O que é um tracker de pipeline de vendas no Google Sheets? É uma planilha estruturada em três camadas — exportação bruta do CRM, aba de limpeza e normalização, e visão de resumo executivo — que centraliza dados de oportunidades de vendas para acompanhar pipeline ponderado, conversão por etapa e deals parados. Funciona tanto com dados exportados manualmente do Salesforce ou HubSpot quanto com feeds automatizados via IMPORTRANGE ou integrações diretas.
Quantas linhas um tracker de pipeline aguenta no Google Sheets antes de travar? Até 5.000 linhas, SUMPRODUCT e ARRAYFORMULA funcionam sem restrições. Entre 5.000 e 20.000 linhas, substitua agregações por QUERY. Acima de 50.000 linhas, o Sheets passa a funcionar melhor como camada de exibição — com limpeza e agregação acontecendo em uma planilha separada, e apenas os dados processados sendo puxados para o dashboard via IMPORTRANGE.
Como evitar que o tracker quebre quando o CRM muda a estrutura da exportação?
Use referenciamento por nome de coluna com INDEX/MATCH em vez de referências fixas por letra (como Raw!D:D). A fórmula =INDEX(Raw!$A:$Z, LIN(), MATCH("ARR", Raw!$1:$1, 0)) encontra a coluna ARR pelo cabeçalho independentemente de sua posição, sobrevivendo a inserções ou remoções de colunas na exportação.
Preciso de Apps Script para construir um tracker de pipeline funcional? Não para as funcionalidades essenciais. VLOOKUP com tabela de mapeamento de etapas, SUMPRODUCT para pipeline ponderado, COUNTIF para contagem de deals por etapa e uma coluna de alerta com lógica de data cobrem a maior parte das necessidades de um time de até 20 reps. Apps Script passa a ser relevante quando você precisa de notificações automáticas por e-mail, importação agendada de dados externos ou integração com APIs de terceiros.
Como calcular pipeline ponderado no Google Sheets?
Mantenha uma aba Pesos com cada etapa canônica e seu percentual de probabilidade. Use SUMPRODUCT cruzando ARR, peso da etapa e um filtro que exclui "Fechado Ganho" e "Fechado Perdido". Troque o SUMPRODUCT por QUERY + coluna auxiliar de multiplicação quando a planilha passar de 5.000 linhas para evitar travamentos de recálculo.