Google跟踪代码管理器(GTM)是针对网络或移动设备的免费跟踪代码管理器解决方案它可以自动管理JavaScript代码序列,用于将“标记”从您的网站或移动应用程序发送给第三方。支持的代码包括来自Google和DoubleClick的代码(例如Google Analytics和DoubleClick Floodlight销售代码),以及选定的“认证供应商”代码。
我们正在尝试在一个网站上设置内容安全策略,该网站上有很多 Google 跟踪代码管理器标签和自定义脚本以及其他随机内容。我们经常收到 CSP 报告...
Facebook Pixel + Google 标签管理器 + fbq 事件
我正在使用 Google 标签管理器来交付 Facebook Pixel。 然后,我使用这样的代码触发事件 ... fbq('曲目', 'ViewContent', { ...</desc> <question vote="14"> <p>我正在使用 Google 标签管理器来交付 Facebook Pixel。 </p> <p>然后,我使用这样的代码触发事件</p> <pre><code> <body> ... <script> fbq('track', 'ViewContent', { content_type: 'product', content_ids: ['1234'], content_name: 'ABC Leather Sandal', content_category: 'Shoes', value: 0.50, currency: 'USD' }); </script> </body> </code></pre> <p>但是当代码执行时,我收到一个错误,因为 Facebook Pixel 是异步加载的,并且 fbq 尚不可用。</p> <blockquote> <p>未捕获的引用错误:fbq 未定义</p> </blockquote> <p>我该怎么办?</p> </question> <answer tick="false" vote="21"> <p>无法让 Eike 的方法发挥作用,并最终得到以下“肮脏的解决方法”(基本上它只是等到 fbq 启动):</p> <pre><code><script> function waitForFbq(callback){ if(typeof fbq !== 'undefined'){ callback() } else { setTimeout(function () { waitForFbq(callback) }, 100) } } waitForFbq(function () { fbq('track', 'Registered'); }) </script> </code></pre> <p>也许它也会对某人有帮助</p> </answer> <answer tick="false" vote="11"> <p>使用标签排序功能。这允许按预定义的顺序触发标签,后续标签在执行之前等待前面的标签。</p> <p>创建一个加载 FB 初始化代码的标签。在标签触发选项中选择“每页一次”(您只需加载一次,即使它被多个标签使用)。</p> <p>转到您的 Facebook 事件标签。在高级设置中查找标签排序选项。将其设置为:</p> <p><a href="https://i.sstatic.net/kDXRy.png" rel="noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQva0RYUnkucG5n" alt="enter image description here"/></a></p> <p>(其中 Facebook init 是加载 FB 库的标签,我假设您使用他们的标准引导代码)。启用最后一个复选框后,如果您的设置标签失败,则不会触发。</p> <p>由于 FB 引导代码将设置一个带有命令队列的 fbq 对象,您现在可以将数据推送到 fbq;即使库仍在下载,数据也会进入命令队列,并且在库下载完成后将执行调用。 </p> <p>标签序列确保 fbq 对象在事件之前设置。如果这是您唯一的 FB 活动,您只需将加载程序粘贴到您的活动代码上方即可省去麻烦。</p> </answer> <answer tick="false" vote="0"> <p>有同样的错误 - 最终都是关于测序的。</p> <p>当通过 WP 插件通过 WordPress 网站上的标签管理器使用时,默认情况下像素会加载到页脚中,因此在页脚中声明之前使用的 fbq 变量在正文中无法识别: <a href="https://i.sstatic.net/tdSwS.png" rel="nofollow noreferrer">适用于 WordPress 选项的 Google 跟踪代码管理器</a> </p> <p>我尝试了不同的设置,最终放弃使用该插件 - 只需使用我的页面构建器的脚本部分(Thrive Architect = TA)将其插入标题部分: <a href="https://i.sstatic.net/tS3hO.png" rel="nofollow noreferrer">TA 中的自定义脚本设置</a> 现在一切正常!</p> </answer> <answer tick="false" vote="0"> <h3>处理此类问题的正确方法</h3> <p>您需要检查窗口引用是否存在,而不是其值为空!</p> <p>虽然您无法使用:</p> <pre><code>if (fbq !== undefined) { // browser code } // or if (window.fbq !== undefined) { // browser code } </code></pre> <p>因为这会尝试将不存在的变量(窗口)与未定义进行比较,从而导致强大的“ReferenceError:窗口未定义”。您仍然可以使用:</p> <pre><code>if (typeof window !== "undefined") { // browser code } </code></pre> <p>因为 typeof 不会尝试评估“window”,它只会尝试获取其类型,</p> </answer> <answer tick="false" vote="0"> <p>作为对<a href="https://stackoverflow.com/users/1713920/vir-us">@vir-us</a>答案的增强。如果出于何种原因根本没有填充 <pre><code>fbq</code></pre> 标签,我做了一个小小的改进。现在,代码最多重试 20 次,随着 <pre><code>timeout</code></pre> 的增加,这意味着总共只会重试 10 秒。</p> <pre><code><script> function waitForFbq(callback, attempts = 0){ if(typeof fbq !== 'undefined'){ callback() } else if (attempts < 20) { setTimeout(function () { waitForFbq(callback, attempts + 1) }, 500) } } waitForFbq(function () { fbq('track', 'Registered'); }) </script> </code></pre> </answer> </body></html>
查找哪些 GTM 正在使用我的 GA 属性测量 ID 的方法
我发现,如果在少数 Google 跟踪代码管理器中使用 GA 属性 MEASUREMENT ID,则此 GA 属性的 DebugView 将停止对所有 GTM-s 工作。可能,除了最后一个配置的...
NextJS 的 GoogleTagManager 中出现错误 - 未捕获(承诺中)TypeError:无法在“CookieDeprecationLabel”上执行“getValue”:非法调用
这是我第一次将 GoogleTagManager 集成到我的 Google Analytics 网站组合中。我在这个项目中使用 NextJS。但是当我部署它或在本地运行它时,我得到以下错误...
我想使用 GTM 向 GA4 发送动态值,该数字根据表单中的用户偏好而变化。 我如何发送这个值,它出现在单词总计和 $ 符号之后 我尝试发送
我正在尝试使用包含以下内容的自定义 HTML GTM 标签来计算放弃表单之前填写的表单字段数: document.querySelector('.Form').addEventListener('...</desc> <question vote="0"> <p>我正在尝试使用包含以下内容的自定义 HTML GTM 标记来计算放弃表单之前填写的表单字段数:</p> <pre><code><script> document.querySelector('.Form').addEventListener('change', function(e) { dataLayer.push({ 'event': 'form interaction', 'form_field': e['target'].getAttribute('name') }); }); </script> </code></pre> <p>GTM 预览似乎没问题,当焦点从输入中移除时,它会触发标签。 <a href="https://i.sstatic.net/5llWn1HO.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvNWxsV24xSE8ucG5n" alt="Screenshot from GTM showing an API call to dataLayer.push"/></a></p> <p>但是,GA 中的事件下没有任何内容。我今天看了很多关于这个主题的很长的博客文章,对变量、自定义触发器和其他东西有点困惑,但无法理解它们。</p> <p>还需要做什么才能让这些事件出现在 GA 中?</p> </question> <answer tick="false" vote="0"> <p>dataLayer (DL) 推送本身不会自动导致 GTM 发送事件。 GTM 提供了另一层逻辑,这样那些不知道如何编码的人仍然可以对 DL 推送的工作方式有一定的控制权,甚至允许人们评估自定义 JS 来改变 DL 的内容。</p> <p>在 GTM 中,您需要创建一个标签......实际上,我之前在这里概述过:<a href="https://stackoverflow.com/questions/77734027/sendgtmevent-for-next-js-does-not-submit-to-google-analytics/77817313">Next.js 的 sendGTMEvent 不会提交到 Google Analytics</a> 这本质上与您的问题相同,但有一些框架细节。我有一个 DL 推送后要采取的操作列表。也看看那里的评论。如果我可以澄清这个答案,请告诉我。我对技术分析的研究太深,无法看出什么是显而易见的,什么不再是。</p> </answer> </body></html>
Google 跟踪代码管理器触发器 - 如何定位子 CSS 选择器
我已经正确设置了 Google 标签触发器,但是只有当他们单击父 div 时它才会触发。当他们点击 img 或 h6 时,它不会触发,有什么方法可以更改 GTM 变量...
社区您好, 我记得不久前,使用从 GA4 导入 Google ADS 转化的方法 - 并不是最佳选择,因为它不允许衡量此方面的增强型转化...
我有一个可以工作的触发器,它是一个自定义事件>一些自定义事件。 {{dlv - email}} 包含@ {{dlv - email}} 从以下代码中提取信息 ` (功能 () { ...</desc> <question vote="0"> <p>我有一个可以工作的触发器,它是一个自定义事件>一些自定义事件。 {{dlv - email}} 包含@</p> <p>{{dlv - email}} 从以下代码中提取信息</p> <pre><code>`<script> (function () { var element = document.querySelector('input[name="contact_details_email"]') element.addEventListener("change", function(e) { dataLayer.push({ 'event': 'email', 'email': e.target.value }); }, true); })(); </script>` </code></pre> <p>我有另一个变量 {{JS contact formcountry}} ,它是自定义 JavaScript,因为它从下拉选择中提取数据。</p> <pre><code>`function () { var country = document.getElementById('country_id').selectedOptions[0].text; if (country) return country; else return "Country not selected"; } ` </code></pre> <p>我正在尝试在触发器中使用上述内容,该触发器是自定义事件>一些自定义事件。 {{JS contact form Country}} 包含澳大利亚 然而,它不像第一个例子那样工作。</p> <p>任何人都可以解释其中的区别并提供任何指导吗?</p> </question> <answer tick="false" vote="0"> <p>有根据的猜测是,您的自定义变量仅计算一次,然后保留其值。 如果您测试变量是否在某些事件中实际更改了其值,您可以在预览中检查这一点。</p> <p>相比之下,第一个示例是一个函数,每次触发该标签时都会运行该函数,从而生成新值。</p> <p>您可能必须在自定义 HTML 标记中为该下拉列表实现事件侦听器,并将值推送到数据层</p> </answer> </body></html>
使用同意模式脚本在 Google Analytics 中看不到页面浏览量
我在网站上使用 Google Analytics(分析)跟踪时遇到问题。 尽管使用同意模式为 Google Analytics 设置了脚本,但我在分析仪表板中没有看到任何页面视图。这里是...
在 Google 跟踪代码管理器中取消选中时,复选框返回 true
在标签助手中测试时,无论选中还是未选中,以下变量都会返回 true。 `函数检查(){ var check = jQuery('#marketing').attr("已检查"); 如果(检查=...
我想为一家餐厅设置服务器端跟踪。我有一个主域,您可以在其中找到有关餐厅的信息,但餐桌预订部分位于不同的域上。该...
Magento 2.4.5-p8,在 Google 跟踪代码管理器插入的脚本上带有 CSP
我们正在将 Magento 从 2.4.5-p7 更新到 2.4.5-p8。 如您所知,在 Magento 2.4.5-p8 中,结帐页面上的 CSP 现在是限制模式,而不是仅报告模式。 我们现在知道插入了脚本
Google 跟踪代码管理器自定义 JavaScript 变量在生产中的 Google Analytics 中未正确设置
我在 Google 跟踪代码管理器中创建了以下自定义 JavaScript 变量: 功能() { 返回{{点击文本}} || {{点击元素}}; } 它使用内置变量单击文本并单击 E...
我有以下标签,它在页面视图上触发,效果很好。我正在尝试添加一行额外的文本(变量)以显示在“结帐查看”指标旁边,即“{{dlv - 类别...
我的 Google 跟踪代码管理器似乎引用了未知的触发器。我有几项更改想要发布,但此错误阻止我做任何事情 “未知触发器”链接...
GTM GA4 事件代码中的电子商务数据未显示在 GA4 电子商务购买报告中
我在产品购物车网站上使用 GTM 来触发名为“产品购物车购买”的 GA4 事件代码,事件名称为 buy_from_cart。当用户完成购买时,他们会被重定向到一个页面...
有没有办法自动检查Google跟踪代码管理器标签和数据层值?
我们在我们的网站上手动检查 Google 跟踪代码管理器标签和数据层值。我想知道是否有办法自动化它。如果是这样,我该怎么办? 我搜索了谷歌但找不到正确的答案...
Page_author 未出现在 GA4 DebugView 中
我应该如何跟踪从我的网站到 GA 的页面作者流量? 我在 GA 调试视图中找不到 page_author 我已经在 GTM 的主标签中添加了参数 这是我正在使用的变量 [...
我正在尝试将用户输入字段中字符串的第一个字符大写。下面是收集名字数据的侦听器标记。 ` (功能 () { var 元素 = 文档。</desc> <question vote="0"> <p>我正在尝试将用户输入字段中字符串的第一个字符大写。下面是收集名字数据的监听器标签。</p> <pre><code>`<script> (function () { var element = document.querySelector('input[name="firstname"]') element.addEventListener("blur", function(e) { dataLayer.push({ 'event': 'first_name', 'first_name': e.target.value }); }, true); })(); </script>` </code></pre> <p>我尝试了以下几种变体,但没有一个起作用</p> <pre><code>`<script> (function () { var element = document.querySelector('input[name="firstname"]'); **var elementUpper = element.charAt(0).toUpperCase() + str.slice(1);** **elementUpper**.addEventListener("blur", function(e) { dataLayer.push({ 'event': 'first_name', 'first_name': e.target.value }); }, true); })(); </script>` </code></pre> <p>我还使用以下 HTML 创建了一个新标签,但该标签不起作用。</p> <pre><code>`function() { var txt = {{dlv - first_name}}; return txt.replace(/\w\S*/g, function(t){ return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase(); }); }` </code></pre> <p>如有任何指导,我们将不胜感激。</p> </question> <answer tick="false" vote="0"> <p>将工作表达式放在回调函数中,以便在 <pre><code>event</code></pre> 处调用它。另外,对于表单字段,请使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event" rel="nofollow noreferrer"><pre><code>"change"</code></pre> 事件</a>* 而不是 <pre><code>"blur"</code></pre> 事件。请注意,在示例中,<pre><code>this</code></pre> 和 <pre><code>e.target</code></pre> 在非箭头回调函数中可以互换。</p> <p>*<sup>或使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/input_event" rel="nofollow noreferrer"><pre><code>"input"</code></pre> 事件</a> 如果您想立即大写</sup></p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code>let dataLayer = []; const input = document.querySelector(`input[name="firstname"]`); input.addEventListener("change", function(e) { this.value = this.value.charAt(0).toUpperCase() + this.value.slice(1); dataLayer.push({ event: "first_name", first_name: this.value }); console.log(dataLayer); });</code></pre> <pre><code><input name="firstname"></code></pre> </div> </div> <p></p> </answer> </body></html>