Pular para o conteúdo
DM Danilo Moura Desenvolvimento · Segurança da informação · LGPD
Araxá/MG · atende em 260 km Falar comigo

Início / Blog / Desenvolvimento

Desenvolvimento 18/08/2026 · 7 min de leitura

Dá para medir audiência sem rastrear ninguém (e o que você perde)

Google Analytics responde perguntas que a maioria dos sites não faz, e cobra em dado pessoal por isso. Uma medição própria em uma tabela responde o essencial — com custos que vale enunciar.

A pergunta que quase todo site pequeno precisa responder é uma só: quais páginas trazem contato?

Para responder isso, a ferramenta padrão instala cookie de identificação, monta perfil de visitante, acompanha a navegação entre sessões e envia tudo para uma empresa de publicidade. É desproporcional — e, num site que vende adequação à LGPD, é contraditório.

A tabela inteira

CREATE TABLE visitas (
  id          INT UNSIGNED AUTO_INCREMENT,
  criado_em   DATETIME NOT NULL,
  caminho     VARCHAR(160) NOT NULL,
  referencia  VARCHAR(120),      -- so o dominio
  dispositivo ENUM('celular','tablet','computador'),
  faixa_tela  VARCHAR(12),       -- faixa, nao medida exata
  PRIMARY KEY (id)
);

O que não está aí é a decisão: sem IP, sem identificador de visitante, sem cookie de medição, sem impressão digital. Não existe forma de reconstruir a navegação de uma pessoa a partir dessa tabela.

Dois detalhes que parecem pequenos

O referenciador vai reduzido ao domínio

A URL completa de uma busca pode conter o que a pessoa pesquisou — às vezes o nome dela, às vezes coisa pior. Guardar google.com responde "de onde vieram" igualmente bem:

$host = parse_url($url, PHP_URL_HOST);
$host = preg_replace('/^www\./', '', strtolower($host));

A largura da tela vira faixa

Resolução exata, combinada com fuso e idioma, é um dos vetores clássicos de impressão digital de navegador. "641-900" responde a pergunta de layout sem contribuir para identificar ninguém.

Atribuição sem rastreamento

Saber que /regiao/uberaba/ teve 40 visitas é pouco. O que importa é saber que dois leads começaram a visita por ali.

Isso normalmente exige acompanhar a pessoa entre páginas. Mas existe um caminho mais simples: guardar a página de entrada em sessionStorage e enviá-la junto com o formulário, quando a pessoa decidir se identificar de qualquer forma.

if (!sessionStorage.getItem('entrada')) {
  sessionStorage.setItem('entrada', location.pathname);
}

sessionStorage morre ao fechar a aba. Não acompanha ninguém entre visitas, não sai do navegador — exceto quando a própria pessoa envia o formulário. A atribuição existe; o rastreamento, não.

Valide esse campo no servidor. Ele vem do navegador, então aceita apenas caminho simples: ^/[a-z0-9\-/]*$. Sem isso, você criou um campo livre que alguém vai usar para injetar coisa.

O que você perde — e é bom dizer em voz alta

  • Visitante único. Não existe: contar pessoas exige identificar pessoas.
  • Taxa de retorno. Idem.
  • Tempo na página e funil por sessão. Exigem ligar eventos ao mesmo visitante.
  • O número total. A medição só roda para quem autoriza, então o valor é um piso, não o total.

Essa última merece destaque no painel, não uma nota de rodapé. Um número que parece exato e não é vale menos que um número declaradamente parcial.

Quando essa escolha não serve

Se o seu negócio vive de otimizar conversão, testar variações e calcular retorno por canal, você precisa de identificação de sessão e a conversa é outra — aí o caminho é fazer direito: base legal definida, aviso claro, retenção curta e ferramenta que você controla.

Para um site institucional que quer saber quais textos trazem cliente, contar página resolve. E resolve sem transformar cada visitante em dado pessoal armazenado.

CTA próximo passo

Me conte o que está travando hoje

Uma conversa de vinte minutos costuma ser suficiente para separar o que é problema de sistema, o que é problema de processo e o que é risco de conformidade. Sem custo e sem compromisso.