CMP — Gestión de Consentimiento
El módulo CMP (Consent Management Platform) gestiona el ciclo de vida del consentimiento para cualquier tratamiento que requiera esa base legal según el Art. 12 de la Ley 21.719: cookies no esenciales, marketing, perfilamiento, comunicación comercial, geolocalización, transferencias internacionales, entre otros.
El CMP de DPOLab incluye una cadena de registros auditable ante la APDP, un widget JavaScript embebible, un paquete React listo para usar y notificaciones automáticas hacia sus sistemas de CRM o marketing cuando un titular modifica su consentimiento.
Ver también: Endpoints de API — CMP
Requisitos regulatorios
| Artículo | Obligación |
|---|---|
| Art. 12 Ley 21.719 | Consentimiento libre, específico, informado, inequívoco y demostrable |
| Art. 14 ter Ley 21.719 | Deber de informar al titular sobre cada finalidad del tratamiento |
| Art. 12 Ley 21.719 | Las cookies estrictamente esenciales no requieren consentimiento |
Los cinco requisitos del consentimiento válido bajo la Ley 21.719 — libre, específico, informado, inequívoco y demostrable — se traducen en las siguientes restricciones de diseño del CMP:
- Libre: botón "Rechazar todo" obligatorio y con igual prominencia que "Aceptar todo".
- Específico: un consentimiento por finalidad; marketing y analytics son propósitos separados.
- Informado: vínculo visible a la política de privacidad y descripción de cada propósito.
- Inequívoco: acción afirmativa; nunca casillas pre-marcadas ni "scroll = aceptación".
- Demostrable: registro inmutable con cadena de auditoría verificable.
La Ley 21.719 prohíbe el consentimiento implícito o pre-marcado (Art. 12). El widget fuerza el opt-in afirmativo: el banner no acepta nada hasta que el titular pulse "Aceptar" o configure sus preferencias.
Cómo acceder
Desde el dashboard, navega a Dashboard → CMP. Las sub-secciones disponibles son:
- Plantillas: avisos de consentimiento reutilizables.
- Registros: historial inmutable de consentimientos por plantilla.
- Webhooks: notificaciones automáticas hacia sistemas externos.
- Analytics: tasa de aceptación, retiros y actividad diaria.

Funcionalidades principales
| Funcionalidad | Descripción |
|---|---|
| 8 categorías de plantillas | Cookies, videovigilancia, perfilamiento, transferencia internacional, datos sensibles, uso adicional, monitoreo laboral y personalizada |
| 6 canales de recolección | Widget web, formulario con enlace o QR, notificación entrante desde sistema externo, integración programática, registro manual y Centro de Privacidad |
| Cadena de registros auditable | Cada registro queda enlazado al anterior con una firma de seguridad; es posible demostrar ante la APDP que ningún registro fue alterado |
| Widget JavaScript | Código embebible en cualquier sitio web; muestra el banner de consentimiento y es compatible con Google Consent Mode v2 |
| Paquete React | Componentes listos para aplicaciones React y Next.js (ConsentBanner, ConsentPreferences, ConsentGate) |
| Notificaciones automáticas | Aviso firmado a sus sistemas de CRM o marketing cada vez que un titular cambia su consentimiento; reintentos automáticos si el destino no responde |
| Retiro de consentimiento | Confirmación por correo electrónico (enlace de un solo uso válido por 1 hora) para validar el retiro |
| Analytics | Tasa de aceptación, retiros, aceptaciones por propósito y serie diaria |
| Protección contra bots | Alerta automática si el volumen de registros supera 10 veces el promedio de los últimos 30 días |
Bloqueo de scripts: El bloqueo automático de scripts de terceros (por ejemplo, píxeles de publicidad) hasta que el titular otorgue consentimiento está en desarrollo y estará disponible en futuras versiones de la plataforma.
Paso a paso
Crea la plantilla de consentimiento
Ve a Dashboard → CMP → Plantillas y haz clic en Nueva plantilla. Completa:
- Nombre: identificador interno (ej.: "Newsletter Andes Retail").
- Categoría: selecciona entre las 8 categorías disponibles según el tipo de tratamiento.
- Dominio asociado: configurado previamente en Configuración → Dominios.
- Entidad legal: entidad responsable del tratamiento.
- Propósitos: agrega al menos uno; define un nombre visible, descripción y si es esencial.
- Canales habilitados: selecciona los canales por los que se recolectará consentimiento.
Al guardar, DPOLab genera un código único para la plantilla. Mientras la plantilla esté en modo sandbox, los registros quedan marcados como prueba y no tienen validez legal.

Embebe el widget en tu sitio
Agrega el fragmento de código en el encabezado o en el layout raíz de tu sitio:
<script
src="https://sdk.dpolab.com/cmp.js"
data-widget-key="cmp_XXXXXXXXXXXXXXXXX"
data-position="bottom"
data-gtm-consent="true"
async
></script>El widget descarga la configuración de la plantilla, renderiza el banner de consentimiento y gestiona las preferencias del titular.
Etiqueta los elementos a controlar
Para controlar qué scripts o contenidos se cargan según el consentimiento otorgado, usa el atributo de datos en el elemento correspondiente:
<!-- Script de analytics — controlado por consentimiento -->
<script
type="text/plain"
data-dpolab-consent="analytics"
data-dpolab-original-type="text/javascript"
async
src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"
></script>El bloqueo automático de scripts está en desarrollo y estará disponible en futuras versiones. Por ahora, el atributo queda registrado pero el script se carga normalmente.
Usa el paquete React en aplicaciones Next.js
import { ConsentBanner, ConsentGate, useConsent } from '@dpolab/cmp-react'
export default function RootLayout({ children }) {
return (
<html>
<body>
<ConsentBanner widgetKey="cmp_XXXXXXXXXXXXXXXXX" />
{children}
<ConsentGate widgetKey="cmp_XXXXXXXXXXXXXXXXX" purpose="marketing">
<FacebookPixelScript />
</ConsentGate>
</body>
</html>
)
}El widget JavaScript y el paquete React comparten el mismo almacenamiento local sin conflicto cuando coexisten en la misma página.
Configura notificaciones automáticas hacia sistemas externos (Professional+)
En la pestaña Webhooks de la plantilla, agrega un destino:
- URL del destino: dirección de tu CRM o sistema de marketing.
- Eventos: consentimiento otorgado, retirado o actualizado.
- Código de verificación: generado por DPOLab. Úsalo en tu sistema receptor para comprobar que la notificación proviene realmente de DPOLab.
Activa la plantilla
Haz clic en Activar plantilla. A partir de este momento, el widget público muestra el banner y los registros quedan enlazados en la cadena de auditoría. No es posible modificar propósitos en una plantilla activa sin crear una nueva versión del aviso.

Verifica la integridad de los registros
Para demostrar ante la APDP que el historial de consentimientos no fue manipulado, consulta el informe de integridad desde el menú de la plantilla o a través de la API de verificación.
El sistema recorre todos los registros en orden, recalcula cada firma de seguridad y confirma que la cadena está íntegra o indica cuál fue el primer registro afectado.

Campos y datos
Plantilla de consentimiento
| Campo | Obligatorio | Descripción |
|---|---|---|
| Nombre | Sí | Nombre interno de la plantilla |
| Categoría | Sí | Una de las 8 categorías: Cookies, Videovigilancia, Perfilamiento, Transferencia Internacional, Datos Sensibles, Uso Adicional, Monitoreo Laboral, Personalizada |
| Dominio | Sí | Dominio asociado (configurado en Configuración → Dominios) |
| Entidad legal | Sí | Entidad legal responsable |
| Propósitos | Sí | Al menos un propósito no esencial |
| Canales | No | Widget web, Formulario, Notificación externa, API, Manual, Centro de Privacidad |
| Regulación | No | Ley 21.719, GDPR, LGPD, CCPA |
Registro de consentimiento
| Campo | Descripción |
|---|---|
| Acción | Otorgado, Retirado o Actualizado |
| Canal de origen | Widget web, Formulario, Notificación externa, API, Manual, Centro de Privacidad |
| Preferencias | Opciones seleccionadas por el titular para cada propósito |
| Firma de seguridad | Encadenada al registro anterior para garantizar inmutabilidad |
| Versión del aviso | Versión vigente al momento del registro |
Estados y flujo
| Estado | Descripción |
|---|---|
| Sandbox (inactiva) | Plantilla en borrador; el banner funciona pero los registros se marcan como prueba |
| Activa | Plantilla activa; registros con validez legal |
| Desactivada | El widget oculta el banner; los registros anteriores se conservan |
Restricciones por plan
| Aspecto | Starter | Professional | Business | Enterprise |
|---|---|---|---|---|
| Plantillas de consentimiento | 3 | 10 | 50 | ∞ |
| Dominios para CMP | 1 | 3 | 10 | ∞ |
| Notificaciones salientes | 0 | 3 | 10 | ∞ |
| API programática | No | Sí | Sí | Sí |
| IDV avanzado (L3/L4) | No | No | Sí | Sí |
| Branding propio en formulario | No | No | Sí | Sí |
| Cadena de registros auditable | Sí | Sí | Sí | Sí |
Relación con otros módulos
| Módulo | Relación |
|---|---|
| Plantillas de Consentimiento | Las 8 categorías y los 6 canales se comparten; este módulo es la vista de gestión del CMP |
| Centro de Privacidad | El portal unificado muestra los consentimientos del titular y permite actualizarlos |
| Política de Cookies | El módulo de Política de Cookies genera el aviso a partir de los propósitos configurados en el CMP |
| RAT | Los propósitos de marketing y analytics deben coincidir con las actividades de tratamiento registradas en el RAT |
| Governance | Las métricas de aceptación y retiros forman parte del puntaje de cumplimiento |
| Dominios | Cada plantilla se asocia a un dominio verificado |
Ver también
Ver también: Endpoints de API — CMP