GTM中GA标签已触发但无collect请求,求GA/GTM专家协助
GA/GTM嵌套iframe环境下无collect请求的问题求助
已花费3晚测试、调试并查阅Simo Ahava等业内资料,仍未解决问题,恳请GA>M领域专家指导。
场景
我的网站A包含第三方预订表单的iframe B,B内部有可放置自定义测量代码的iframe C,页面结构如下:
+--My website A-------+ | | | +--Ext.iframe B-+ | | | | | | | +-iframe C+ | | | | | | | | | | | My tags | | | | | +---------+ | | | | | | | +---------------+ | | | +---------------------+
用户停留在网站A时,通过window.postMessage从C向A发送追踪数据,一切正常。但用户完成订单后会跳转到B下的感谢页(该页面无法修改),只能在iframe C中添加自定义测量代码。目前已在iframe C中部署GTM,并将purchase数据推送至dataLayer,标签触发状态正常(从截图可见)。
核心问题
GA无collect HTTP请求,GA3和GA4的实时数据中均无该事件记录。但Facebook像素可正常触发HTTP请求,因此判断问题出在GA而非GTM。
已尝试的解决方案
- 确认iframe B中存在不受控制的第三方GA和GTM代码
- 清除浏览器缓存,无效
- 绕过GTM,直接使用gtag/UA代码向GA4/GA3发送简单事件,仍无数据
- 将iframe C中的GTM初始化标签移至页面底部,无效
附iframe C的完整测量代码(敏感信息已替换为XXX):
<!-- 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','XXXXXXXXXXX'); </script> <!-- End Google Tag Manager --> <script> // data to send var gtmEvent = { event: "purchase", userData: { 'email': "{email}", 'phone': "{phone}" }, ecommerce: { transaction_id: "{id}", value: {price}, currency: "{currency}", items: [ { item_id: "{saleId}", item_name: "{eventName}", price: {price}, quantity: {count} } ] } }; // for GTM in the same frame var dataLayer = dataLayer || []; dataLayer.push(gtmEvent); // for GTM in host page (top parent) var i = 0; var interval = setInterval(() => { i++; if (i > 30) { //console.log("clearing interval"); clearInterval(interval); } try { var postObject = JSON.stringify(gtmEvent); parent.parent.postMessage(postObject, '*'); parent.postMessage(postObject, '*'); //console.log("message posted"); } catch (e) { window.console && window.console.log(e); } }, 1000); </script>
感谢您的帮助。
内容的提问来源于stack exchange,提问作者koubic
相关产品推荐
相关产品推荐

