No rastreamos usuarios. Esto es lo que rastreamos.
Sin GA. Sin Plausible. Sin fingerprinting. El sitio que estás leyendo manda un beacon anónimo por sesión — y aún así sabemos todo lo que realmente necesitamos.
La página de analytics de este sitio tiene seis números. Los construimos desde logs de servidor y un único beacon ping por sesión. No hay cookie. No hay retención de IP más allá de siete días. Ningún tercero ve al visitante.
Lo que realmente necesitamos saber
Para un sitio de estudio como este, las preguntas que vale la pena responder son: la gente aterriza en la homepage y lee más allá del hero, qué case studies sostienen atención, de dónde vienen los clics en el formulario de contacto, y con qué frecuencia se usa el buscador.
Ninguna de estas preguntas exige saber quién es alguien.
Lo que el beacon envía
Un POST por sesión, disparado ~3s después del load: { path, referrer_origin, lang, screen_w, ts }. Sin user agent, sin IP, sin fingerprint, sin UUID. La sesión es la pageview en sí.
Los datos aterrizan en un archivo JSON-lines (un append por petición, sin DB). Rotación mensual. Inaccesible desde la web — la carpeta de storage tiene Require all denied en .htaccess.
El dashboard de analytics
Un script PHP lee el JSONL, agrega por día, y renderiza seis números + un pequeño gráfico de barras. Auth es HTTP basic. El script nunca sale del servidor.
El trade-off
No podemos responder preguntas como "¿volvió este usuario?" o "¿cuál es el camino de conversión del visitante X?". Podemos responder preguntas como "¿la homepage está haciendo su trabajo?" y "¿el press kit está llegando a alguien?". Para un sitio de estudio, el segundo conjunto importa y el primero no.
Si algún día vendemos un producto B2C donde analytics a nivel de cliente importen, añadiremos una plataforma de analytics propiamente dicha, con consent-gating. Hasta entonces: menos es más, sobre todo cuando "más" significa "más datos de otras personas".