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
| Campo | Qué hace |
|---|---|
| Enable | Con esto desactivado la tienda no renderiza ni el contenedor ni una línea de data layer. |
| Container ID | Tu 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 consent | Usa 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
Consentimiento de Google
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.
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.
| Evento | Cuándo | Nivel |
|---|---|---|
view_item | página de producto | gratuito |
view_cart | carrito | gratuito |
begin_checkout | checkout | gratuito |
purchase | página de gracias, del pedido real | gratuito |
view_item_list | categoría y resultados de búsqueda | compra |
select_item | un clic en un producto de una lista | compra |
add_to_cart | de la línea real del carrito | compra |
remove_from_cart | de la línea real del carrito | compra |
search | el término y cuántos resultados dio | compra |
add_to_wishlist | el producto añadido | compra |
add_shipping_info | el método de envío guardado | compra |
add_payment_info | el método de pago guardado | compra |
login | acceso del cliente | compra |
sign_up | registro del cliente | compra |
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.
Qué se incluye en los artículos
| Campo | Qué hace |
|---|---|
| Los precios incluyen impuestos | Debe coincidir con la base que usan tus informes de Google. |
| El valor de la compra incluye el envío | Cambia solo el valor de la compra. |
| Atributo de producto usado como item_id | Usa el mismo identificador que tu feed de productos, o Google no emparejará los artículos. |
| Atributo de producto usado como item_brand | Cualquier atributo del producto. |
| Añadir las categorías del producto | Pone la categoría dentro de cada artículo. |
| Número máximo de artículos en view_item_list | Evita que una categoría larga envíe un evento enorme. |
| Enviar también las claves clásicas de remarketing | Para contenedores que aún leen las claves antiguas. |
| Direcciones IP a ignorar | Separadas por comas. De esas direcciones no sale ningún evento: la oficina, por ejemplo. |
| Dimensiones personalizadas | Pares 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 evento | Para 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.