GTM Preview muestra verde. Tag Assistant confirma que la etiqueta disparó. GA4 recibe eventos. Y Smart Bidding sigue optimizando con datos incorrectos — porque el dataLayer disparó con los campos vacíos, con precio 0, o con el evento duplicado. El tick verde en el preview no garantiza que los datos sean correctos. Solo garantiza que la etiqueta se ejecutó.
El error más difícil de detectar no es el tracking que no funciona. Es el tracking que parece funcionar. Cuando GTM muestra verde y GA4 recibe datos, nadie sospecha que esos datos sean basura. Smart Bidding los acepta, aprende desde ellos, y optimiza en la dirección equivocada durante semanas o meses antes de que alguien compare los números con la realidad.
El dataLayer es un array de JavaScript que actúa como intermediario entre tu web y GTM. Cuando ocurre algo relevante — un usuario añade un producto al carrito, completa una compra, envía un formulario — tu web escribe esa información en el dataLayer. GTM la lee y la envía a GA4, Google Ads y el resto de herramientas.
El problema es que GTM no valida lo que recibe. No comprueba si el precio es correcto, si el email está bien formateado, si el campo value tiene un número real o un cero. Acepta lo que le llega y lo envía. Si el dataLayer pasa basura, GTM envía basura — y todo lo que viene después, GA4, Smart Bidding, Performance Max, trabaja desde esa basura.
El problema más costoso: el dataLayer roto no genera errores visibles. La página carga con normalidad. GTM funciona. GA4 recibe datos. Solo cuando alguien compara los números de GA4 con los pedidos reales de la tienda o los leads del CRM aparece la discrepancia — y para entonces el daño lleva semanas acumulándose.
GTM Preview Mode es la herramienta estándar para verificar que el tracking funciona. Muestra qué etiquetas se disparan, cuándo y con qué datos. Es indispensable — pero tiene un límite crítico que muy pocos tienen claro.
El tick verde confirma que la etiqueta se ejecutó. No confirma que los datos sean correctos. Una etiqueta puede dispararse con value: 0, con item_id: undefined, o con un email vacío — y GTM Preview lo marca en verde. El evento llegó. Los datos son basura. Tag Assistant lo confirma igual.
Este es el escenario que aparece en auditorías de forma recurrente: el equipo verificó con GTM Preview, todo estaba en verde, nadie revisó los valores reales dentro de cada evento. Smart Bidding llevaba semanas aprendiendo desde precios en 0 y conversiones duplicadas.
| Escenario | Qué recibe Smart Bidding | Impacto económico |
|---|---|---|
| add_to_cart con price: 0 | ROAS calculado sobre valor falso desde el primer evento | Pujas mal calibradas — el algoritmo no sabe cuánto vale cada conversión |
| "datalayer" vs "dataLayer" — case mismatch | El push va a un array distinto — GA4 no recibe nada | Conversiones perdidas sin ninguna alerta visible |
| Plugin de caché sirve JS desactualizado | dataLayer con estructura del deploy anterior | Datos históricos incorrectos acumulados durante semanas |
| Plugin de seguridad bloquea inline script | dataLayer.push falla silenciosamente | Eventos de conversión que nunca llegan a GA4 ni a Google Ads |
| Deploy de frontend rompe el contrato del dataLayer | Campos renombrados o eliminados — GTM recibe undefined | 10–30% de pérdida de datos — acumulada sin que nadie lo detecte |
El nombre del array es case-sensitive. La documentación oficial de Google lo especifica explícitamente. Si un plugin escribe datalayer con la L en minúscula y GTM escucha dataLayer con la L en mayúscula, el push va a un array completamente distinto.
Sin error. Sin aviso. Los eventos simplemente no llegan. GTM sigue mostrando que está activo. GA4 sigue recibiendo pageviews. Solo los eventos específicos desaparecen — exactamente los que Smart Bidding necesita para optimizar.
Documentado de forma extensa en WooCommerce, pero ocurre en cualquier implementación con add-to-cart asíncrono. El plugin AJAX dispara el push al dataLayer inmediatamente cuando el usuario hace clic en "Añadir al carrito" — antes de que el servidor haya calculado precio final, descuento aplicado y variante correcta.
El resultado: GA4 recibe el evento add_to_cart con price: 0 e item_variant: undefined. Tag Assistant muestra verde porque el evento se disparó. Los datos son basura porque llegaron antes de que existieran. Google Ads importa esas conversiones. Smart Bidding aprende desde ahí.
WP Rocket, LiteSpeed Cache y similares cachean archivos JavaScript para mejorar el rendimiento. Si el dataLayer de inicialización está en un JS cacheado, un deploy que modifica la estructura puede tardar días en llegar a todos los usuarios.
Durante ese tiempo, parte del tráfico recibe el dataLayer nuevo y parte el viejo. Los datos son inconsistentes — algunos eventos tienen los campos correctos, otros no. GA4 acumula una mezcla de datos correctos e incorrectos. Nadie lo detecta porque el promedio parece razonable.
Wordfence y otros plugins de seguridad bloquean scripts inline que consideran sospechosos. Un dataLayer.push() es exactamente ese tipo de código — JavaScript inline que ejecuta lógica en el navegador.
Cuando Wordfence bloquea ese push, el evento no llega a GTM. La página carga con normalidad. No hay ningún error visible para el usuario ni para el equipo técnico. Los datos simplemente desaparecen. Las conversiones dejan de llegar a GA4. Smart Bidding pierde señal sin que nadie lo conecte con el plugin de seguridad.
El más frecuente y el más costoso a largo plazo. El equipo de desarrollo rediseña el checkout, renombra un campo de value a revenue, mueve el evento de purchase a una URL distinta, o reorganiza la estructura de items.
GTM sigue disparando exactamente igual — con las variables que configuraste hace seis meses. Pero los datos que esperaba ya no existen o se llaman distinto. GA4 recibe undefined en los campos críticos. Smart Bidding aprende desde ahí. El tracking "funciona" — en el sentido de que las etiquetas disparan. Los datos son incorrectos.
⚠️ El patrón más peligroso: el equipo técnico hace un deploy un viernes. El lunes, nadie revisa el tracking porque "no tocamos nada del tracking". Las conversiones empiezan a caer. El equipo de marketing atribuye la caída a la temporada. Tres semanas después, alguien compara GA4 con el CRM y descubre que el evento purchase lleva enviando value: undefined desde el viernes.
GTM Preview es útil para verificar que las etiquetas se disparan. No es suficiente para verificar que los datos son correctos. Esta verificación hay que hacerla directamente en la consola del navegador.
dataLayer y pulsar Enter. Se muestra el array completo con todos los eventos y sus valores actuales. No los valores que GTM esperaba — los valores reales que tu web está enviando.value tiene un número mayor que 0, currency tiene el código correcto, items tiene el array con los productos reales, transaction_id tiene un ID único. Si alguno muestra undefined, null o 0, hay un problema.ecommerce.value y tu web envía ecommerce.Value con V mayúscula, GTM recibirá undefined. Sin error. Sin aviso.Enhanced Conversions necesita el dato de email del usuario para hashearlo y enviarlo a Google. Ese dato llega a EC a través del dataLayer. Si el dataLayer está roto — campo vacío, timing incorrecto, push que llega antes de que el usuario haya introducido su email — EC tiene match rate 0%.
Desde el 15 de junio, Google Ads depende exclusivamente de Consent Mode v2 + Enhanced Conversions para atribuir conversiones de usuarios que rechazan cookies. Un dataLayer roto que anula EC en esa fecha significa perder permanentemente esa señal de atribución — sin ningún mecanismo de recuperación.
📊 Contexto: Según una encuesta realizada en LinkedIn en abril de 2026 con 96 profesionales de marketing digital en España, el 86% trabaja con discrepancias entre GA4 y Google Ads. Una de las causas más frecuentes y menos detectadas es exactamente este patrón — dataLayer que parece funcionar, datos que son incorrectos, y Smart Bidding que aprende desde esa señal durante semanas sin que nadie lo detecte.
Revisamos el contenedor GTM completo, los valores reales del dataLayer y la coherencia entre lo que envía tu web y lo que recibe GA4. Informe técnico + plan de acción + sesión en vivo.