limecountDocumentaciónVolver al panel

docsPrivacidadLimpieza antes del envío

Limpieza antes del envío

Dos modos: el básico cuenta páginas vistas; eventos, campañas y tiempo de interacción requieren el modo ampliado habilitado y aceptación válida. Consulta modos de medición y consentimiento.

El tracker actual prepara cada evento en el navegador, antes de serializarlo. No envía la URL completa ni propiedades libres. La validación de la ingesta sigue siendo una segunda capa; no sustituye esta política local.

Instala el código actualizado

Copia el snippet nuevo desde la instalación de tu web. Es obligatorio data-host, que debe ser el dominio público de la web. La clave pública y el dominio identifican el sitio, no a la persona. Un script antiguo sin data-host no envía eventos con esta versión: actualiza las etiquetas antes de publicar.

Mantén referrerpolicy="no-referrer" y crossorigin="anonymous" en la etiqueta. Añade solo rutas, nombres de evento y categorías que hayas revisado. Ejemplo de configuración (sustituye la clave y el dominio por los de tu web):

<script
  defer
  referrerpolicy="no-referrer"
  crossorigin="anonymous"
  data-key="lc_xxxxxxxxxxxxxxxxxxxx"
  data-host="tu-web.example"
  data-paths="/,/precios,/blog/:articulo,/gracias"
  data-events="clic_registro,registro_completado"
  data-props='{"plan":["starter","pro"],"ubicacion":["cabecera","pie"]}'
  data-utm='{"utm_source":["newsletter"],"utm_medium":["email"],"utm_campaign":["lanzamiento"]}'
  src="https://lmcnt.eu/s.js"
></script>

No construyas estos atributos con datos de una sesión, usuario o formulario. Son un catálogo estático del sitio, igual para todos sus visitantes. La configuración se revisa al cargar el script y permanece fija durante esa carga.

Rutas

  • La raíz / se admite siempre.
  • Solo se envían rutas exactas o plantillas declaradas en data-paths.
  • En /blog/:articulo, cualquier segmento de artículo se sustituye por el texto literal :articulo. No se transmite su valor original. Cada parámetro representa un solo segmento; no se admiten comodines que copien texto libre.
  • Las rutas desconocidas se agrupan en /:redacted. Siguen contando como páginas vistas, con menos detalle.
  • Los fragmentos, credenciales de URL y consultas se eliminan. Solo se conservan las tres UTM cuyos valores estén declarados en el catálogo correspondiente.
  • Los cambios que solo modifican la consulta o el fragmento no generan una nueva página vista.

El host enviado es el dominio estático declarado, no un subdominio generado por visitante. El tracker admite ese host y su variante www; un subdominio público diferente necesita su propia declaración estática. No midas dominios o subdominios personales. En desarrollo local existe la excepción explícita data-local="1", que no debe usarse en producción.

La lista de parámetros permitidos del servidor no hace que el tracker envíe consultas. Es una segunda capa para otras integraciones, que necesitan su propia revisión de privacidad.

Eventos y propiedades

data-events contiene nombres fijos, por ejemplo registro_completado. Los nombres que no figuren en él se descartan. Los eventos automáticos (pageview, _engagement, outbound, download) siguen funcionando; no deben utilizarse como nombres de eventos personalizados.

Cada propiedad debe existir en data-props, y su valor debe coincidir exactamente, incluido el tipo, con una categoría declarada. Por ejemplo:

window.limecount.track('registro_completado', { plan: 'pro' });

Sin catálogo de propiedades, no se envía ninguna. Las propiedades desconocidas, objetos, arrays y valores fuera de catálogo se omiten; no se convierten a texto ni se recortan para que encajen. Algunas claves típicas de identificación se rechazan incluso si se intentan declarar.

No declares información personal como categoría. Un catálogo no convierte en anónimos datos de identidad, salud, intereses sensibles o grupos tan pequeños que permitan identificar a alguien. Las listas estáticas son una reducción del riesgo, no una detección infalible del significado de un texto.

Fuentes, descargas y datos técnicos

La procedencia no incluye ruta ni consulta. Algunos buscadores y redes se agrupan en dominios generales conocidos. Las demás fuentes externas aparecen como external.invalid, una etiqueta técnica fija que no hace ninguna petición a ese dominio.

Los eventos salientes no envían el destino original: usan esa misma categoría fija. Las descargas solo conservan una ruta o plantilla declarada; el resto se agrupa. El ancho de ventana se reduce a tres categorías (480, 900 o 1440), en lugar de transmitir su precisión original.

Transporte y exclusión

Se utiliza únicamente fetch con credentials: 'omit', referrerPolicy: 'no-referrer' y keepalive. No hay fallback a Beacon, porque no permite elegir esas dos políticas. Si el navegador no puede enviar la petición segura, el evento se pierde; no se reintenta con un transporte más permisivo.

El tracker respeta DNT y GPC antes de realizar peticiones de eventos. La exclusión manual funciona también en memoria si el almacenamiento local está bloqueado. El ajuste DNT/GPC del servidor sigue disponible como protección adicional para otras integraciones.

La dirección IP, el User-Agent y la cabecera Origin pueden ser visibles al servidor durante la conexión. El código de JavaScript no puede impedirlo; la ingesta no debe persistir IPs ni User-Agent completos. Sirve s.js desde un colector HTTPS independiente, sin cookies propias de cuentas, y revisa también los logs del proxy, CDN y balanceador. La etiqueta crossorigin omite credenciales en la descarga de un script de otro origen, pero no suprime cookies de un script del mismo origen.

Efecto sobre las estadísticas y despliegue

Esta política reduce deliberadamente el detalle: páginas no declaradas se agrupan, propiedades y campañas no configuradas desaparecen y algunas acciones excluidas no se cuentan. No compares sus cifras con las de un tracker más permisivo como si midieran exactamente lo mismo.

El script se comprueba contra un presupuesto de 4 KB gzip. La limpieza ha ampliado el presupuesto anterior de 2 KB. El límite de tamaño del cuerpo de cada evento sigue siendo 2.048 bytes.

Antes de servir la nueva versión, actualiza snippets y catálogos, construye el tracker, publica esa versión y vacía su caché. Las versiones antiguas o clientes alternativos no adquieren esta protección por una actualización de la documentación. El servidor no puede impedir retroactivamente que un cliente antiguo envíe información.

Consulta cómo se recogen los datos para conocer el almacenamiento, las limitaciones y los controles de producción que siguen pendientes.