Google Tag Manager Data Layer — documentación

Cómo se instala el módulo, qué hace cada campo, cómo se importa el contenedor y cómo se sabe que un evento llegó de verdad a Analytics.

Ver como Markdown

Instalación

Requisitos e instalación

Magento 2.4.x (Open Source o Adobe Commerce), PHP de 8.1 a 8.5, Hyvä o Luma. Un contenedor de Google Tag Manager, que es gratis.

composer require codingrow/module-gtmdl
bin/magento module:enable Codingrow_Gtmdl
bin/magento setup:upgrade

En modo production también setup:di:compile, setup:static-content:deploy y cache:flush. Las credenciales de Composer llegan por email cuando solicitas el módulo gratuito o compras los eventos de compra.

Todo se configura en Stores → Configuration → Codingrow Extensions → Google Tag Manager Data Layer, y cada ajuste puede ser distinto por store view: basta cambiar el Scope arriba a la izquierda.

Contenedor

CampoQué hace
EnableCon esto desactivado la tienda no renderiza ni el contenedor ni una línea de data layer.
Container IDTu contenedor, con la forma GTM-XXXXXXX. Escrito de otra manera se ignora. Déjalo vacío para llenar el data layer sin cargar ningún contenedor, que es lo que quieres cuando el contenedor ya lo instala otra cosa.
Load the container only after cookie consentUsa el Cookie Restriction Mode de Magento. El data layer se llena igualmente, así que en cuanto llega el consentimiento no se pierde nada. Con el consentimiento de Google activo, más abajo, ya no se aplica.

Cómo se usa

Google Consent Mode v2. El estado inicial debe declararse antes de que arranque el contenedor, así que solo puede hacerlo quien carga el contenedor. El interruptor tiene tres posiciones.

Declarar solo el estado inicial es la correcta cuando el consentimiento ya lo gestiona una extensión dedicada: el módulo declara todo denegado y tu extensión envía la actualización llamando a

window.codingrowGtmdl.consent({
    ad_storage: 'granted',
    ad_user_data: 'granted',
    ad_personalization: 'granted',
    analytics_storage: 'granted'
});

Declarar el estado inicial y actualizarlo deja que el módulo conceda el consentimiento desde el aviso de cookies de Magento. Esa opción necesita el Cookie Restriction Mode de Magento activado (Stores → Configuration → General → Web → Default Cookie Settings): con él desactivado ningún cliente puede aceptar y el consentimiento quedaría denegado para siempre. Una línea bajo los campos dice cuál de las dos está pasando de verdad, y en ese caso se pone roja.

Cómo comprobar que funciona. En el panel de red del navegador, las peticiones a google-analytics.com/g/collect llevan un parámetro gcs: vale G100 con el consentimiento denegado y G111 cuando está concedido. Si cambia al aceptar las cookies, el Consent Mode está funcionando.

Dos ajustes más: ocultar los datos publicitarios sin consentimiento (mientras el consentimiento publicitario esté denegado, Google no envía identificadores en sus llamadas publicitarias) y pasar el identificador de clic en la URL (sin cookies, viaja de una página a otra). Ambos recomendados.

Los catorce eventos

Un interruptor por evento. Los cuatro básicos son gratuitos; los otros diez requieren la clave de los eventos de compra.

EventoCuándoNivel
view_itempágina de productogratuito
view_cartcarritogratuito
begin_checkoutcheckoutgratuito
purchasepágina de gracias, del pedido realgratuito
view_item_listcategoría y resultados de búsquedacompra
select_itemun clic en un producto de una listacompra
add_to_cartde la línea real del carritocompra
remove_from_cartde la línea real del carritocompra
searchel término y cuántos resultados diocompra
add_to_wishlistel producto añadidocompra
add_shipping_infoel método de envío guardadocompra
add_payment_infoel método de pago guardadocompra
loginacceso del clientecompra
sign_upregistro del clientecompra

En este grupo hay dos ajustes más: contar los pedidos creados en la administración (los pedidos introducidos a mano no tienen una visita detrás, y contarlos distorsiona el coste por conversión) y solo estos estados de pedido, que restringe la compra a los estados que cuentan de verdad como venta.

Los eventos de envío y pago no dependen del checkout: nacen dentro de Magento cuando se guarda el método, así que funcionan en el checkout estándar, en Hyvä, en Luma y en los que responden en su propia ruta. Los otros cuatro son eventos de página: el módulo trae un pequeño archivo de layout por ruta, y el soporte puede añadir uno para un checkout que viva en otro sitio.

Contenedor para importar

Hasta que el contenedor no tenga una etiqueta que lea el data layer, a Analytics no llega nada. Rellena el ID de medición GA4 (el G-XXXXXXXXXX que está en Analytics, en Administrador → Flujos de datos) y, si quieres también la conversión de Google Ads, el ID de conversión (las cifras después de AW-) y la etiqueta de tu acción de conversión de compra. Luego pulsa Descargar el contenedor.

El archivo contiene la etiqueta de configuración GA4, la que reenvía los eventos de ecommerce, el conversion linker, las variables necesarias y —cuando los dos campos de Google Ads están rellenos— la conversión de compra con la facturación real y el número de pedido.

En Google Tag Manager: Administrador → Importar contenedor, elige el archivo, marca Merge y Renombrar etiquetas en conflicto, mira la previsualización y publica. Nada de lo que ya tienes se sobrescribe.

Compras perdidas

Aproximadamente una compra de cada cinco nunca llega a Analytics: un bloqueador de anuncios, un script que falló, un cliente que cierra la página demasiado pronto. Con esto activo, la tienda envía la compra por su cuenta cuando el navegador no lo ha hecho, llevando el identificador que ese cliente tenía en ese momento.

Necesita el ID de medición GA4 del grupo de arriba y una clave API del Measurement Protocol, que se crea en Analytics en Administrador → Flujos de datos → tu flujo → Secretos de API del Measurement Protocol. Se guarda cifrada. La espera antes de enviar es el margen que se da al navegador del cliente: un cuarto de hora basta incluso con una conexión lenta.

Recuperar también las compras sin identificador de Analytics cubre a los clientes que bloquean Analytics desde la primera página: no hay nada que leer, así que la compra solo se puede enviar como una visita nueva y directa. Recuperas la facturación en los informes y pierdes la atribución de esos pedidos: por eso empieza desactivado.

Bajo los campos, un panel cuenta los últimos treinta días: pedidos registrados, los confirmados por el navegador, los recuperados por la tienda, los que siguen en espera. Un botón pide a Google comprobar el contenido de una compra de prueba sin registrarla.

Tres cosas que conviene saber. Los pedidos hechos antes de activarlo no se recuperan: el registro empieza aquí. Una clave API equivocada no da error —Google acepta la llamada y descarta el evento—, así que el módulo nunca afirma que una compra llegó: registra que la envió, y la confirmación está en Analytics, en Tiempo real. Y quien rechazó las cookies nunca se recupera, ni con el interruptor de arriba: enviar su compra desde el servidor sortearía su negativa.

Qué se incluye en los artículos

CampoQué hace
Los precios incluyen impuestosDebe coincidir con la base que usan tus informes de Google.
El valor de la compra incluye el envíoCambia solo el valor de la compra.
Atributo de producto usado como item_idUsa el mismo identificador que tu feed de productos, o Google no emparejará los artículos.
Atributo de producto usado como item_brandCualquier atributo del producto.
Añadir las categorías del productoPone la categoría dentro de cada artículo.
Número máximo de artículos en view_item_listEvita que una categoría larga envíe un evento enorme.
Enviar también las claves clásicas de remarketingPara contenedores que aún leen las claves antiguas.
Direcciones IP a ignorarSeparadas por comas. De esas direcciones no sale ningún evento: la oficina, por ejemplo.
Dimensiones personalizadasPares de atributo de producto y nombre de parámetro GA4. El parámetro viaja dentro de cada artículo de cada evento. En GA4 hay que declararlo como dimensión personalizada a nivel de artículo, si no llega pero no se ve en los informes.
Nombre adicional para el id único del eventoPara contenedores cuyos activadores leen ese id con otro nombre. El mismo valor viaja con los dos nombres, así el día del cambio no tocas nada en el contenedor.

Problemas comunes

He puesto el ID del contenedor pero no veo nada en Google Tag Manager. Comprueba que Enable esté en Yes en el scope que estás mirando, que el ID tenga la forma GTM-XXXXXXX, y en modo production que hayas hecho compile, static deploy y vaciado de caché. En la previsualización de Google Tag Manager se ven llegar los eventos; si llegan y los informes siguen vacíos, el problema está en las etiquetas dentro del contenedor.

Un evento nunca se dispara. Diez de los catorce pertenecen a los eventos de compra: la clave va en el grupo de la licencia. Sin ella, la tienda sigue enviando los cuatro básicos.

Los eventos del checkout llegan todos juntos en la página de gracias. Es normal en un checkout de una sola página: el evento se registra en cuanto el cliente elige y se entrega en la siguiente carga de página, que allí es la página de gracias. En Analytics se quedan en la misma visita y en el orden correcto, antes de la compra.

Los números no cuadran con Analytics o Google Ads. Comprueba la base de impuestos, si el envío debe formar parte del valor de la compra, y que el atributo usado como item_id sea el identificador de tu feed de productos.

La compra llegó dos veces. No del módulo: recargar la página de gracias no repite el evento. Busca una segunda etiqueta que envíe la misma compra, por ejemplo una vieja conversión de Google Ads aún configurada en Magento en Sales → Google API.