Cómo configurar el modo de consentimiento en sitios web

Esta página está dirigida a los desarrolladores que mantienen su propia solución de consentimiento en su sitio web y desean integrar el modo de consentimiento. Para obtener una introducción al modo de consentimiento, lee el Resumen del modo de consentimiento. Si utilizas una plataforma de administración de consentimiento (CMP) para obtener el consentimiento de los usuarios, obtén más información para configurar el modo de consentimiento con una CMP.

Puedes implementar el modo de consentimiento de forma básica o avanzada. Consulta los lineamientos de tu empresa para elegir un método de implementación y los valores predeterminados que debes establecer. Obtén más información sobre el modo de consentimiento básico y el avanzado.

Antes de comenzar

Ten en cuenta lo siguiente antes de implementar el modo de consentimiento:

  • Si utilizas Tag Manager y deseas mantener tu propio banner, el enfoque recomendado es cargarlo a través del contenedor de Tag Manager. Para ello, debes crear una plantilla del modo de consentimiento. Como alternativa, puedes usar una plantilla del modo de consentimiento de la Galería de plantillas de la comunidad.

  • Si usas gtag.js, asegúrate de haber instalado la etiqueta de Google en todas las páginas de tu sitio web. El código del modo de consentimiento se agrega a cada página de tu sitio web.

Para configurar el modo de consentimiento, debes seguir estos pasos:
  1. Antes de que un usuario otorgue su consentimiento: Establece el estado de consentimiento predeterminado.
  2. Actualiza el estado del consentimiento según la interacción del usuario con la configuración del consentimiento.

Establece un valor predeterminado para cada tipo de consentimiento que utilices. De forma predeterminada, no se establece ningún valor para el modo de consentimiento.

Se recomienda establecer la configuración predeterminada del consentimiento para las regiones en las que se muestran banners de consentimiento a los visitantes. Esto ayuda a preservar la medición en las regiones en las que se requieren banners de consentimiento y las etiquetas de Google ajustan su comportamiento en consecuencia. También evitas cualquier pérdida de medición en los casos en que no hay banners de consentimiento o estos no se aplican. Consulta Comportamiento específico de la región.

Tag Manager

Cuando uses Google Tag Manager, crea tu propia plantilla con las APIs de consentimiento de Tag Manager. El siguiente ejemplo está disponible para usarlo como punto de partida.

Usa las APIs específicas de Tag Manager para administrar los estados de consentimiento setDefaultConsentState y updateConsentState. La API de gtagSet se puede usar para establecer de forma opcional la configuración de transferencia de ads_data_redaction y URL, según corresponda.

gtag.js

Para ajustar las capacidades de medición predeterminadas, llama al comando gtag('consent', 'default', ...) en cada página de tu sitio antes de cualquier comando que envíe datos de medición (como config o event).

Por ejemplo, para establecer el rechazo del consentimiento para todos los parámetros de forma predeterminada, haz lo siguiente:

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});

Opcional: Realiza la integración en plataformas de administración de consentimiento asíncronas

Si tu banner se carga de forma asíncrona, es posible que no siempre se ejecute antes que tus etiquetas de Google. Para controlar estas situaciones, especifica wait_for_update junto con un valor en milisegundos para controlar cuánto tiempo esperar antes de enviar los datos.

Por ejemplo, para rechazar ad_storage en una página en particular de forma predeterminada, pero permitir que tu CMP actualice el estado de consentimiento, usa wait_for_update. En el siguiente código, ad_storage se establece de forma predeterminada en denied, y la herramienta de consentimiento tiene 500 milisegundos para llamar a gtag('consent', 'update', ...) antes de que se activen las etiquetas:

  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'wait_for_update': 500
  });

Tag Manager

Cuando usas una plantilla del modo de consentimiento, el consentimiento del usuario debería actualizarse automáticamente cuando este interactúa con el banner.

Si creas una plantilla del modo de consentimiento por tu cuenta, usa las APIs específicas de Tag Manager para administrar los estados de consentimiento setDefaultConsentState y updateConsentState. La API de gtagSet se puede usar para establecer de forma opcional la configuración de transferencia de ads_data_redaction y URL, según corresponda.

gtag.js

Para enviar el estado de consentimiento del usuario, usa el comando update. Dado que el modo de consentimiento no guarda las elecciones de consentimiento, actualiza el estado de consentimiento en cuanto un usuario interactúe con tu solución de administración del consentimiento. Después de que un usuario otorga su consentimiento, conserva su elección y llama al comando de actualización según corresponda en las páginas posteriores.

Es tu responsabilidad asegurarte de que se establezcan los valores correctos para todos los tipos de consentimiento. Para obtener todos los detalles sobre los tipos admitidos, consulta la referencia de la API.

En el siguiente ejemplo de código, se muestra cómo actualizar el estado de consentimiento a granted cuando el usuario acepta todas las opciones:

<!-- Send consent updates when users interact with your consent banner -->
<script>
function allConsentGranted() {
  gtag('consent', 'update', {
    'ad_user_data': 'granted',
    'ad_personalization': 'granted',
    'ad_storage': 'granted',
    'analytics_storage': 'granted'
  });
}
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
  <button onclick="allConsentGranted()">Accept all</button>
  ...
</body>

Los usuarios pueden cambiar sus preferencias de consentimiento después de la interacción inicial. Por ejemplo, un usuario que inicialmente otorgó su consentimiento puede decidir revocarlo más tarde a través del panel de configuración de tu sitio web.

Tag Manager

Si utilizas una plantilla del modo de consentimiento, el consentimiento del usuario debería actualizarse automáticamente cuando este interactúe con tu banner o panel de configuración.

Si compilas tu propia plantilla del modo de consentimiento, usa la API de updateConsentState para actualizar el estado de consentimiento cuando un usuario confirme sus nuevas preferencias.

gtag.js

Para actualizar el estado de consentimiento en cualquier momento, usa el comando update. Este comando se usa para cualquier cambio en el estado de consentimiento, incluido el cambio de 'granted' a 'denied'.

Ejemplo: Revocación del consentimiento

Si un usuario otorgó previamente su consentimiento para analytics_storage y ad_storage, pero ahora desea rechazarlo, envía una llamada a update que refleje su nueva elección:

// User updates their settings to deny consent
gtag('consent', 'update', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied'
});

Consideraciones sobre la implementación:

  1. Persistencia: Asegúrate de que las selecciones de consentimiento actualizadas del usuario persistan, por ejemplo, en una cookie propia o en el almacenamiento local, de modo que se establezca el estado correcto en las cargas de página posteriores.
  2. Momento: Llama al comando de actualización en cuanto el usuario confirme sus nuevas preferencias en la interfaz de configuración del consentimiento de tu sitio.

Ejemplo de implementación

En el siguiente ejemplo, se establecen varios parámetros del modo de consentimiento en denied de forma predeterminada. Después de que un usuario indica sus opciones de consentimiento, los parámetros pertinentes se actualizan a granted.

Tag Manager

En el caso de los sitios que utilizan Tag Manager, recomendamos usar una CMP para controlar las actualizaciones de las opciones de consentimiento de los visitantes. Las CMPs proporcionan plantillas en la Galería de plantillas de la comunidad para crear una etiqueta que administre el modo de consentimiento.

Si no es posible usar una plantilla, puedes actualizar el código de tu página de la siguiente manera. El orden del código aquí es fundamental. Si se llama a tu código de consentimiento en un orden incorrecto, los consentimientos predeterminados no funcionarán.

<script>
  // Define dataLayer and the gtag function.
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Set default consent to 'denied' as a placeholder
  // Determine actual values based on your own requirements
  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'analytics_storage': 'denied'
  });
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

<!-- Send consent updates when users interact with your consent banner -->
<script>
  function allConsentGranted() {
    gtag('consent', 'update', {
      'ad_user_data': 'granted',
      'ad_personalization': 'granted',
      'ad_storage': 'granted',
      'analytics_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
  <button onclick="allConsentGranted()">Accept all</button>
  ...
</body>

gtag.js

El orden del código aquí es fundamental. Si tu código de consentimiento se llama fuera de orden, no funcionarán los consentimientos predeterminados. Según los requisitos comerciales, los detalles pueden variar, pero, en general, el código debe ejecutarse en el siguiente orden:

  1. Carga la etiqueta de Google. Este es el código de tu fragmento predeterminado. El fragmento predeterminado se debe actualizar (consulta más abajo) para incluir una llamada a gtag('consent', 'default', ...).

  2. Carga tu solución de consentimiento. Si tu solución de consentimiento se carga de forma asíncrona, consulta Integración con plataformas de administración de consentimiento asíncronas para asegurarte de que esto suceda en el orden correcto.

  3. Si tu plataforma de consentimiento no lo maneja, llama a gtag('consent', 'update', ...) después de que el usuario otorgue su consentimiento.

<script>
// Define dataLayer and the gtag function.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

// Set default consent to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="//www.googletagmanager.com/gtag/js?id=TAG_ID">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  gtag('js', new Date());
  gtag('config', 'TAG_ID');
</script>

<!-- Send consent updates when users interact with your consent banner -->
<script>
  function allConsentGranted() {
    gtag('consent', 'update', {
      'ad_user_data': 'granted',
      'ad_personalization': 'granted',
      'ad_storage': 'granted',
      'analytics_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent function when a user interacts with your banner -->
<body>
  ...
  <button onclick="allConsentGranted()">Accept all</button>
  ...
</body>

Como parte del compromiso permanente de Google con un ecosistema de publicidad digital centrado en la privacidad, fortaleceremos la aplicación de nuestra política de consentimiento de usuarios de la UE.

Obtén más información sobre las actualizaciones del modo de consentimiento para el tráfico en el Espacio Económico Europeo (EEE) de Google.

Los usuarios del modo de consentimiento deben enviar dos parámetros nuevos además de ad_storage y analytics_storage:

Nombre del campo Valores permitidos Descripción
ad_user_data 'granted' | 'denied' Establece el consentimiento para enviar a Google los datos del usuario relacionados con la publicidad.
ad_personalization 'granted' | 'denied' Establece el consentimiento para la publicidad personalizada.

Las funciones avanzadas de consentimiento incluyen la capacidad de realizar las siguientes acciones:

  • Establece con qué servicios de Google compartes datos a través de la IU de la etiqueta de Google.
  • Establece el comportamiento para una región geográfica.
  • Pasa información sobre clics en el anuncio, IDs de cliente y IDs de sesión en las URLs cuando los usuarios no hayan otorgado su consentimiento para las cookies.
  • Redactar por completo (quitar) la información del anuncio cuando los usuarios rechazan el consentimiento para las cookies publicitarias

Comportamiento específico de la región

Para establecer estados de consentimiento predeterminados que se apliquen a los visitantes de áreas específicas, especifica una región (según la norma ISO 3166-2) en tu comando gtag consent default. El uso de valores de región te permite cumplir con las reglamentaciones regionales.

Puedes establecer valores predeterminados para regiones específicas y, luego, establecer un valor predeterminado diferente para todas las demás regiones. Un comando gtag consent default sin un parámetro de región establece el valor predeterminado para todos los visitantes que no estén cubiertos por otro comando específico de la región.

Tag Manager

Si usas una plantilla para crear tu etiqueta, es posible que tenga los controles para establecer un comportamiento específico de la región. Si estás creando una etiqueta de plantilla por tu cuenta, consulta Cómo crear una plantilla de modo de consentimiento para obtener más información sobre cómo configurar el comportamiento específico de la región.

gtag.js

En el siguiente ejemplo, se establece analytics_storage en denied para los usuarios de España y Alaska, y se establece ad_storage en denied para todos los usuarios.

  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'region': ['ES', 'US-AK']
  });

  gtag('consent', 'default', {
    'ad_storage': 'denied'
  });

El parámetro más específico tiene prioridad

Si dos comandos de consentimiento predeterminados aparecen en la misma página con valores para una región y una subregión, tendrá efecto el que tenga una región más específica. Por ejemplo, si tienes ad_storage establecido en granted para la región de EE.UU. y ad_storage establecido en denied para la región de EE.UU.-CA, un visitante de California tendrá el parámetro de configuración más específico de EE.UU.-CA. En este ejemplo, eso significaría que un visitante de US-CA tendría ad_storage establecido en denied.

Región ad_storage Comportamiento
EE.UU. 'granted' Se aplica a los usuarios de EE.UU. que no se encuentran en California.
US-CA 'denied' Se aplica a los usuarios de EE.UU. y Canadá
Sin especificar 'granted' Usa el valor predeterminado de 'granted'. En el ejemplo, se aplica a los visitantes que no se encuentran en EE.UU. ni en US-CA.

Pasa la información del clic en el anuncio, el ID de cliente y el ID de sesión en las URLs

Cuando un usuario llega a tu sitio web después de hacer clic en un anuncio, es posible que se agregue información sobre el anuncio a las URLs de tu página de destino como un parámetro de consulta. Para mejorar la precisión de los eventos clave, esta información suele almacenarse en cookies propias en tu dominio.

Sin embargo, si ad_storage se establece en denied, esta información no se almacenará de forma local. Para mejorar la calidad de la medición de clics en anuncios cuando ad_storage es denied, puedes optar por transferir información sobre los clics en el anuncio a través de parámetros de URL en las páginas con la transferencia de URL.

Del mismo modo, si analytics_storage se establece en denied, el paso de URL puede usarse para enviar estadísticas basadas en eventos y sesiones (incluidos los eventos clave) sin cookies en las páginas.

Para usar el parámetro de URL de transferencia, se deben cumplir las siguientes condiciones:

  • Tu etiqueta de Google o etiqueta de destino basada en el consentimiento está presente en la página.
  • El anunciante habilitó la función de acceso a la URL.
  • El modo de consentimiento está implementado en la página.
  • El vínculo saliente hace referencia al mismo dominio que el de la página actual.
  • Hay un GCLID o DCLID en la URL (solo para etiquetas de Google Ads y Floodlight).

Tag Manager

Si usas una plantilla para crear tu etiqueta, es posible que tenga los controles para configurar el paso de URL. Si vas a crear una etiqueta de plantilla por tu cuenta, consulta Cómo crear una plantilla del modo de consentimiento para obtener más información sobre cómo configurar el passthrough de URL con la API de plantillas personalizadas gtagSet.

También puedes usar las siguientes opciones para configurarlo en tus etiquetas de destino, la etiqueta de Google o la etiqueta de vinculación de conversiones.

Para las etiquetas de destino y la etiqueta de Google, haz lo siguiente:

  1. En tu lugar de trabajo, abre el menú Etiquetas.
  2. Edita una etiqueta de Google o una etiqueta de destino existentes, o crea una nueva.
  3. En la configuración de Configuración, agrega un parámetro nuevo:
    • Nombre: url_passthrough
    • Value: true
  4. Guarda la etiqueta y publica el contenedor.

Para las etiquetas de Google Ads y Floodlight conectadas a través de una etiqueta de Google, haz lo siguiente:

Para habilitar esta función, crea (o usa una existente) una etiqueta del vinculador de conversiones y asegúrate de que la opción Habilitar la vinculación en todas las URLs de página esté marcada. Consulta la configuración básica para obtener instrucciones sobre cómo crear una etiqueta de vinculación de conversiones.

Como alternativa, puedes establecer el parámetro url_passthrough en true en cada página de tu sitio antes del fragmento de instalación de GTM.

window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('set', 'url_passthrough', true);

gtag.js

Para habilitar esta capacidad, establece el parámetro url_passthrough en true. Agrega el siguiente comando al fragmento predeterminado antes de cualquier comando config:

gtag('set', 'url_passthrough', true);

Cuando se usa la transferencia de URL, es posible que se agreguen algunos parámetros de búsqueda a los vínculos a medida que los usuarios navegan por las páginas de tu sitio web:

  • gclid
  • dclid
  • gclsrc
  • _gl
  • wbraid

Para obtener los mejores resultados, asegúrate de que se cumplan las siguientes condiciones:

  1. Los redireccionamientos de tu sitio transfieren todos los parámetros de consulta anteriores.
  2. Tus herramientas de análisis ignoran estos parámetros en las URLs de las páginas.
  3. Estos parámetros no interfieren en el comportamiento de tu sitio.

Oculta datos de anuncios

Cuando ad_storage es denied, no se establecerán cookies nuevas con fines publicitarios. Además, no se usarán las cookies de terceros previamente configuradas en google.com y doubleclick.net, excepto para fines relacionados con el spam y el fraude. Los datos que se envíen a Google seguirán incluyendo la URL de página completa, incluida la información de clics en el anuncio en los parámetros de la URL.

Tag Manager

Si utilizas una plantilla para crear tu etiqueta, es posible que tenga los controles para redactar aún más los datos de anuncios. Si vas a crear una etiqueta de plantilla por tu cuenta, consulta Crea una plantilla del modo de consentimiento para obtener más información sobre la redacción de datos de anuncios.

gtag.js

Para ocultar aún más los datos de tus anuncios cuando ad_storage es denied, configura ads_data_redaction como true.

gtag('set', 'ads_data_redaction', true);

Cuando ads_data_redaction es true y ad_storage es denied, se ocultarán los identificadores de clics en anuncios que envían las etiquetas de Google Ads y Floodlight en las solicitudes de red. Las solicitudes de red también se enviarán a través de un dominio sin cookies de terceros, como pagead2.googlesyndication.com.

Problemas comunes

Revisa los siguientes problemas habituales que se producen durante la implementación.

Cuando implementes el modo de consentimiento avanzado, debes llamar a un comando de actualización en la página en la que el usuario otorga su consentimiento.

Cuando una página se carga con el consentimiento rechazado y, luego, se vuelve a cargar con el consentimiento otorgado después de un cambio en el consentimiento, es posible que las etiquetas de Google pierdan puntos de datos clave de la página original. Es posible que los informes posteriores estén incompletos.

Por ejemplo, en Google Analytics, es posible que falte un evento session_start en muchas sesiones con consentimiento.

Para evitar este problema, llama al comando de actualización cada vez que cambie el estado de consentimiento de un usuario.

En algunos casos, cuando un tipo de consentimiento se actualiza de rechazado a otorgado, las etiquetas de Google pueden enviar mediciones basadas en esta actualización. Si se llama al comando de actualización cuando se descarga la página, el navegador puede cancelar este tráfico de red antes de que se complete. Es posible que los informes posteriores estén incompletos.

Si es posible, asegúrate de que los comandos de actualización se registren mucho antes de que se descargue la página.

Próximos pasos

Controles de etiquetas heredadas

Si usas etiquetas heredadas, como ga.js, analytics.js o conversion.js, actualízalas a gtag.js o Google Tag Manager.

Para obtener más información sobre otros controles de privacidad de etiquetas heredadas, consulta la siguiente documentación: