Consentimiento
Cómo se comporta el SDK con y sin consentimiento.
Growth Lab trata la analítica y la grabación de sesiones como dos permisos distintos. Aceptar que midas conversiones no es aceptar que grabes la pantalla.
Declarar consentimiento
GrowthLab.setConsent({ analytics: true, replay: false });
El valor se guarda en localStorage y se envía con cada lote de eventos. Puedes llamarlo tantas veces como cambie la decisión del visitante.
Los dos modos
En Sitios → Privacidad eliges si tu sitio requiere consentimiento.
requireConsent: false (por defecto)
El SDK mide salvo que el visitante haya rechazado explícitamente.
| Estado | Analítica | Replay |
|---|---|---|
| Sin declarar | Sí | Sí |
{ analytics: true, replay: true } |
Sí | Sí |
{ analytics: true, replay: false } |
Sí | No |
{ analytics: false, replay: false } |
No | No |
Adecuado para jurisdicciones donde la analítica de primera parte no requiere opt-in previo.
requireConsent: true
El SDK no mide nada hasta que se conceda permiso.
| Estado | Analítica | Replay |
|---|---|---|
| Sin declarar | No | No |
{ analytics: true, replay: false } |
Sí | No |
{ analytics: true, replay: true } |
Sí | Sí |
{ analytics: false, replay: true } |
No | No |
La ausencia de consentimiento significa no, nunca "asumamos que sí".
Fíjate en la última fila: el replay nunca se activa sin analítica. Grabar la pantalla de alguien que rechazó ser medido sería incoherente, así que el permiso de replay depende del de analítica.
Qué sigue funcionando sin consentimiento
Dos cosas, ambas deliberadas:
Los experimentos siguen aplicándose. Un visitante que rechaza la analítica ve la variante que le corresponde. La asignación es determinística y local: no requiere enviar nada al servidor. Simplemente su exposición no se registra, así que no entra en el análisis.
Los errores del SDK sí se reportan. El evento sdk_error no está sujeto a consentimiento porque no contiene datos del visitante —solo un código de error y el experimento afectado— y es la única forma de detectar que una variante está rompiendo tu sitio. Sin esa señal, un despliegue defectuoso sería invisible.
Verificación en el servidor
El consentimiento se comprueba dos veces: en el SDK antes de encolar, y en el colector antes de almacenar. La segunda comprobación es la que cuenta.
La página de un cliente puede modificarla cualquiera. Un SDK desactualizado, un selector mal configurado o una manipulación del cliente no deben poder eludir la política. Por eso el colector descarta los eventos sujetos a consentimiento cuando el sitio lo requiere y el lote no lo trae.
Para el replay, el consentimiento viaja en la cabecera X-GrowthLab-Consent, no en el cuerpo: así se comprueba antes de procesar un payload que puede pesar megabytes.
Integración con banners
Modo de consentimiento de Google
gtag('consent', 'default', { analytics_storage: 'denied' });
// Cuando el visitante acepta:
gtag('consent', 'update', { analytics_storage: 'granted' });
GrowthLab.setConsent({ analytics: true, replay: false });
Cookiebot / OneTrust / similares
Escucha el evento de tu proveedor y traduce:
window.addEventListener('CookiebotOnAccept', function () {
GrowthLab.setConsent({
analytics: Cookiebot.consent.statistics,
// Pide un permiso separado para grabación si tu banner lo soporta.
replay: Cookiebot.consent.statistics,
});
});
Recomendación: añade una casilla propia para la grabación de sesiones. Es más honesto con el visitante y reduce tu exposición.
Retirar consentimiento
GrowthLab.setConsent({ analytics: false, replay: false });
El SDK deja de enviar inmediatamente. Los datos ya recibidos siguen sujetos a la retención configurada — retirar el consentimiento detiene la recolección, no borra el historial. Para eliminar datos ya almacenados, usa la eliminación de sitio o contacta soporte.