COMPARACIÓN TÉCNICA

Analytics server-side vs JavaScript analytics.

Toda herramienta popular de analytics — Google Analytics, Plausible, Fathom, Simple Analytics, GoatCounter, Umami — usa la misma arquitectura: un snippet de JavaScript que se dispara en el navegador del visitante. Esa arquitectura tiene un límite duro. Aproximadamente el 30-60% del tráfico real de la web no es humano en navegador — son bots, crawlers, atacantes, requests server-to-server. El analytics JS-only no puede ver nada de eso.

El analytics server-side captura requests en la capa del servidor, antes de que cualquier navegador esté involucrado. Abajo está la comparación técnica y una recomendación: cuándo JS es suficiente, cuándo necesitas server-side, y cuándo (como creemos) quieres los dos.

La diferencia de arquitectura

El analytics JavaScript funciona así:

  1. El navegador del visitante solicita /page.html
  2. El servidor retorna HTML conteniendo <script src="ga.js">
  3. El navegador parsea, descarga ga.js, ejecuta
  4. El script dispara un beacon a los servidores de GA con metadatos de la visita

Ese pipeline falla cuando:

  • El "visitante" es un script que no ejecuta JS (bots, crawlers, atacantes)
  • El visitante usa uBlock Origin / Ghostery / similar (bloquea el dominio de GA)
  • El visitante tiene conexión que da timeout antes de que ga.js cargue
  • La request nunca retornó HTML (responses de REST API, hits de imagen, descarga de archivo)
  • JavaScript da error silencioso antes de que el beacon se dispare

El analytics server-side funciona diferente:

  1. La request del visitante golpea tu servidor (Apache / Nginx / PHP-FPM)
  2. Tu código de aplicación (o un beacon server-side) captura la request y reenvía metadatos a la capa de analytics
  3. La captura ocurre independientemente de lo que el visitante haga después

Ese pipeline no le importa el JavaScript, los ad-blockers, los quirks del navegador o el tipo de response. Si la request golpeó tu servidor, fue contada.

Qué captura cada capa

Server-side
(Radar)
JavaScript
(GA / Plausible / Fathom)
Visitantes humanos con navegador + JS activado
Humanos con ad-blockers activos
AI crawlers (GPTBot, ClaudeBot, PerplexityBot, etc.)
Bots de SEO (Ahrefs, Semrush, Majestic, etc.)
Lectores RSS (Feedly, Inoreader, NewsBlur)
Monitores de uptime (UptimeRobot, Pingdom)
Atacantes (sqlmap, wpscan, nuclei, brute-force)
Requests REST API (/wp-json/, /api/)
Web Vitals (LCP, INP, CLS — perf client-side)
Errores JS / rage clicks / scroll depthParcial
Atribución UTM + canales

SysWP Radar usa las dos capas: pixel JavaScript para visitantes humanos (Web Vitals + UTM + engagement) Y beacon server-side (vía plugin PHP en WordPress, o snippet de una línea en cualquier plataforma) para todo lo que JS no ve. Las dos son complementarias, no competidoras.

Cuándo basta con JavaScript-only

  • Solo te importan los funnels de conversión humanos (checkout de e-commerce, signup de SaaS)
  • Aceptas ignorar el 30-60% del tráfico total
  • No corres un sitio de contenido que les importe a los AI crawlers
  • No estás en WordPress (la mayoría de los ataques apuntan a WP específicamente)
  • No necesitas saber qué bots se están comiendo tu ancho de banda

En ese caso, Plausible o Fathom son geniales. Son enfocados, rápidos, privacy-first, y hacen su trabajo bien dentro del scope.

Cuándo necesitas analytics server-side

  • Sitio de contenido / blog / docs: los AI crawlers ahora son una porción significativa del "tráfico". Quieres optimizar para citación en respuestas de ChatGPT / Claude / Perplexity. No puedes optimizar lo que no mides.
  • Sitio WordPress: /wp-login.php, /xmlrpc.php, /wp-json/ son superficies de ataque constantes. El analytics JS no ve ningún ataque. Server-side captura todos.
  • E-commerce / SaaS con API pública: las requests API (GET /api/products) no ejecutan JS. La captura server-side muestra qué endpoints son llamados, por quién, con qué frecuencia.
  • News / publicación: los lectores RSS (Feedly, Inoreader, NewsBlur) consumen /feed/ sin navegador. Te quedas totalmente ciego para tus suscriptores más fieles con JS-only.
  • Equipos preocupados por seguridad: scanners golpeando /.env, /.git/config, probes de vulnerabilidad, intentos de inyección sqlmap — invisibles para el analytics JS, visibles en la capa del servidor.

Cómo SysWP Radar implementa las dos capas

Una plataforma, dos capas de captura:

  1. Pixel JavaScript (una etiqueta <script> async, ~2 KB) — atiende sesiones humanas en navegador. Captura Web Vitals usando PerformanceObserver, params UTM, scroll, rage clicks, errores JS. Corre en cualquier plataforma.
  2. Beacon server-side — para WordPress, es el plugin SysRadar que se engancha en shutdown y envía requests vía fastcgi_finish_request() + blocking=false (cero latencia al visitante). Para no-WP, un webhook HTTP o shipper de log de Apache.

El classifier (modelo de scoring server-side estilo Bayesiano + reglas curadas) categoriza cada request capturada en 9 categorías en tiempo real: humanos, bots verificados, AI crawlers, SEO crawlers, lectores RSS, health checks, WP interno, atacantes, desconocidos. El dashboard muestra agregados, drillable, con timeseries horaria.

Preguntas frecuentes

¿El analytics server-side no viola más la privacidad que el analytics JS?
No — al contrario. Anonimizamos IPs (último octeto puesto en cero) antes de persistir, sin cookies de ningún tipo, sin fingerprinting, sin cross-site tracking, sin data brokers. La captura server-side ve menos señales fingerprinteables que JS en el navegador (que tiene acceso a canvas / WebGL / fonts / etc.). Radar es LGPD/GDPR-compliant by design.
¿Puedo correr Radar junto con Google Analytics / Plausible?
Sí — y lo recomendamos en el plan Free. Mantén tu analytics actual para la view solo-humano. Añade Radar para ver todo el resto. No entran en conflicto.
¿El beacon server-side hace mi sitio más lento?
No. El plugin dispara el beacon en el hook shutdown de WordPress con blocking=false + fastcgi_finish_request() — es decir, latencia al visitante es cero. La request HTTP a Radar ocurre después de que WordPress ya envió la respuesta al visitante.
¿Y si mi sitio no usa PHP?
El pixel JavaScript sigue funcionando (en cualquier lugar). Para plataformas fuera de PHP (Node, Python, Go), planeamos middleware nativo en v1.4. Hoy, el camino más fácil es enviar los access logs de Apache/Nginx a Radar vía webhook, o usar el pixel JS para lo que pueda capturar.

Captura las dos capas en una sola instalación.

Plan free para siempre. Pixel JS + beacon server-side, un signup. Mira la diferencia en la primera hora.

Crear cuenta gratis →

Los primeros 100 clientes pagantes aseguran 50% de por vida.

Temas relacionados