Pra decisão estratégica (quanto vendi, qual origem mais converte, qual vendedor performa melhor, onde estamos perdendo), o dashboard não basta. Você precisa do relatório completo em /relatorios. KPIs detalhados, comparativo automático, breakdown por múltiplas dimensões, métricas de WhatsApp e atividade da equipe. Esse artigo cobre cada seção.
Pré-requisitos
- Permissão admin, manager ou viewer.
- Pelo menos 1 lead/venda no período selecionado.
Acessar relatório
- Menu lateral → Relatórios (ou rota
/relatorios). - Tela principal abre com filtros + KPIs + seções.
Filtros
Topo da página:
- Data de (default: hoje - 30 dias).
- Data até (default: hoje).
- Pipeline — dropdown com pipelines do tenant.
- Responsável — dropdown de users.
- Botão Aplicar recarrega.
- Botão Limpar reseta default.
💡 Dica: pra ver "Q1 inteiro", coloque 01/01 a 31/03 manualmente.
KPIs principais
Período atual (4 cards)
| Card | Cálculo |
|---|---|
| Total de leads | count(Lead WHERE created_at in período AND exclude_from_pipeline=false) |
| Vendas | count(Sale WHERE closed_at in período) |
| Receita | SUM(sales.value) (com COALESCE pra lead.value se sale.value=0) |
| Ticket médio | revenue / sales_count |
| Taxa de conversão | (sales_count / leads_count) × 100 |
Comparativo com período anterior
Cada KPI mostra delta vs período anterior da mesma duração:
Receita: R$ 145.000 (↑ 18% vs R$ 123.000)
Vendas: 42 (↑ 12% vs 38)
Ticket: R$ 3.450 (↑ 6% vs R$ 3.235)
Conv: 8.4% (↓ 0.5pp vs 8.9%)
Verde = subiu, vermelho = caiu, cinza = estável.
Seções de breakdown
1. Performance por origem
Tabela:
| Origem | Leads | Vendas | Receita | Conv % |
|---|---|---|---|---|
| 145 | 22 | R$ 48.000 | 15.2% | |
| website | 89 | 12 | R$ 28.500 | 13.5% |
| 67 | 5 | R$ 8.700 | 7.5% | |
| manual | 42 | 9 | R$ 25.200 | 21.4% |
Útil pra ver qual canal gera mais conversão. Manual com conv alta? Talvez vendedor está cadastrando só leads quentes.
2. Performance por campanha (UTM)
Tabela só com leads que tem utm_campaign preenchido:
| Campanha | Origem | Leads | Vendas | Receita | Conv % |
|---|---|---|---|---|---|
| blackfriday26 | 152 | 18 | R$ 35.400 | 11.84% | |
| crm-vendas | 89 | 12 | R$ 24.800 | 13.48% | |
| newsletter-mensal | 45 | 5 | R$ 8.700 | 11.11% |
Veja Relatório UTM pra análise UTM completa.
3. Funil de conversão por pipeline
Pra cada pipeline cadastrado, mostra:
- Cada etapa com:
- Count de leads atualmente.
- % do total (largura da barra).
- Avg dias parado na etapa.
- Etapa Ganho/Perdido ao final.
💡 Dica: se "Negociação" tem
avg_days = 25, leads tão demorando demais pra fechar — escalar pra gerente de vendas?
4. Performance por vendedor
| Vendedor | Leads atribuídos | Vendas fechadas | Receita | Conv % |
|---|---|---|---|---|
| João | 45 | 8 | R$ 18.500 | 17.8% |
| Maria | 52 | 10 | R$ 22.000 | 19.2% |
| Pedro | 38 | 4 | R$ 9.500 | 10.5% |
Filtra apenas users com leads > 0 ou vendas > 0. Compara performance.
💡 Dica: Pedro com conv baixa? Hora de coaching ou redistribuir leads.
5. Leads perdidos
Sub-seção crítica.
Total de perdidos
- Quantidade:
count(LostSale WHERE lost_at in período). - Valor potencial:
SUM(lead.value)dos leads perdidos.
Ex: "38 leads perdidos. Valor potencial: R$ 95.000."
Por motivo (top 8)
Configurado em /configuracoes/motivos-perda.
| Motivo | Quantidade | % |
|---|---|---|
| Sem orçamento | 14 | 36.8% |
| Concorrente | 8 | 21.1% |
| Sem retorno | 7 | 18.4% |
| Fora do perfil | 5 | 13.2% |
Por vendedor
| Vendedor | Perdidos | % |
|---|---|---|
| João | 12 | 31.6% |
| Maria | 9 | 23.7% |
💡 Dica: cruze com performance. Se vendedor A perde muito por "preço", talvez não saiba defender valor.
6. Performance WhatsApp
Métricas de atendimento:
- Conversas iniciadas: total no período.
- Conversas fechadas: status='closed'.
- Conversas que viraram lead:
lead_id NOT NULL. - Conversas atendidas por IA:
ai_agent_id NOT NULL. - Tempo médio 1ª resposta: minutos entre primeira inbound e primeira outbound (excluindo IA).
- Mensagens por atendente: contagem outbound por user.
7. Cliques nos botões WhatsApp do site
Se você usa botões WhatsApp:
- Total de cliques no período.
- Cliques que viraram conversa (matched).
- % mobile vs desktop.
- Cliques por dia (mini-gráfico).
- Cliques por origem (UTM).
- Cliques por página do site.
Útil pra avaliar CTR dos botões.
Veja Botões WhatsApp no site.
8. Atividade da equipe
Mostra produtividade de cada user:
| User | Mensagens enviadas | Eventos no CRM | Total |
|---|---|---|---|
| João | 245 | 89 | 334 |
| Maria | 198 | 102 | 300 |
| Pedro | 67 | 45 | 112 |
- Mensagens: WhatsApp outbound.
- Eventos: ações registradas em
lead_events(mover lead, criar nota, mudar tag). - Total = soma.
💡 Dica: identifica quem tá ativo vs quem tá disperso. Pedro com 112 atividades pode estar focado em outras tarefas.
9. Produtos mais vendidos
Top 10 produtos vendidos no período:
| Produto | Preço | Vendas | Receita |
|---|---|---|---|
| Plano Growth Mensal | R$ 299 | 18 | R$ 5.382 |
| Curso Online | R$ 1.500 | 5 | R$ 7.500 |
| Setup Pacote | R$ 2.500 | 3 | R$ 7.500 |
Útil pra ver mix de receita — concentrado em poucos produtos ou diluído?
Gráficos
1. Leads por dia (linha)
Linha com leads criados por dia no período. Preenche dias sem leads com 0 (não pula).
2. Leads por dia por origem
Linhas múltiplas — uma por source. Útil pra ver picos por canal.
3. Histórico 6 meses
- Barras: leads por mês.
- Linha: receita por mês.
Sazonalidade visível.
Ações disponíveis
Exportar PDF
Botão Exportar PDF (canto superior direito):
- Gera PDF do relatório atual com dados visíveis.
- Layout otimizado pra impressão A4.
- Útil pra arquivamento físico ou compartilhamento offline.
Gerar link público
Botão Gerar link público:
- Cria snapshot congelado.
- URL
/r/{hash}com opcional senha + validade.
Veja Relatório público com link.
Agendar envio recorrente
Pra mandar automaticamente via WhatsApp:
- Vá em /relatorios/assinaturas.
- Crie assinatura com mesmos filtros.
Veja Relatórios automáticos por WhatsApp.
Exportações específicas
Pra exportar dados de leads (não relatório agregado), veja Exportar leads.
Casos práticos
Reunião mensal de gestão
- Filtra mês passado.
- KPIs: vendas, receita, conversão (com comparativo mês anterior).
- Performance por vendedor.
- Leads perdidos por motivo.
- Decisões: quem foi top, ações pra melhorar conversão.
Análise trimestral pra board
- Filtra Q1.
- Histórico 6 meses (mostra Q4 + Q1 lado a lado).
- Performance por origem (canal mais ROI).
- Gera link público com senha pra board ver remotamente.
Coaching individual
- Filtra vendedor específico via filtro Responsável.
- Vê: leads atribuídos, conv %, leads perdidos, tempo médio na etapa.
- 1-on-1 com dados reais.
Investigação de queda
- Conversão caiu 5pp esse mês.
- Filtra "leads perdidos por motivo": vê "Concorrente +50%".
- Investigação: quem é o concorrente? Por que tá ganhando?
Performance
Relatório NÃO usa cache (regenerado a cada acesso). Razão:
- Dados sempre frescos.
- Filtros muito variados — cache invalidaria toda hora.
Pra dashboards rápidos, /dashboard usa cache 5min.
💡 Dica: se você sempre olha mesmos filtros, dashboard é mais rápido. /relatorios é pra análise profunda ad-hoc.
Limitações
Não há gráfico custom
Você não pode criar gráficos próprios na UI. Pra customização total, exporte dados e use Excel/Looker.
Não há drill-down infinito
Cliques em alguns elementos filtram, mas não há OLAP cube. Pra análise muito profunda, use API + Power BI.
Período máximo
- Sem limite hard. Mas 2+ anos pode demorar (10s+).
- Recomendado: 1 ano por vez pra análise rápida.
Sem real-time
Relatório consolida dados ao carregar. Se você criou venda há 1 minuto, refresh a página pra aparecer.
Erros comuns
"Receita não bate com o que vendi"
- COALESCE inclui
lead.valuequandosale.value=0(bug histórico fix). Se valor diferente do esperado, verifique cada venda em/relatorios/vendas(ou Sales no banco).
"Conversão muito alta — algo errado"
- Filtro de período curto + leads atribuídos só a você (vendedor) pode dar conv inflada.
- Compare com filtro mês inteiro / todos vendedores pra realismo.
"Vendedor X não aparece na tabela"
Filtro automático: só users com leads OU vendas no período. Se Pedro não teve nada, não aparece.
"Período anterior não calcula"
- Garante que
date_fromestá preenchido. - Sistema calcula período anterior com mesma duração: 30d → comparado com 30d anteriores.
Próximos passos
- Pra dashboard rápido, veja Dashboard overview.
- Pra relatório por origem UTM, veja Relatório UTM.
- Pra automatizar envio via WhatsApp, veja Relatórios automáticos por WhatsApp.