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 del usuario, 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 hacer lo siguiente:
  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 conservar 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.

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 el tiempo de espera antes de que se envíen 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 se le otorgan 500 milisegundos a la herramienta de consentimiento 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 uses Google Tag Manager, crea tu propia plantilla con las APIs de consentimiento de Tag Manager. El siguiente ejemplo está disponible 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 ads_data_redaction y de transferencia de 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:

<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()">Yes</button>
  ...
</body>

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 compilas 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 ads_data_redaction y de transferencia de URL según corresponda.

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.

gtag.js

El orden del código aquí es fundamental. Si se llama a tu código de consentimiento fuera de orden, no funcionarán los valores predeterminados del consentimiento. 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 tu código de fragmento predeterminado. El fragmento predeterminado se debe actualizar (consulta a continuación) 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 solución de consentimiento no lo controla, llama a gtag('consent', 'update', ...) después de que el usuario indique 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="https://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>

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage">Yes</button>
  ...
</body>

Tag Manager

En el caso de los sitios que usan 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 fuera de orden, no funcionarán los valores predeterminados de 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 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 -->

<!-- Create one update function for each consent parameter -->
<script>
  function consentGrantedAdStorage() {
    gtag('consent', 'update', {
      'ad_storage': 'granted'
    });
  }
</script>
<!-- Invoke your consent functions when a user interacts with your banner -->
<body>
  ...
  <button onclick="consentGrantedAdStorage()">Yes</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 de consentimiento avanzadas incluyen las siguientes capacidades:

  • 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 anuncios, IDs de cliente y IDs de sesión en las URLs cuando los usuarios no hayan otorgado su consentimiento para las cookies.
  • Ocultar 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 ISO 3166-2) en tu comando gtag de consentimiento predeterminado. Usar 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.

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'
  });

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 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 cómo configurar el comportamiento específico de la región.

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

Si se ejecutan dos comandos de consentimiento predeterminados 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 CA
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. o 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 de 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 las mediciones de clics en el anuncio 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 entre 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 tiene en cuenta el consentimiento y está presente en la página.
  • El anunciante habilitó la función de transmisión de 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 un DCLID en la URL (solo para las etiquetas de Google Ads y Floodlight).

gtag.js

Para habilitar esta función, 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);

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 el vinculador de conversiones o en las etiquetas de Analytics.

Para las etiquetas de Google Ads y Floodlight, 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 del vinculador de conversiones.

Para las etiquetas de Google Analytics, ten en cuenta lo siguiente:

  1. En Tag Manager, navega a Campos para configurar y selecciona **Configuración de la etiqueta

    Campos para establecer**.

    1. Cuando se expanda la sección Fields to Set, haz clic en Agregar fila.
    2. En Nombre del campo, ingresa url_passthrough.
    3. En Valor, ingresa "true".
    4. Guarda la etiqueta y publícala.

    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);
    

    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 búsqueda 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 enviados 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 URL.

gtag.js

Para ocultar aún más los datos de tus anuncios cuando ad_storage es denied, establece ads_data_redaction en 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.

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 ocultación de datos de anuncios.

Problemas comunes

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 de 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, es posible que las etiquetas de Google envíen mediciones basadas en esta actualización. Si se llama al comando de actualización cuando se descarga la página, es posible que el navegador cancele 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 cierre la página.

Próximos pasos

Controles de etiquetas heredados

Si utilizas 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: