El tratamiento de datos personales requiere una base jurídica adecuada; el consentimiento es una base posible, no un requisito universal para todo tratamiento. Si te basas en el consentimiento, este debe ser otorgado libremente, específico, informado, inequívoco y revocable. Consulta la guía del CEPD sobre el tratamiento lícito de datos. Evalúa por separado las normas aplicables sobre cookies y almacenamiento en el dispositivo con tu asesor de privacidad.
Los controles que figuran a continuación realizan distintas funciones técnicas. Ni una casilla de verificación de la política ni la carga diferida garantizan por sí solas el cumplimiento normativo. Una barrera dentro del widget no impide que el script del widget, las solicitudes de red o el almacenamiento del navegador se utilicen antes de que comience una conversación.
Enfoque 1 - Consentimiento de privacidad dentro del widget. Exige a los visitantes que acepten tu Política de privacidad directamente dentro del widget de chat antes de que puedan iniciar una conversación o enviar información personal.
Enfoque 2 - Carga tras el consentimiento. Evita que el script del chatbot se cargue en absoluto hasta que el visitante otorgue su consentimiento de cookies o marketing a través de tu plataforma de gestión del consentimiento (CMP).
Enfoque 1: Consentimiento de privacidad dentro del widget
ChatLab cuenta con ajustes de consentimiento integrados que te permiten exigir a los visitantes que acepten tu Política de privacidad antes de interactuar con el chatbot. El propio widget gestiona el flujo de consentimiento - no se necesitan herramientas externas.
Cómo acceder a los ajustes
Abre tu chatbot en el panel, ve a la pestaña Settings (Ajustes) y luego haz clic en Consent & Privacy (Consentimiento y privacidad) en la barra lateral izquierda.
Opciones de consentimiento
La tarjeta Request user consent (Solicitar consentimiento del usuario) tiene cuatro interruptores.
- Require Privacy Policy consent before starting a new conversation (Exigir consentimiento de la Política de privacidad antes de iniciar una nueva conversación) - Cuando está activado, los visitantes deben aceptar la política antes de enviar su primer mensaje. Esta es la opción más amplia: cubre automáticamente todos los formularios (captación de leads, soporte humano y live chat), por lo que los otros tres interruptores quedan desactivados.
- Require Privacy Policy consent for human support (Exigir consentimiento de la Política de privacidad para soporte humano) - Añade una casilla de consentimiento al formulario de contacto de soporte humano.
- Require Privacy Policy consent for lead collection (Exigir consentimiento de la Política de privacidad para captación de leads) - Añade una casilla de consentimiento al formulario de captación de leads.
- Require Privacy Policy consent for live chat session (Exigir consentimiento de la Política de privacidad para sesión de Live Chat) - Añade una casilla de consentimiento al formulario de live chat.
Si solo necesitas el consentimiento para interacciones específicas (por ejemplo, solo al recopilar datos personales mediante leads), activa los interruptores individuales en lugar del de "nueva conversación".
Personalización de los mensajes de consentimiento
Debajo de los interruptores, la tarjeta Consent & Privacy te permite configurar lo que ven los visitantes.
- Consent intro message (Mensaje de introducción al consentimiento) - El texto que se muestra encima de la casilla de consentimiento. Por ejemplo: "Confirma que has leído y aceptas nuestra Política de privacidad para continuar."
- Message to inform users about Privacy Policy consent requirement (Mensaje para informar a los usuarios sobre el requisito de consentimiento de la Política de privacidad) - El texto de la etiqueta de la casilla de verificación. Utiliza markdown para incluir un enlace a tu política de privacidad:
I have read and accept the [Privacy Policy](https://www.example.com/privacy-policy).
Después de configurar, espera al estado de guardado. Prueba en una nueva sesión de visitante, incluyendo cada formulario que utilices. Desactivar la opción de nueva conversación no restaura automáticamente los interruptores de formularios individuales que había desactivado.
Enfoque 2: Carga tras el consentimiento (integración con CMP)
Si clasificas el chatbot como una herramienta de marketing según tu política de cookies, debes evitar que el script de ChatLab se cargue hasta que el visitante otorgue su consentimiento. Esto requiere la integración con una plataforma de gestión del consentimiento (CMP).
Código de inserción predeterminado de ChatLab
El código de inserción estándar de ChatLab tiene el siguiente aspecto:
<script>
window.aichatbotApiKey = "YOUR_API_KEY_HERE";
window.aichatbotProviderId = "YOUR_PROVIDER_ID_HERE";
</script>
<script src="https://script.chatlab.com/aichatbot.js" id="YOUR_API_KEY_HERE" defer></script>
Este código se carga inmediatamente cuando se abre la página, independientemente de las preferencias de consentimiento del visitante.
Puedes encontrar tu API Key y tu Provider ID en la pestaña Deploy (Publicar) de tu chatbot.
Utiliza el siguiente patrón como ejemplo de implementación y, a continuación, valídalo con tu CMP y tu sitio web reales. Los ejemplos no constituyen una certificación ni sustituyen a las pruebas.
Preparar un cargador condicional único
Elimina la instalación normal e incondicional de ChatLab de tu sitio, plugins y gestor de etiquetas para que solo haya una ruta de carga. Copia tu clave pública de inserción y tu ID de proveedor desde Deploy, no una clave API secreta ck_ o mk_. Si tu despliegue utiliza un host de scripts personalizado con tu marca, conserva la URL de Deploy.
Define esta función auxiliar antes de registrar los listeners de consentimiento. No carga ChatLab hasta que se invoque con true.
<script>
window.applyChatLabConsent = function (allowed) {
if (!allowed) {
if (window.chatLabLoadedAfterConsent) window.location.reload();
return;
}
if (window.chatLabLoadedAfterConsent) return;
window.chatLabLoadedAfterConsent = true;
window.aichatbotApiKey = "YOUR_API_KEY_HERE";
window.aichatbotProviderId = "YOUR_PROVIDER_ID_HERE";
var script = document.createElement("script");
script.src = "https://script.chatlab.com/aichatbot.js";
script.id = window.aichatbotApiKey;
script.defer = true;
document.head.appendChild(script);
};
</script>
En caso de revocación, este ejemplo recarga la página después de que la CMP haya guardado la opción rechazada. La siguiente carga de la página debe permanecer bloqueada. Una recarga puede descartar datos no guardados en la página, por lo que debes incorporarla adecuadamente al flujo de revocación de tu sitio. El mero hecho de eliminar el elemento del script no detiene el código ya ejecutado, las conexiones ni un widget existente. La recarga tampoco borra los datos recopilados previamente ni los registros de consentimiento almacenados.
Cookiebot
Elige la categoría que coincida con tus finalidades documentadas; marketing aquí es un ejemplo, no una clasificación impuesta por ChatLab. Cookiebot expone el objeto singular consent. Sus eventos de disponibilidad, aceptación y rechazo te permiten volver a verificar esa categoría. Consulta la documentación para desarrolladores de Cookiebot.
Instala este listener antes de que la CMP pueda emitir su evento inicial:
<script>
function checkChatLabCookiebotConsent() {
window.applyChatLabConsent(
!!(window.Cookiebot && window.Cookiebot.consent &&
window.Cookiebot.consent.marketing)
);
}
window.addEventListener("CookiebotOnConsentReady", checkChatLabCookiebotConsent);
window.addEventListener("CookiebotOnAccept", checkChatLabCookiebotConsent);
window.addEventListener("CookiebotOnDecline", checkChatLabCookiebotConsent);
checkChatLabCookiebotConsent();
</script>
Usercentrics
Registra ChatLab como un servicio con la finalidad o categoría que hayas evaluado. Utiliza la implementación correspondiente a la versión de Web CMP que tengas instalada. Cuando los eventos personalizados de window estén disponibles, configura un evento llamado ucEvent en Implementation > Data Layer & Events (Implementación > Capa de datos y eventos), y luego registra el listener antes de que se inicialice la CMP. El nombre del servicio en el ejemplo debe coincidir exactamente con tu configuración.
<script>
window.addEventListener("ucEvent", function (event) {
if (event.detail && event.detail.event === "consent_status") {
window.applyChatLabConsent(event.detail.ChatLab === true);
}
});
</script>
Esto sigue la guía de eventos personalizados de Usercentrics. Confirma que tu configuración emita tanto la opción almacenada inicialmente como las actualizaciones posteriores. Si no lo hace, utiliza la API de estado inicial documentada para tu versión; no asumas que un listener por sí solo gestionará a los visitantes que regresan.
Google Tag Manager
- Integra tu CMP con GTM y establece los valores predeterminados de consentimiento denegado requeridos antes de que se ejecuten otras etiquetas.
- Crea una etiqueta de tipo Custom HTML (HTML personalizado) que contenga el cargador condicional y una llamada a
applyChatLabConsent(true). - Abre los Consent Settings (Ajustes de consentimiento) de la etiqueta y configura Additional Consent Checks (Comprobaciones adicionales de consentimiento) para los tipos de consentimiento elegidos para este servicio.
- Utiliza como activador el evento de capa de datos real de consentimiento listo/actualización proporcionado por tu CMP. Asegúrate de cubrir también a los visitantes que regresan y cuyo consentimiento ya había sido otorgado.
- Gestiona la revocación a través del flujo de elección guardada y recarga de página de la CMP descrito anteriormente.
- Realiza pruebas en el modo Vista previa de GTM antes de publicar.
Una etiqueta HTML personalizado no se vuelve compatible con el consentimiento simplemente porque tu sitio web tenga un banner. No copies un nombre de evento ficticio como CookieConsentDeclaration; las variables de evento y consentimiento deben existir en tu contenedor. Consulta los ajustes de consentimiento de etiquetas de Google.
Verificar antes de publicar
En una sesión nueva del navegador, comprueba estos casos utilizando el panel Red (Network) del navegador:
- Antes de cualquier elección y tras un rechazo: no debe producirse ninguna solicitud del cargador de ChatLab, del widget ni de la API.
- Tras la aprobación: el widget se carga una vez y puede iniciar una conversación.
- Al regresar con la aprobación guardada: el widget se carga sin necesidad de hacer otro clic.
- Tras la revocación: la página se recarga, la opción denegada persiste y ChatLab permanece sin cargar.
- Con el consentimiento dentro del widget activado: aparece la casilla de verificación de la política correspondiente antes de la interacción configurada.
Inspecciona también los embeds en iframe, otros plugins y las etiquetas duplicadas: bloquear un script no bloquea una segunda instalación. Para los controles de retención de datos, consulta Eliminar tus datos.