Artículo · Compliance · Tracking

Consent Mode v2 sin Cookiebot: cómo cumplir sin pagar 150–500 €/año.

Desde marzo de 2024, si usas Google Ads o GA4 en Europa, Consent Mode v2 es obligatorio. Cookiebot, OneTrust y similares empiezan en 12€/mes y escalan rápido. Para sites con tráfico modesto es un coste absurdo cuando implementarlo vanilla lleva un día. Te cuento exactamente cómo.

Banner de cookies europeo con opciones Aceptar, Rechazar y Personalizar con el mismo peso visual
El requisito de 'Aceptar' y 'Rechazar' con equivalencia visual es la piedra angular de un banner legal en España.

1. Qué es Consent Mode v2 y por qué importa

Consent Mode es el mecanismo oficial de Google para que tu sitio le diga a GA4/Ads: "este usuario ha consentido analytics/marketing" o "no ha consentido". A partir de marzo de 2024, Google bloquea las remarketing audiences y reduce la señal de conversión si tu site NO envía estas señales de consentimiento. Efecto práctico: tus campañas rinden peor y tu atribución se rompe.

Las 6 categorías que Consent Mode v2 maneja:

  • ad_storage — cookies de publicidad
  • ad_user_data — datos de usuario para Ads
  • ad_personalization — personalización publicitaria
  • analytics_storage — cookies analíticas
  • functionality_storage — sesión, carrito, login
  • security_storage — CSRF, anti-fraude

Las 4 primeras requieren consentimiento explícito. Las 2 últimas son "esenciales" y pueden estar activas por defecto. Tu banner tiene que permitir al usuario decidir categoría por categoría (o al menos separar "analítica" de "marketing").

2. Por qué NO necesitas Cookiebot / OneTrust

Las soluciones comerciales hacen 3 cosas:

  1. Pintan un banner bonito con tus textos legales.
  2. Escanean tu web y clasifican las cookies detectadas.
  3. Llaman a gtag('consent', 'update', ...) cuando el usuario elige.

La funcionalidad 3 es 30 líneas de JavaScript. La 1 es HTML/CSS normal. La 2 es cómoda pero, en la mayoría de sites, conoces perfectamente qué cookies pones: Google Analytics, Meta Pixel, LinkedIn Insight, alguna herramienta de chat. Listarlas a mano tarda 10 minutos y queda en la política de cookies.

El coste real de Cookiebot / OneTrust:

  • 12–40€/mes escalando con visitas/propiedades.
  • Dependencia externa: si su CDN falla, tu banner no carga y pierdes consentimientos.
  • Peso: añaden más de 100 KB de JavaScript adicional sólo para el banner.
  • Control: sus textos son genéricos, cambiarlos requiere pagar tier superior.
Flujo de Consent Mode v2 vanilla El head inyecta consent default-denied. Si hay decisión guardada se aplica antes de que carguen los scripts de tracking. Si no, se muestra el banner; la elección del usuario dispara gtag consent update y sólo entonces las categorías aceptadas empiezan a enviar eventos. FLUJO CONSENT MODE V2 · EL ORDEN IMPORTA 1 · HEAD consent: default denied 2 · STORAGE ¿hay decisión previa? 3 · UPDATE gtag('consent','update') 4 · TRACKING categorías aceptadas no 2b · BANNER usuario decide guarda + update
El orden es innegociable: el default denied tiene que inyectarse antes de que cargue cualquier script de tracking; si no, el consent se ignora.

3. Arquitectura de la implementación vanilla

La estructura que usamos en garbonmedia.com (open source por definición, inspecciónala en devtools):

  1. Consent Mode "default-denied" en el <head>. Antes de cualquier script de tracking, inyectamos gtag('consent', 'default', {...todo denied...}). Crítico que sea lo primero — si un script de tracking carga antes, el consent se ignora.
  2. Aplicar decisión guardada también en <head>. Si el usuario ya decidió en una visita anterior (localStorage['gm_consent_v1']), aplicamos gtag('consent', 'update', ...) antes de que los scripts de analytics disparen su primer page_view.
  3. Cargar scripts de tracking (GA4, Meta, LinkedIn) sin condiciones. Respetarán el consent state actual.
  4. Banner al final del body, oculto con CSS si hay decisión guardada. JS sólo lo muestra si el usuario no ha decidido.
  5. Click en "Aceptar" / "Rechazar" / "Personalizar": guarda en localStorage + llama gtag('consent', 'update', ...). Esto es lo único que "activa" el tracking para esa sesión.

4. Pitfalls comunes que hacen tu banner inválido

AEPD ha empezado a sancionar proactivamente. Estos son los fallos que invalidan un banner:

  • Aceptar más visible que rechazar: si "Aceptar" es verde-grande y "Rechazar" es gris-pequeño, es ilegal. Deben tener peso visual equivalente.
  • No tener opción rechazar en primer nivel: "Aceptar" + "Personalizar" (que lleva a otro modal) es ilegal. Rechazar tiene que ser un click.
  • Pre-marcar las casillas de analítica/marketing en el panel detallado. Deben estar en "no" por defecto.
  • Cargar tracking antes del consent: cualquier fetch a Google Analytics ANTES de que el usuario acepte es una infracción.
  • No dejar revocar el consentimiento. Debe haber un link permanente visible (típicamente en footer) para reabrir el banner.

El nuestro cumple los 5. Está en assets/js/consent.js + views/partials/consent-banner.php.

5. ¿Y el PDF de política de cookies?

Sí, necesitas un texto publicado con:

  • Qué es una cookie (explicación genérica).
  • Qué cookies usa tu site (nombre, finalidad, duración, categoría).
  • Cómo gestionarlas desde el navegador (links a Chrome, Firefox, Safari, Edge).
  • Link al banner para revocar el consentimiento.

Una página /cookies bien redactada + el banner funcional es lo que AEPD exige. Nada más.

Cuándo SÍ tiene sentido Cookiebot

Para ser justos: si tu site tiene cientos de cookies de terceros, si cambian con frecuencia, o si compliance exige auditoría automatizada periódica, Cookiebot (u Onetrust) tienen sentido. Para una web corporativa con GA4 + Meta + LinkedIn, es matar moscas a cañonazos.

¿Prefieres que lo revisemos contigo? Escríbenos por /contacto — primera llamada sin compromiso, respuesta en menos de 24h laborables.

El boletín del taller

Un email cada dos semanas con lo que aprendemos trabajando.

Casos reales, decisiones técnicas con números y lecturas curadas de lo más relevante del sector. Sin "tips de LinkedIn" ni urgencias fabricadas.

También puedes escribirnos si prefieres hablar antes.

Antes de cerrar

Un email cada dos semanas con lo que aprendemos.

Casos reales, decisiones técnicas con números, lecturas curadas. Sin "tips de LinkedIn", sin spam, sin emails en fin de semana.

Suscribirme a la newsletter