Gestionar la configuración del consentimiento (web)

Esta página está dirigida a desarrolladores que mantienen etiquetas de Google en un sitio web y quieren integrar el modo de consentimiento. Si quieres ver una introducción al modo de consentimiento, consulta el resumen del modo de consentimiento.

La forma de habilitar y usar el modo de consentimiento dependerá de tu implementación para obtener el consentimiento y de la plataforma de etiquetado que utilices: Google Tag Manager (GTM) o la etiqueta de Google.

  • Las plataformas de gestión del consentimiento (CMPs) compatibles con el modo de consentimiento de Google ofrecen lo siguiente:
    • Plantillas de Tag Manager, disponibles en la galería de plantillas comunitarias, que debes usar para crear etiquetas de gestión del consentimiento.
    • Código JavaScript para sitios que usen gtag.js para gestionar el consentimiento.
  • En el caso de implementaciones personalizadas y CMPs que no admiten el modo de consentimiento:
    • Si usas GTM, te recomendamos que crees tu propia plantilla con las APIs de consentimiento de Tag Manager. Consulta este ejemplo, que puedes usar como punto de partida.
    • Si usas gtag.js, tendrás que añadir manualmente el código de consentimiento a cada página de tu sitio como comandos directos o en un fragmento de HTML personalizado.

En este artículo se describen algunas prácticas recomendadas y se ofrecen ejemplos de la API. Consulta los enlaces relacionados para obtener más información.

Antes de empezar

Antes de implementar el modo de consentimiento, ten en cuenta lo siguiente:

  • Es recomendable que la configuración de consentimiento predeterminada se aplique a las zonas en las que muestras banners de consentimiento a tus visitantes. Esto ayuda a proteger las mediciones de las zonas en las que se precisan los banners de consentimiento y las etiquetas de Google ajustan su comportamiento en consonancia. También evitarás que se pierdan mediciones donde no hay banners de consentimiento o donde estos no se aplican. Consulta la sección Comportamiento específico para zonas concretas.

  • Si usas una CMP, debes configurar los comandos de actualización de consentimiento para apuntar a los visitantes de las mismas regiones especificadas en el comando de consentimiento predeterminado. De este modo, los usuarios podrán actualizar su estado de consentimiento si lo tenían definido como denegado de forma predeterminada.

  • Si escribes tus propias plantillas o etiquetas HTML personalizadas, no se asegura que los comandos que se ejecutan en retrollamadas o los que usan gtag() estén disponibles antes de que se active el siguiente activador. Para asegurarte de que la información de consentimiento esté disponible lo antes posible, usa (o crea) una plantilla de etiqueta que utilice las APIs de consentimiento de Tag Manager para definir los estados de consentimiento.

El estado del consentimiento predeterminado debe definirse inmediatamente cuando se carga la página, en función de los ajustes predeterminados que se requieran en tu organización. A continuación, la CMP o solución personalizada de gestión del consentimiento deberá pedirle al visitante que dé o deniegue su consentimiento para cada tipo de consentimiento aplicable. Como el modo de consentimiento no almacena las decisiones de consentimiento, también es necesario que la solución de gestión del consentimiento ejecute un comando de actualización del modo de consentimiento en función de las opciones elegidas por el usuario. Este comando debe ejecutarse en cada página lo antes posible después de que el usuario haya seleccionado sus opciones de consentimiento.

gtag.js

En las siguientes secciones, verás ejemplos de cómo usar gtag.js para:

Te recomendamos configurar un valor predeterminado para cada tipo de consentimiento que uses. Los valores del estado del consentimiento de este artículo son solo ejemplos. Te corresponde a ti asegurarte de configurar el modo de consentimiento predeterminado en todos tus productos de medición de acuerdo con la política de tu organización.

Para ajustar las funciones de medición predeterminadas, haz una llamada al comando gtag('consent', 'default', ...) en todas las páginas de tu sitio antes de que se ejecute cualquier comando que envíe datos de medición (como config o event). Por ejemplo, para rechazar varios tipos de consentimiento de manera predeterminada, especifica los siguientes parámetros de consent:

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

Cuando los usuarios eligen opciones de consentimiento o las cambian, usa el comando update para actualizar el estado del consentimiento. Dado que el modo de consentimiento no guarda las opciones de consentimiento, actualiza el estado de este tan pronto como un usuario interactúe con la solución de gestión del consentimiento. Una vez que un usuario dé su consentimiento, debes aplicarlo a todas las páginas que visite posteriormente haciendo una llamada al comando update.

En el ejemplo de abajo, solo ha cambiado el valor de ad_storage. Si analytics_storage hubiera tenido asignado el valor denied, seguiría estando rechazado después de esta llamada. Es responsabilidad tuya comprobar que se hayan asignado los valores correctos a todos los tipos de consentimiento. Consulta referencia de la API para obtener información detallada sobre los tipos admitidos.

En el siguiente código de ejemplo se muestra cómo actualizar el estado del consentimiento a granted cuando el usuario decide permitir las cookies de publicidad:

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

Integrar el modo de consentimiento con plataformas de gestión del consentimiento asíncronas

Si la CMP que usas se carga de forma asíncrona, es posible que no siempre se ejecute antes que las etiquetas de Google. En este tipo de situaciones, especifica wait_for_update junto con un valor de 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 concreta de forma predeterminada, pero permitiendo que la CMP que usas actualice el estado de consentimiento, usa wait_for_update. En el siguiente código, a ad_storage se le ha asignado el valor predeterminado denied, y la herramienta de consentimiento tiene 500 milisegundos para hacer la llamada a gtag('consent', 'update', ...) antes de que se activen las etiquetas:

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

Tag Manager

En las implementaciones de Tag Manager, recomendamos usar una plantilla de modo de consentimiento de la galería de plantillas comunitarias para gestionar el consentimiento. Consulta cómo crear tu propia plantilla usando las APIs de consentimiento de Tag Manager en Crear una plantilla del modo de consentimiento.

Notas:

  • Las implementaciones del modo de consentimiento en sitios que utilizan GTM para el etiquetado deben usar las APIs específicas de GTM para gestionar los estados del consentimiento setDefaultConsentState y updateConsentState. La API gtagSet se puede usar para configurar los ajustes de ads_data_redaction y de envío de datos a través de URL según corresponda.

  • El método gtag('consent','update',...) no se debe usar en lugar de updateConsentState porque se pondría en cola después de todos los demás mensajes pendientes, lo que podría hacer que no se procesara hasta que empezara el siguiente evento. Para obtener más información, consulta Cómo se procesa la información de las capas de datos.

Ejemplo de implementación

En el siguiente ejemplo varios parámetros del modo de consentimiento reciben el valor denied de forma predeterminada. Después de que un usuario indique sus opciones de consentimiento, el valor de los parámetros relevantes se actualiza a granted.

gtag.js

El orden de los elementos del código es fundamental. Si la llamada al código de consentimiento no se hace en el orden correcto, los valores predeterminados de consentimiento no funcionarán. Dependiendo de los requisitos de la empresa, ciertos detalles pueden variar, pero en general el código debería ejecutarse en el orden siguiente:

  1. Carga la etiqueta de Google. Este es el fragmento de código predeterminado. Debe actualizarse para incluir una llamada a gtag('consent', 'default', ...). En el código de abajo puedes ver un ejemplo.

  2. Carga la solución de consentimiento. Si se carga de forma asíncrona, consulta la sección Integrar el modo de consentimiento con plataformas de gestión del consentimiento asíncronas para saber cómo te puedes asegurar de que se haga en el orden correcto.

  3. Si la solución de consentimiento no lo hace ya, haz una llamada 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 los sitios etiquetados con Tag Manager, recomendamos que se use una CMP para gestionar las actualizaciones de las opciones de consentimiento elegidas por los visitantes. Las CMPs ofrecen plantillas en la galería de plantillas comunitarias para crear etiquetas con las que gestionar el modo de consentimiento.

Si no puedes usar una plantilla, puedes actualizar el código de tu página como se muestra a continuación. El orden de los elementos del código es fundamental. Si la llamada al código de consentimiento no se hace en el orden correcto, los valores predeterminados de consentimiento 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 -->

<!-- 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 muestra del compromiso continuo con un ecosistema de publicidad digital centrado en la privacidad, Google va a añadir requisitos a la Política de Consentimiento de Usuarios de la Unión Europea. Los usuarios que utilicen el modo de consentimiento tendrán que enviar dos parámetros nuevos aparte de ad_storage y analytics_storage:

Nombre del campo Valores permitidos Descripción
ad_user_data 'granted' | 'denied' Define el consentimiento sobre el envío a Google de datos de usuario relacionados con la publicidad.
ad_personalization 'granted' | 'denied' Define el consentimiento sobre la publicidad personalizada.

Entre las funciones de consentimiento avanzadas se incluyen las siguientes:

  • Definir el comportamiento para una región geográfica.
  • Enviar información de clics en anuncios, IDs de clientes e IDs de sesiones en las URLs si los usuarios no han dado su consentimiento para el uso de cookies.
  • Ocultar (quitar) la información de los anuncios si los usuarios rechazan el consentimiento para el uso de cookies de anuncios.

Comportamiento específico para regiones concretas

Para cambiar el comportamiento predeterminado de las etiquetas con los usuarios de determinadas zonas, especifica dichas zonas en el comando de consentimiento. Al proporcionar un valor de zona, podrás ajustar los valores predeterminados según la ubicación geográfica de los usuarios. Consulta IDs geográficos para obtener más información sobre cómo identificar zonas.

gtag.js

En este ejemplo, se asigna el valor denied a analytics_storage para los usuarios de España y Alaska, y el valor denied a ad_storage para todos los usuarios.

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

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

Tag Manager

Si vas a usar una plantilla para crear tu etiqueta, ten en cuenta que puede que incluya los controles necesarios para configurar comportamientos específicos según la región. Si vas a crear una etiqueta como plantilla, consulta Crear una plantilla del modo de consentimiento para obtener más información sobre cómo configurar comportamientos específicos para zonas concretas.

Cuanto más específicos son los parámetros, más prioridad tienen

Si se ejecutan dos comandos de consentimiento predeterminados en la misma página con valores para una zona y una subzona, se aplicará el comando correspondiente a la zona más específica. Por ejemplo, si has asignado el valor granted a ad_storage para la zona US (Estados Unidos) y el valor denied a ad_storage para la zona US-CA (California, Estados Unidos), a un visitante de California se le aplicará la configuración de US-CA, ya que es la más específica. En este ejemplo esto significa que, para el visitante de US-CA, a ad_storage se le asignará el valor denied.

Zona ad_storage Comportamiento
US 'granted' Se aplica a los usuarios de Estados Unidos que no están en California.
US-CA 'denied' Se aplica a los usuarios de California, en Estados Unidos.
Sin especificar 'granted' Se usa el valor predeterminado 'granted'. En este ejemplo, se aplica a los usuarios que no son ni de Estados Unidos ni de California, Estados Unidos.

Enviar información de clics en anuncios, IDs de clientes e IDs de sesiones en URLs

Cuando un usuario hace clic en un anuncio que le dirige a tu sitio web, la información sobre el anuncio puede añadirse a la URL de la página de destino como parámetro de consulta. Para mejorar la precisión de los datos sobre las conversiones, esta información se suele almacenar en cookies propias alojadas en tu dominio.

Sin embargo, si se asigna el valor denied a ad_storage, esa información no se almacenará localmente. Si quieres mejorar la calidad de la medición de los clics en los anuncios cuando el valor de ad_storage es denied, puedes utilizar parámetros de URL para transferir entre páginas información sobre los clics en los anuncios usando la función de envío de datos a través de URL.

Del mismo modo, si se asigna el valor denied a analytics_storage, la función de paso a través de URL se puede utilizar para enviar analíticas basadas en eventos y sesiones (incluidas las conversiones) sin cookies entre páginas.

Para usar la función de envío de datos a través de URL, se deben cumplir las siguientes condiciones:

  • Tu etiqueta de Google tiene que poder detectar el consentimiento y estar instalada en la página.
  • El anunciante debe haber habilitado la función de envío de datos a través de URL.
  • El modo de consentimiento tiene que haberse implementado en la página.
  • El enlace de salida debe hacer referencia al dominio de la página actual.
  • En la URL debe haber un GCLID/DCLID (solo en etiquetas de Floodlight y Google Ads).

gtag.js

Para habilitar esta función, asigna el valor true al parámetro url_passthrough:

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

Tag Manager

Si vas a usar una plantilla para crear tu etiqueta, ten en cuenta que puede que incluya los controles necesarios para configurar el envío de datos a través de URL. Si vas a crear una etiqueta como plantilla, consulta en Crear una plantilla del modo de consentimiento más información sobre cómo configurar el paso a través de URL usando la API gtagSet de plantillas personalizadas.

También puedes usar las siguientes opciones para configurarlo en la vinculación de conversiones o etiquetas de analíticas.

Para etiquetas de Google Ads y de Floodlight:

Para habilitar esta función, crea o usa una etiqueta de vinculación de conversiones y comprueba que la opción Habilitar la vinculación en todas las URLs de página esté marcada. Consulta cómo se crean este tipo de etiquetas en la sección Configuración básica del artículo sobre la vinculación de conversiones.

Para etiquetas de Google Analytics:

  1. En Tag Manager, accede a Campos que configurar:
  2. Cuando se muestre la sección Configurar campos, haz clic en Añadir fila.
  3. En Nombre del campo, introduce el valor correcto:
    • Para las etiquetas Google Analytics: configuración de GA4, introduce url_passthrough.
    • Para las etiquetas Google Analytics: Universal Analytics que usan las variables de configuración de Google Analytics, introduce urlPassthrough.
  4. En Valor, introduce "true".
  5. Guarda la etiqueta y publícala.

También puedes asignar el valor true al parámetro url_passthrough en todas las páginas 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 función de envío de datos a través de URL, puede que se añadan algunos parámetros de consulta a los enlaces cuando los usuarios navegan por las páginas de tu sitio web:

  • gclid
  • dclid
  • gclsrc
  • _gl
  • wbraid

Para obtener resultados óptimos, comprueba que:

  1. Que las redirecciones de tu sitio envíen todos los parámetros de consulta mencionados anteriormente.
  2. Tus herramientas de analíticas no tengan en cuenta estos parámetros en las URLs de las páginas.
  3. Estos parámetros no interfieran con el comportamiento de tu sitio web.

Ocultar datos sobre los anuncios

Cuando el valor de ad_storage sea denied, no se añadirán cookies nuevas con fines publicitarios. Además, las cookies de terceros que ya se hayan añadido a google.com y a doubleclick.net no se usarán, salvo en casos de spam y fraude. Los datos que se envíen a Google seguirán incluyendo la URL de página completa, incluida la información sobre los clics en anuncios que contienen los parámetros de URL.

gtag.js

Para ocultar aún más los datos de los anuncios cuando el valor de ad_storage sea denied, asigna el valor true a ads_data_redaction.

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

Cuando el valor de ads_data_redaction sea true y el de ad_storage sea denied, se ocultarán los identificadores de los clics en anuncios que envíen 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 vas a usar una plantilla para crear tu etiqueta, ten en cuenta que puede que incluya los controles necesarios para ocultar más datos sobre anuncios. Si vas a crear una etiqueta como plantilla, consulta en Crear una plantilla del modo de consentimiento más información sobre cómo ocultar datos sobre anuncios.

Tag Manager incluye varias herramientas que te ayudan a gestionar el funcionamiento de las etiquetas en respuesta a la configuración del consentimiento. Tag Manager ofrece un activador de inicialización de consentimiento, ajustes de etiquetas para la gestión del consentimiento y la página Resumen de consentimiento. Varios proveedores de soluciones de gestión del consentimiento de terceros han integrado el modo de consentimiento en sus productos. Consulta más información sobre las funciones de consentimiento de Tag Manager.

Para verificar y depurar la configuración del modo de consentimiento, te recomendamos que uses Tag Assistant. Con Tag Assistant, puedes ver si el estado del consentimiento se configura y se actualiza, y de qué manera. Tag Assistant admite lo siguiente:

Consulta más información sobre la depuración del modo de consentimiento con Tag Assistant.

Si no usas plantillas de modo de consentimiento, puedes analizar la configuración del consentimiento con las herramientas para desarrolladores del navegador.

Para analizar la configuración del consentimiento:

  1. En la pestaña Elementos, escribe dataLayer en la barra de búsqueda y comprueba que:

    • El comando default se encuentre antes de todos los demás eventos de Google.
    • Los estados de consentimiento se configuren en función de la interacción del usuario y con el comando update.
    • Las etiquetas se activen solo cuando se cumplan las condiciones establecidas en la configuración del consentimiento.
    • Los valores de ads_data_redaction y url_passthrough se configuren en función de los ajustes indicados por el usuario.
    1. En la pestaña Red:
    • Comprueba que el parámetro gcs=, correspondiente al estado del consentimiento, esté en las URLs. El formato del parámetro gcs es gcs=G1 [ad_storage][analytics_storage].
    • Comprueba que los valores del parámetro gcs= correspondan a la opción de consentimiento elegida por el usuario. Los valores de ad_storage y analytics_storage pueden ser cualquiera de los siguientes:
    Valor Significado
    G100 Se ha denegado el consentimiento para usar ad_storage y analytics_storage.
    G110 Se ha dado el consentimiento para usar ad_storage y se ha denegado para usar analytics_storage.
    G101 Se ha denegado el consentimiento para usar ad_storage y se ha dado para usar analytics_storage.
    G111 Se ha dado el consentimiento para usar ad_storage y analytics_storage.
    G1-- El sitio no requiere consentimiento para usar ad_storage ni analytics_storage.
    • Comprueba que se usen dominios sin cookies (por ejemplo, googlesyndication.com) cuando a ads_data_redaction se le asigne el valor true.
    • Comprueba que gclid o dclid se añadan a las URLs salientes cuando a url_passthrough se le asigne el valor true y el parámetro de vinculación de _gl esté presente (por ejemplo, https://www.example.com/?_gl=1*abcde5*).

Controles de etiquetas antiguas

Si usas etiquetas antiguas, como ga.js, analytics.js o conversion.js, deberías pasarte a gtag.js o a Google Tag Manager.

Consulta más información sobre los controles de privacidad de otras etiquetas antiguas en los siguientes artículos: