Você gerou relatório bonito no Syncro e precisa mandar pra diretoria, sócio, parceiro. Eles não têm conta Syncro. Solução: gerar link público. Sistema cria URL /r/{hash} com snapshot congelado, opcional senha, opcional expiração — você cola o link no e-mail/WhatsApp e quem recebe vê o relatório no browser. Esse artigo cobre como gerar, gerenciar e proteger.
Pré-requisitos
- Relatório gerado em
/relatorioscom filtros aplicados. - Permissão admin ou manager.
Gerar link
- Vá em Relatórios (
/relatorios). - Configure filtros: período, pipeline, responsável.
- Clique no botão Gerar link público no canto superior direito.
- Modal abre com opções.
Opções do link
Título (opcional, max 150 chars)
Nome amigável que aparece no header do link público.
Ex: "Relatório Janeiro 2026", "Performance Q1 — Diretoria".
Se vazio, sistema usa título genérico tipo "Relatório de 01/01 a 31/01".
Senha (opcional, 4-100 chars)
Protege link com senha. Quem recebe precisa digitar pra ver.
- Pode ser PIN curto (4 dígitos) ou senha forte.
- Salva como hash (irreversível — você não vê depois).
- Pode ser mudada ou removida depois (em /relatorios/historicos).
💡 Dica: pra relatório com dados sensíveis (receita, custos), sempre use senha. Compartilhe a senha por canal separado (não no mesmo e-mail/mensagem do link).
Validade
3 opções:
- 7 dias.
- 30 dias (default).
- 90 dias.
Após esse período, link expira automaticamente — quem acessar vê página "Relatório expirado" (HTTP 410).
⚠️ Atenção: validade não pode ser estendida. Se expirou, gere novo link.
Após gerar
Sistema:
- Cria
GeneratedReportno banco com:
hashúnico (20 chars base62 — impossível de adivinhar).snapshot_jsoncom todos os dados do relatório no momento.password_hash(se senha configurada).expires_at = now + expires_days.
- Retorna URL pública:
https://app.syncro.chat/r/abc123def456ghi789jk. - Modal mostra:
- URL completa com botão Copiar.
- Senha (se configurada) — só aparece uma vez, depois fica hash.
- Validade.
⚠️ Atenção: senha aparece apenas no momento da criação. Se esquecer, terá que resetar em /relatorios/historicos.
Acessar link público
Quem recebe abre https://app.syncro.chat/r/abc123... no browser:
Sem senha
- Página carrega direto.
- Mostra título + dados do relatório (KPIs, gráficos, tabelas).
- Não pede login.
Com senha
- Form pede senha.
- Cliente digita.
- Validação via
Hash::check. - Rate limit: 5 tentativas a cada 10 min por IP+hash.
- Se bate: redireciona pra relatório, lembra na sessão.
- Se erra 5x: bloqueia por 10 min.
Expirado
- Página "Relatório expirado" (HTTP 410 Gone).
- Sem dados visíveis.
- CTA: "Solicite novo link ao remetente".
Snapshot congelado
⚠️ Crucial entender: o link público mostra dados CONGELADOS no momento da geração.
Cenário:
Hoje você gera link com filtro "últimos 30 dias" → 450 leads.
Amanhã alguém apaga 50 leads do CRM.
Quem acessar o link no dia seguinte ainda vê 450 leads.
Vantagens:
- ✅ Imutável — auditoria correta.
- ✅ Performance — não recalcula a cada acesso.
- ✅ Independente — não depende de dados atuais do banco.
Desvantagens:
- ❌ Não atualiza — pra ver dado novo, gere novo link.
- ❌ Ocupa espaço — JSON pode ter ~50KB-500KB cada.
Histórico e gerenciamento
Acesse /relatorios/historicos pra ver todos os relatórios públicos gerados:
Tabela mostra
- Título.
- Hash / URL (link copiável).
- Status: Ativo / Expirado.
- Criado em.
- Expira em.
- Visualizações (
views_count). - Última visualização (
last_viewed_at). - Senha: ✅ ou ❌.
- Ações: Editar senha / Deletar.
Atualizar senha
- Botão Editar senha.
- Modal pra digitar nova senha (ou deixar vazio = remover senha).
- Salve.
- Próximas visitas usam nova senha.
Deletar relatório
- Botão Excluir.
- Confirme.
- Sistema apaga registro + snapshot.
- Link
/r/{hash}retorna 404 dali em diante.
Quem pode acessar
Link público não tem auth do Syncro:
- ✅ Qualquer pessoa com URL.
- ✅ Senha (se configurada).
- ✅ Antes de expirar.
Sistema não rastreia quem acessou (apenas conta views_count por sessão).
Compartilhamento seguro
Por e-mail
Olá Sr. Silva,
Relatório de Janeiro 2026 conforme solicitado:
https://app.syncro.chat/r/abc123def456...
Senha: 1234 (envie por outro canal)
Válido até 30/05/2026.
Por WhatsApp
Use a feature Relatórios automáticos por WhatsApp que já gera + envia link automaticamente. Veja Relatórios automáticos por WhatsApp.
Por Slack/Teams
Cole link no canal. Senha por DM separado.
Por SMS / impresso
Imprima ou mande SMS. Senha curta (4 dígitos) facilita ler em voz alta.
Casos práticos
Investidor solicita números do mês
- Gere link com filtro mês passado, título "Performance Mensal", senha 4 dígitos, validade 30 dias.
- Mande por e-mail. Senha por WhatsApp.
- Quando expirar, gere novo do mês seguinte.
Diretor quer ver dashboard sem login
- Você gera link sem senha (acesso interno).
- Validade 90 dias (uso recorrente).
- Cola no aplicativo de produtividade dele.
Auditoria fiscal
- Auditor pediu relatório de vendas Q4 2025.
- Você gera com filtro Q4, com senha, validade 7 dias (após auditoria, expira).
- Auditoria recebe em ambiente protegido.
Apresentação executiva
- Pré-reunião, gera link rápido sem senha.
- Validade 7 dias (descartável).
- Apresenta no projetor abrindo a URL.
Boas práticas
1. Use senha pra dados sensíveis
Receita, custos, margem, dados de cliente — sempre senha. URLs vazam (e-mail forwarded, screenshots).
2. Use validade curta se descartável
Reunião pontual? 7 dias evita link "esquecido" navegando pela internet.
Update recorrente? 90 dias ou agendado via /relatorios/assinaturas.
3. Rotacione links
Pra parceiros recorrentes, gere novo link mensalmente ao invés de aumentar validade. Garante atualização + revoga acessos antigos.
4. Audit periódico
Vá em /relatorios/historicos a cada trimestre, delete relatórios antigos que não são mais usados. Reduz risco de leak.
5. Não coloque senha no e-mail com o link
Se hacker pega e-mail, tem URL + senha juntos. Mande por canal separado.
Erros comuns
"Link expirou mas eu acabei de gerar"
- Cheque
expires_atno histórico. - Sistema usa
expires_daysem dias úteis ou corridos? Corridos.
"Cliente erra senha 5x e fica bloqueado"
Rate limit anti-bruteforce. Espera 10 min ou peça pra acessar de outro IP.
"Página em branco ao acessar"
- Browser bloqueando JS? Permita.
- Cache strange? Acesse em janela anônima.
- Cliente em rede corporativa com firewall? Use celular.
"Snapshot mostra dados antigos"
Comportamento esperado — snapshot é congelado. Pra dados atuais, gere novo link.
"Quero atualizar dados do mesmo link"
Não é possível. Gere novo link com mesmo título. Cliente vai precisar do nova URL.
Performance
- Snapshot é JSON na coluna
snapshot_json. Páginas grandes (~500KB) podem demorar 1-2s pra carregar inicial. - Cache do browser ajuda visitas seguintes.
- Não há paginação no relatório público — tudo carrega de uma vez.
Privacidade
- Sistema não envia o link automaticamente — você compartilha manualmente.
- Logs registram quantas visitas mas não IP/identidade do visitante.
- Se você compartilhar URL inseguramente (ex: posta em fórum), qualquer um pode acessar (se sem senha).
Limites
- Sem limite de relatórios gerados por tenant.
- Página
/relatorios/historicosmostra últimos 50 (paginação).
Próximos passos
- Pra automatizar geração + envio, veja Relatórios automáticos por WhatsApp.
- Pra exportar dados pra Excel, veja Exportar leads.