标签: google-tag-manager

Google 标签管理器 - 没有可用于“item_id”的用户属性,也没有定义默认值。返回“未定义”

我正在尝试将 Firebase 分析和 Google 标签管理器集成到我的 Android 应用程序中。我已经通过 GTM 控制台配置了一些标签和触发器。但我在 Android Studio 的调试控制台中看到以下错误。我想要实现的目标是将我的事件发送到 Firebase 分析、GTM,然后使用 Google 标签管理器将同一事件推送到 Google 分析。我的事件已成功推送到 Firebase 分析,但未推送到 Google 分析。

Firebase 事件跟踪:

Bundle params = new Bundle();
params.putString("screen_name", "Main activity");
mFirebaseAnalytics.logEvent("screenview", params);
Run Code Online (Sandbox Code Playgroud)

调试日志:

04-06 21:27:19.701 14388-23135/com.droidowl.googletagmanager V/FA: Activity resumed, time: 1495667
04-06 21:27:21.098 14388-23135/com.droidowl.googletagmanager D/FA: Passing event to registered event handler (FE): screenview, Bundle[{screen_name=Main activity}]
04-06 21:27:21.103 14388-14829/com.droidowl.googletagmanager D/FA: Fetching user attributes (FE)
04-06 21:27:21.109 14388-23135/com.droidowl.googletagmanager V/FA: Using measurement service
04-06 21:27:21.109 14388-23135/com.droidowl.googletagmanager V/FA: Connecting to remote service …
Run Code Online (Sandbox Code Playgroud)

android google-analytics google-tag-manager universal-analytics firebase-analytics

5
推荐指数
0
解决办法
798
查看次数

Google 跟踪代码管理器集成安全性 - noscript iframe 沙箱

再会。

我有一个使用 Google 跟踪代码管理器的网站,按照官方指南(https://developers.google.com/tag-manager/quickstart)成功实施,包括步骤 2 中建议的片段:

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
Run Code Online (Sandbox Code Playgroud)

<body>接近主模板元素的末尾,正如它应该的那样。

现在,一家咨询机构建议我sandbox向该iframe元素添加一个属性,以加强网站的整体安全性,以及一系列其他建议。

虽然我认为我明白了 iframesandbox属性值及其后果的要点,但我希望有人能启发我,了解它在固定的、可信的 iframe 源的上下文中和 noscript 元素的上下文中的好处是什么(从技术上讲,没有脚本可以执行),特别是在安全性方面。另请解释您认为在这种特定情况下可能合适的值(如果有)。

属性值参考sandboxhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox

我已经搜索过这个,但没有找到关于这个特定问题的参考资料。

先感谢您。

html iframe sandbox noscript google-tag-manager

5
推荐指数
1
解决办法
4456
查看次数

React SPA - GTM Analytics React-Helmet 上一页标题

我正在使用 Google 跟踪代码管理器将页面浏览事件推送到数据层以进行分析跟踪。这种情况发生在componentDidMount()中(如果我正在使用 withRouter 监听 location 属性的查询字符串参数更改,有时会发生在 componentWillReceiveProps()中)。

我正在使用React-helmet在组件更改时动态更新我的标题和其他标签。

我注意到一个问题,即我在 Analytics 中获得的页面标题不正确。它经常显示上一页的页面标题,而不是我当前所在的页面标题。看来react-helmet直到componentDidMount()之后才更新标签之后才更新标签。

页面查看事件函数示例

每次将此事件推送到数据层时,我在 GTM 中的分析标记都会被调用

const firePageViewEvent = () => {
      console.log("Pageview event fired (from tracking script)");

      if (window && window.dataLayer) {
          console.log("window and dataLayer exist, pushing pageview event.");
          let dataLayer = window.dataLayer || [];
          dataLayer.push({
              'event': 'reactPageViewEvent'
          });
      } else {
          console.log("window or dataLater does not exist, cannot push pageview event.");
      }
};
Run Code Online (Sandbox Code Playgroud)

google-analytics single-page-application google-tag-manager reactjs react-helmet

5
推荐指数
1
解决办法
4976
查看次数

Google 跟踪代码管理器 - DOM 元素变量 - 获取子元素的文本

刚学GTM。我想使用 GTM 来使用我命名为“specimen”的 DOM Element 变量来获取元素的文本。该变量当前设置为 CSS 选择器specimen

触发器是设置为 class 的“单击-所有元素”类型specimen_record_thumbnail

从下面的 DOM 中可以看出,specimen选择器需要限制为单击的触发器的父级,即specimen_record_container,因为页面将包含许多这样的结构/类。

specimen我应该如何在 DOM Element 变量中定义 CSS 选择器以获取同级选择器的文本specimen_record_thumbnail

<div class="specimen_record_container">
        <img class="specimen_record_thumbnail" data-specimen="374" src="specimen_media/374/specimen_pk_374_20082014_123312_thumbnail.jpg" border="0">
        <div class="diagnosis" title="<p>Adrenal gland</p>" rel="tooltip">Diagnosis</div>
        <span class="specimen"> T93.M8006<sup>5</sup></span>
    </div>
Run Code Online (Sandbox Code Playgroud)

另外,也许自定义 JavaScript 变量可能会更好......

任何帮助或建议表示赞赏!

更新 - 工作解决方案:感谢 Eike Pierstorff

此代码进入 GTM 自定义 JavaScript 变量以获取父容器倒数第二个子级的文本,然后将其设置为 Universal Analytics 标记的标签:

function () { return {{Click Element}}.parentNode.lastChild.previousSibling.innerText } 
Run Code Online (Sandbox Code Playgroud)

google-tag-manager

5
推荐指数
0
解决办法
5303
查看次数

延迟加载 GTM 是个好主意吗

为了缩短我正在开发的 Web 应用程序的初始加载时间,我想在加载应用程序后运行 GTM 脚本。

  1. 我想知道这是否是一个好主意?
  2. 如果我这样做,可能会产生什么副作用?

google-tag-manager

5
推荐指数
2
解决办法
1万
查看次数

Google 跟踪代码管理器和页面加载性能:它是否会降低 PageSpeed Insights 的性能?

我知道这可能看起来有点模糊,但我将提供更多背景信息:在我工作的公司中,我们使用(我个人的想法是我们滥用)Google Tag Manager (GTM)来注入一些第三方GTM 标签内的脚本。大多数情况下,我们使用它来操作某些页面模板(例如产品页面)中的 DOM 并注入第三方脚本(例如 Zopim 聊天、Facebook Pixel 等\xe2\x80\xa6)。

\n\n

DOMContentLoaded我们通常做的事情是:在页面加载时和/或事件发生时操纵 DOM load,因此对我来说,显然如果没有这些 GTM 标签,我们的网站将在PageSpeed InsightsChrome DevTools\' Lighthouse中获得更好的分数。如果没有激活 GTM 标签,我无法测试该网站,因为它已经在网站中随处可见。

\n\n

这种 GTM 的使用对我们网站的速度有多大影响?

\n

pagespeed google-pagespeed google-tag-manager

5
推荐指数
2
解决办法
1万
查看次数

有没有办法将 data-* 作为脚本属性包含在自定义 Google 跟踪代码管理器中

我在 GTM 中包含一个自定义脚本,用于调用外部资源。脚本看起来像这样

<script type="text/javascript" id="some-key" data-key="xxxxxxxxxxxxxxxxxx" src="link-to-external-resource"></script>

Run Code Online (Sandbox Code Playgroud)

我已将其触发设置为当前触发正常的所有页面,但问题是,脚本在 DOM 中没有data-key属性的情况下呈现。它在 DOM 中的渲染看起来像这样

<script type="text/javascript" id="some-key" src="link-to-external-resource"></script>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?有没有办法在 Google 跟踪代码管理器中包含 data-* 属性?

google-tag-manager

5
推荐指数
1
解决办法
1714
查看次数

作为 [Object 对象] 传递的 Google 跟踪代码管理器变量

我正在使用 GTM 并尝试提交购买事件,但是 custom_map 和项目都被发送并报告为 [Object object]。

我一直在关注谷歌的这些官方文档: https: //developers.google.com/analytics/devguides/collection/gtagjs/ecommerce https://developers.google.com/analytics/devguides/collection/gtagjs/custom-dims -mets

这是我的代码:

gtag('config', 'GTM-ID', {
    custom_map: {
        dimension1: 'tenant_name',
        dimension2: 'office_id'
    }
});

gtag('event', 'purchase', {
    transaction_id: 'string',
    value: 12345,
    currency: 'string',
    tenant_name: 'string',
    office_id: 'string',
    items: [
        {
            id: 'string',
            name: 'string',
            price: 12345,
            quantity: 5
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

当然,示例中的数据是虚拟数据,但结构和数据类型完全相同。查看请求负载,custom_map 和 items 都被编码为 [Object object]。

以下是请求负载:

en=purchase&_et=6&ep.custom_map=%5Bobject%20Object%5D&ep.transaction_id=string&epn.value=12346&ep.tenant_name=string&ep.office_id=string&ep.items=%5Bobject%20Object%5D&cu=string
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

google-tag-manager

5
推荐指数
0
解决办法
1814
查看次数

在谷歌标签管理器中,我们如何使用暂存和实时环境将数据发送到不同的谷歌分析帐户

我正在尝试将 GTM 环境功能与查找表结合使用,并希望将各个环境的数据发送到不同的 Google 分析属性。这可能吗?我们可以使用具有实时和临时环境的单个 GTM 容器并将数据发送到两个不同的 Google Analytics 属性吗?

google-analytics google-tag-manager

5
推荐指数
2
解决办法
3038
查看次数

Google 跟踪代码管理器-injectScript API 从不运行回调

我在标签模板中使用 Google 跟踪代码管理器中的jectScript API,但我无法让它在外部脚本加载(或加载失败)时触发任何回调函数。有什么想法吗?

因此,我的模板具有定义的注入脚本权限: https: //www.google-analytics.com/analytics.js

代码:

// load APIs
const logToConsole = require('logToConsole');
const injectScript = require('injectScript');
const queryPermission = require('queryPermission');

// script url
const url = 'https://www.google-analytics.com/analytics.js';

// Callback to note if script load succeeded
const onSuccess = () => {
  logToConsole('Script LOADED');
  data.gtmOnSuccess();
};

// Callback to note if script load failed
const onFail = () => {
  logToConsole('Script load FAILED.');
  data.gtmOnFailure();
};

// Check permission and load script
logToConsole('Checking permission to load script:' + url); …
Run Code Online (Sandbox Code Playgroud)

javascript google-tag-manager

5
推荐指数
1
解决办法
1026
查看次数