Seguimiento Analítico: Recopilación de Eventos con Enfoque en la Privacidad
Este artículo explica cómo rastreamos el comportamiento del usuario respetando la privacidad y evitando el tráfico de bots.
El Problema: Comprender el Comportamiento del Usuario
Necesitamos saber:
-
Qué páginas visitan los usuarios
-
Qué productos visualizan
-
De dónde proviene el tráfico (Google Ads, orgánico, redes sociales)
-
Qué campañas generan conversiones
Pero debemos evitar:
-
Rastrear bots y rastreadores web
-
Almacenar información de identificación personal (PII)
-
Violar regulaciones de privacidad
La Solución: Seguimiento del Lado del Cliente + Lado del Servidor
Lado del Cliente: Seguimiento con JavaScript
ID de Visitante: ID aleatorio almacenado en cookie (365 días)
ID de Sesión: ID aleatorio almacenado en sessionStorage (hasta que se cierra el navegador)
Parámetros de campaña: Extraídos de la URL y almacenados en sessionStorage
Parámetros rastreados:
-
gclid- ID de clic de Google (anuncios de búsqueda) -
gbraid- ID de clic de Google Ads (anuncios de compras) -
wbraid- ID de clic de Google Ads (iOS) -
fbclid- ID de clic de Facebook -
srsltid- ID de resultado de búsqueda orgánica de Google -
utm_source,utm_medium,utm_campaign,utm_term,utm_content
Almacenamiento: Los parámetros se almacenan en cookies (30 minutos) para la atribución de clics en WhatsApp/teléfono
Lado del Servidor: Enriquecimiento
El servidor enriquece los eventos con:
Datos GeoIP: País, región, ciudad a partir de la dirección IP
Análisis de User-Agent: Navegador, SO, tipo de dispositivo
Marca de tiempo: Hora del servidor (UTC)
Detección de bots: Filtra user-agents de bots conocidos
Tipos de Eventos
Visualización de página: El usuario visita una página
Visualización de producto: El usuario visualiza la página de un producto
Añadir al carrito: El usuario añade un producto al carrito
Pago: El usuario inicia el proceso de pago
Compra: El usuario completa una compra
Clic en WhatsApp: El usuario hace clic en el botón de WhatsApp
Clic en teléfono: El usuario hace clic en un número de teléfono
Flujo de Datos
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: Extrae parámetros de URL
(gclid, utm_*, etc.)
JS->>JS: Almacena en sessionStorage
JS->>API: POST evento + parámetros
API->>API: Enriquece con GeoIP
API->>API: Analiza User-Agent
API->>API: Filtra bots
API->>Firehose: Envía evento enriquecido
Firehose->>S3: Almacena en bucket de análisisDetección de Bots
Filtramos el tráfico de bots usando múltiples señales:
Patrones de User-Agent: Cadenas de bots conocidos (Googlebot, Bingbot, etc.)
Patrones de comportamiento: Demasiado rápido, demasiadas solicitudes
Falta de JavaScript: Los bots a menudo no ejecutan JS
Cookie de exclusión: tv_exclude=true detiene todo el seguimiento
Protección de la Privacidad
Sin PII: Nunca almacenamos nombres, correos electrónicos, números de teléfono
Retención de datos: Los eventos se eliminan después de 30 días
Carga Condicional de Píxeles
Solo cargamos píxeles de seguimiento cuando es relevante:
Píxel de Google Ads: Solo si está presente gclid, gbraid, o wbraid, srsltid
Píxel de LinkedIn: Solo si está presente li_fat_id
Beneficio: Carga de páginas más rápida, menos sobrecarga de seguimiento
Detección de la Fuente de Tráfico
Detectamos la fuente de tráfico a partir de parámetros de URL:
Google Ads: gclid, gbraid, wbraid → utm_source=google_ads
Google Orgánico: srsltid → utm_source=google_search
Seguimiento de Conversiones
Rastreamos conversiones a través del embudo:
Visualización de producto → Añadir al carrito → Pago → Compra
Cada paso incluye:
-
ID del visitante (para atribución)
-
ID de sesión (para análisis de sesión)
-
Parámetros de campaña (para cálculo del ROI)
-
SKU del producto (para análisis de producto)
Seguimiento de Contactos de Leads
Cuando los usuarios nos contactan (WhatsApp, teléfono, correo electrónico), capturamos:
Método de contacto: WhatsApp, teléfono, correo electrónico
Parámetros de campaña: Desde cookies (ventana de 30 minutos)
Contexto del producto: En qué página de producto estaban
Beneficio: Atribuir conversiones offline a campañas online
Almacenamiento
Los eventos se almacenan en S3 a través de Kinesis Firehose:
Formato: Líneas JSON (un evento por línea)
Particionamiento: Por fecha (año/mes/día/hora)
Compresión: Gzip
Retención: 30 días
Consulta
Los eventos se consultan a través de AWS Athena:
Esquema: Definido en Glue Data Catalog
Consultas: SQL sobre datos en S3
Casos de uso: ROI de campañas, popularidad de productos, fuentes de tráfico
Referencias
Conceptos Técnicos
-
Análisis web - Wikipedia
-
Privacidad desde el diseño - Wikipedia
Servicios de AWS
-
Kinesis Firehose - Documentación de AWS
-
Athena - Documentación de AWS
Artículos Relacionados
- Arquitectura Multi-Servidor - Dónde se ejecuta el análisis
Resumen
Nuestro sistema de análisis rastrea el comportamiento del usuario respetando la privacidad:
Lado del cliente:
-
✅ Extraer parámetros de campaña de la URL
-
✅ Almacenar en sessionStorage (ámbito de sesión)
-
✅ Almacenar en cookies (30 min para atribución)
-
✅ Enviar eventos a la API
Lado del servidor:
-
✅ Enriquecer con GeoIP y User-Agent
-
✅ Filtrar tráfico de bots
-
✅ Enviar a Kinesis Firehose
-
✅ Almacenar en S3 (particionado por fecha)
Privacidad:
-
✅ No se almacena PII
-
✅ Retención de 30 días
Carga condicional:
-
✅ Píxel de Google Ads solo si está presente gclid
-
✅ Píxel de LinkedIn solo si está presente li_fat_id
Este enfoque equilibra la obtención de información con la privacidad y el rendimiento.