Não rastreamos utilizadores. Eis o que rastreamos.
Sem GA. Sem Plausible. Sem fingerprinting. O site que estás a ler manda um beacon anónimo por sessão — e ainda assim sabemos tudo o que realmente precisamos.
A página de analytics deste site tem seis números. Construímo-los a partir de logs de servidor e um único beacon ping por sessão. Não há cookie. Não há retenção de IP além de sete dias. Nenhum terceiro vê o visitante.
O que precisamos mesmo de saber
Para um site de estúdio como este, as perguntas que valem a pena responder são: as pessoas aterram na homepage e lêem além do hero, que case studies seguram atenção, de onde vêm os cliques no formulário de contacto, e com que frequência a caixa de pesquisa é usada.
Nenhuma destas perguntas exige saber quem é alguém.
O que o beacon envia
Um POST por sessão, disparado ~3s depois do load: { path, referrer_origin, lang, screen_w, ts }. Sem user agent, sem IP, sem fingerprint, sem UUID. A sessão é a pageview em si.
Os dados aterram num ficheiro JSON-lines (um append por pedido, sem DB). Rotação mensal. Inacessível da web — a pasta de storage tem Require all denied no .htaccess.
O dashboard de analytics
Um script PHP lê o JSONL, agrega por dia, e renderiza seis números + um pequeno gráfico de barras. Auth é HTTP basic. O script nunca sai do servidor.
O trade-off
Não conseguimos responder a perguntas como "este utilizador voltou?" ou "qual o caminho de conversão do visitante X?". Conseguimos responder a perguntas como "a homepage está a fazer o seu trabalho?" e "o press kit está a chegar a alguém?". Para um site de estúdio, o segundo conjunto importa e o primeiro não.
Se algum dia vendermos um produto B2C onde analytics ao nível do cliente importem, adicionamos uma plataforma de analytics como deve ser, com consent-gating. Até lá: menos é mais, sobretudo quando "mais" significa "mais dados de outras pessoas".