Rastreamento de Analytics: Coleta de Eventos com Foco em Privacidade

Este artigo explica como rastreamos o comportamento do usuário respeitando a privacidade e evitando tráfego de bots.

O Problema: Entender o Comportamento do Usuário

Precisamos saber:

  • Quais páginas os usuários visitam

  • Quais produtos eles visualizam

  • De onde vem o tráfego (Google Ads, orgânico, redes sociais)

  • Quais campanhas geram conversões

Mas devemos evitar:

  • Rastrear bots e crawlers

  • Armazenar informações pessoalmente identificáveis (PII)

  • Violar regulamentações de privacidade

A Solução: Rastreamento no Lado do Cliente + Lado do Servidor

Lado do Cliente: Rastreamento com JavaScript

ID do Visitante: ID aleatório armazenado em cookie (365 dias)

ID da Sessão: ID aleatório armazenado no sessionStorage (até o navegador fechar)

Parâmetros de campanha: Extraídos da URL e armazenados no sessionStorage

Parâmetros rastreados:

  • gclid - Google Click ID (Anúncios de busca)

  • gbraid - Google Ads click ID (Anúncios de Shopping)

  • wbraid - Google Ads click ID (iOS)

  • fbclid - Facebook click ID

  • srsltid - Google organic search result ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

Armazenamento: Parâmetros armazenados em cookies (30 minutos) para atribuição de clique no WhatsApp/telefone

Lado do Servidor: Enriquecimento

O servidor enriquece os eventos com:

Dados de GeoIP: País, região, cidade a partir do endereço IP

Análise do User-Agent: Navegador, SO, tipo de dispositivo

Timestamp: Horário do servidor (UTC)

Detecção de bots: Filtra user-agents conhecidos de bots

Tipos de Eventos

Visualização de página: Usuário visita uma página

Visualização de produto: Usuário visualiza página de produto

Adicionar ao carrinho: Usuário adiciona produto ao carrinho

Checkout: Usuário inicia o checkout

Compra: Usuário finaliza a compra

Clique no WhatsApp: Usuário clica no botão do WhatsApp

Clique no telefone: Usuário clica no número de telefone

Fluxo de Dados

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: Visita página
    JS->>JS: Extrai parâmetros da URL
(gclid, utm_*, etc.) JS->>JS: Armazena no sessionStorage JS->>API: POST evento + parâmetros API->>API: Enriquece com GeoIP API->>API: Analisa User-Agent API->>API: Filtra bots API->>Firehose: Envia evento enriquecido Firehose->>S3: Armazena no bucket de analytics

Detecção de Bots

Filtramos o tráfego de bots usando múltiplos sinais:

Padrões de User-Agent: Strings conhecidas de bots (Googlebot, Bingbot, etc.)

Padrões de comportamento: Muito rápido, muitas requisições

JavaScript ausente: Bots frequentemente não executam JS

Cookie de exclusão: tv_exclude=true interrompe todo o rastreamento

Proteção de Privacidade

Sem PII: Nunca armazenamos nomes, e-mails, números de telefone

IPs anonimizados: Último octeto removido antes do armazenamento

Sem rastreamento cross-site: Cookies são apenas first-party

Opt-out: Usuários podem definir o cookie de exclusão

Retenção de dados: Eventos excluídos após 90 dias

Carregamento Condicional de Pixels

Carregamos pixels de rastreamento apenas quando relevantes:

Pixel do Google Ads: Apenas se gclid, gbraid ou wbraid estiverem presentes

Pixel do LinkedIn: Apenas se msclkid estiver presente

Pixel do Facebook: Apenas se fbclid estiver presente

Benefício: Carregamento mais rápido das páginas, menos sobrecarga de rastreamento

Detecção da Fonte de Tráfego

Detectamos a fonte de tráfego a partir dos parâmetros da URL:

Google Ads: gclid, gbraid, wbraidutm_source=google_ads

Google Orgânico: srsltidutm_source=google_search

Facebook: fbclidutm_source=facebook

LinkedIn: msclkidutm_source=linkedin

Direto: Sem parâmetros → utm_source=direct

Rastreamento de Conversões

Rastreamos conversões ao longo do funil:

Visualização de produtoAdicionar ao carrinhoCheckoutCompra

Cada etapa inclui:

  • ID do Visitante (para atribuição)

  • ID da Sessão (para análise de sessão)

  • Parâmetros da campanha (para cálculo de ROI)

  • SKU do produto (para análise de produto)

Rastreamento de Toque de Lead

Quando os usuários entram em contato conosco (WhatsApp, telefone, e-mail), capturamos:

Método de contato: WhatsApp, telefone, e-mail

Parâmetros da campanha: Dos cookies (janela de 30 minutos)

Contexto do produto: Em qual página de produto eles estavam

Benefício: Atribuir conversões offline a campanhas online

Limitação de Taxa

O endpoint de analytics tem limitação de taxa:

Limite: 100 requisições por 10 minutos por IP

Benefício: Previne abuso e inundações de bots

Armazenamento

Os eventos são armazenados no S3 via Kinesis Firehose:

Formato: JSON lines (um evento por linha)

Particionamento: Por data (ano/mês/dia/hora)

Compressão: Gzip

Retenção: 90 dias

Consulta

Os eventos são consultados via AWS Athena:

Esquema: Definido no Glue Data Catalog

Consultas: SQL nos dados do S3

Casos de uso: ROI de campanha, popularidade de produtos, fontes de tráfego

Referências

Conceitos Técnicos

Serviços AWS

Artigos Relacionados

Resumo

Nosso sistema de analytics rastreia o comportamento do usuário respeitando a privacidade:

Lado do cliente:

  • ✅ Extrai parâmetros de campanha da URL

  • ✅ Armazena no sessionStorage (escopo de sessão)

  • ✅ Armazena em cookies (30 min para atribuição)

  • ✅ Envia eventos para a API

Lado do servidor:

  • ✅ Enriquece com GeoIP e User-Agent

  • ✅ Filtra tráfego de bots

  • ✅ Envia para o Kinesis Firehose

  • ✅ Armazena no S3 (particionado por data)

Privacidade:

  • ✅ Nenhum PII armazenado

  • ✅ IPs anonimizados

  • ✅ Cookies apenas first-party

  • ✅ Opt-out disponível

  • ✅ Retenção de 90 dias

Carregamento condicional:

  • ✅ Pixel do Google Ads apenas se gclid presente

  • ✅ Pixel do LinkedIn apenas se msclkid presente

  • ✅ Pixel do Facebook apenas se fbclid presente

Esta abordagem equilibra insights com privacidade e desempenho.


← Voltar ao Índice da Documentação