标签: google-tag-manager

Google 标签管理器 - 它是如何工作的?(建筑学)

我不知道这是不是该问的地方,但它是编程(在某种程度上)。Google 标签管理器是如何工作的?

我的看法是:

  1. 页面加载
  2. GTM 代码加载并执行它的事情 _makes 检查 _creates dataLayer 对象 _invokes gtm.js 库(在浏览器中加载它整个) _pushes 基本对象到 dataLayer _“导入”标签、触发器和变量 _将它们附加到文档节点
  3. 配置为在“pageLoad”触发时触发的任何标记(将数据推送到 dataLayer)
  4. DOM 就绪(为“DOM 就绪”配置的任何标签触发)
  5. 窗口加载(为 'windowLoaded' fire 配置的任何标签)
  6. “触发器”(“规则”)等待附加到正确的 DOM 节点

用户与文档(页面)交互:

  1. 事件发生
  2. 规则('触发器')被评估
  3. 规则触发标签
  4. 标签将事件的信息推送到数据层

然后如何将来自 dataLayer 的数据发送到 Google Analytics、AdWords 或其他配置的服务?哪一段代码做到了这一点?

负责将事件推送到 dataLayer 的标签是否也可能将其发送到 GA 服务?或者是否有其他通用 GA 标签可以提取写入 DL 的所有内容,然后将其发送到 GA?

变量如何融入这个故事?在我看来,它既可以写入变量(标签可以将某些内容存储到预先设置的变量中),也可以在变量中预定义并由标签使用。

感谢您对此的任何澄清。

google-tag-manager

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

通过标签管理器跟踪谷歌分析电子商务中的折扣值

我们正在按照以下文档使用 GTM 实施 GA 转换跟踪,但我没有找到有关如何在订单级别处理折扣(优惠券)的任何信息。 https://support.google.com/tagmanager/answer/6106097?hl=en https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce

我可以发送收入、运费和税金,但对于包含折扣的订单,这些金额的总和不正确。如果下单如下:

T-Shirt:     $5
Socks:       $5
subtotal:   $10
tax:         $2
shipping:    $3
discount:   -$5
order total: $10
Run Code Online (Sandbox Code Playgroud)

我的数据层应该像这样吗?

<script>
dataLayer = [{
    'transactionId': '1234',
    'transactionAffiliation': 'Acme Clothing',
    'transactionTotal': 10,
    'transactionTax': 2,
    'transactionShipping': 3,
    'transactionProducts': [{
        'sku': 'DD44',
        'name': 'T-Shirt',
        'category': 'Apparel',
        'price': 5,
        'quantity': 1
    },{
        'sku': 'AA1243544',
        'name': 'Socks',
        'category': 'Apparel',
        'price': 5,
        'quantity': 1
    }]
}];
</script>
Run Code Online (Sandbox Code Playgroud)

这会导致 GA 中的任何不准确或不一致吗?

google-analytics google-tag-manager

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

XML 包中的 Google 标签管理器脚本中的解析错误

我有一个运行ASPDOTNETSTOREFRONT 的网上商店。

我正在尝试向一组网页添加自定义的跟踪脚本行。

为此,我将一个 Google 标签管理器脚本添加到这些页面使用的 XML 包中,以便它出现在我想要跟踪的所有页面上。

我只是将 Google Tag Manager 脚本复制并粘贴到我的 XML 包中。

`<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-5HD6WH"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<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=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5HD6WH');</script>
<!-- End Google Tag Manager -->`
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用这个包加载一个页面时,它给出了以下错误。

Exception=Error in XmlPackage(.Load), Package=[product.engineproduct.xml.config], Msg=[Exception=An error occurred while parsing EntityName. Line 246, position 42.
]
Run Code Online (Sandbox Code Playgroud)

所以人们可以看到行号和位置,我可以显示来自 XML 包(源代码)的屏幕截图。

http://i.stack.imgur.com/mJ2Tb.jpg

任何人有任何建议如何解决这个问题?

xml asp.net xml-parsing aspdotnetstorefront google-tag-manager

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

如何在 Google Tag Manager 中跟踪自定义 JavaScript 事件?

我有一个自定义 JS 事件,当手风琴面板打开时会触发。我想以面板 ID 作为事件标签跟踪作为 Google Analytics 事件的开放。

使用旧的非 GTM 方法,我会这样做:

$('#my-accordion').on('down.zf.accordion', function(e, panel) {
  ga('send', 'event', 'accordion', 'open', panel.attr('id'));
});
Run Code Online (Sandbox Code Playgroud)

但我想用谷歌标签管理器来做到这一点,并尽可能减少页面代码的变化。

到目前为止,我已经在 Google 标签管理器中创建了这个:

Trigger,键入在“down.zf.accordion”上触发的自定义事件

标记,使用我的跟踪 ID 键入 Universal Analytics,跟踪类型:事件(手风琴,打开,[可能是设置为 panel.attr('id')?] 的全局 JS 变量)

但在 GTM 预览版中进行测试时,该代码甚至不会触发。我究竟做错了什么?

google-analytics custom-events google-tag-manager

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

Google Tag Manager 容器会自动刷新吗?如果是这样,如何/在哪里?

我不清楚 Google 标签管理器Container是否会自动刷新,如果是,如何自动刷新。

该文件指出:

默认情况下,您的容器可以每 12 小时刷新一次。要手动刷新容器,请使用ContainerHolder.refresh()

ContainerHolderSingleton.getContainerHolder().refresh();

这是一个不会立即返回的异步调用。为减少网络流量,refresh()可能每 15 分钟只能调用一次,否则将无操作。

正是“有资格每 12 小时刷新一次”与“手动刷新”部分相结合,这让我感到困惑。因此,我有两个问题:

  1. Google 跟踪代码管理器是否尝试Container每 12 小时刷新一次?
  2. 如果#1 的答案是肯定的,那么这是在哪里/如何发生的?

在这一点上,我的假设是#1 的答案是“是”。

我担心的是,我不确定这种自动刷新发生在哪里,我只访问getContainer()中的ContainerAvailableListener,然后缓存这些值。因此,如果是getContainer()调用触发了更新,就像“交换”新容器一样,我的实现可能不会令人耳目一新。

编辑:我问的原因是我的应用程序的生命周期可能很长。我正在尝试确定是否需要在我的代码中管理容器刷新。

android google-tag-manager

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

如何从 dataLayer 对象中获取值

我想从 google 标签管理器的 dataLayer 对象中获取一些值。在 chrome 标签帮助中,我得到了这样的值

[
  {
    "gtm.start": 1503053374849,
    "event": "gtm.js",
    "gtm.uniqueEventId": 0
  },
  {
    "event": "gtm.dom",
    "gtm.uniqueEventId": 1
  },
  {
    "event": "gtm.load",
    "gtm.uniqueEventId": 2
  },
  {
    "Linker": "_ga=53655374"
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要获得“链接器”值。我试过了,dataLayer[3].Linker但它给了我“未定义”或空白也相同dataLayer[1].event(它是空白而不是返回值 =“gtm.dom”)当我尝试时dataLayer[0].event它返回正确'gtm.js'

请帮助我如何获得“链接器”值

javascript jquery google-tag-manager google-datalayer

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

加载 GoogleTagManager 容器时 iOS 应用程序崩溃

我需要在我的 iOS 应用程序中为 GoogleAnalytics 实施 Firebase+Google 标签管理器。

我通过为 GoogleTagManager 和 Firebase/Core 安装最新版本的 pod,在一个空白的 iOS 项目上尝试了 POC。POC 工作正常,我能够发送事件并且事件被记录到服务器上的 GA。

但是,当我安装最新版本的 GTM 和 Firebase/Core 时,同样的 GoogleServices-info.plist,同样的 GTM-XXXXXXX.json,我发现我的应用程序崩溃了,我可以看到“GoogleTagManager info: Loading container: GTM-XXXXXXX”我的控制台中的最后一行。

Removing GoogleInterchangeUtilities
Downloading dependencies
Installing Firebase 4.3.0 (was 3.7.1)
Installing FirebaseAnalytics 4.0.4 (was 3.4.4)
Installing FirebaseCore 4.0.8 (was 3.4.3)
Installing FirebaseInstanceID 2.0.4 (was 1.0.9)
Using GoogleAnalytics (3.17.0)
Using GoogleSymbolUtilities (1.1.2)
Installing GoogleTagManager 6.0.0 (was 5.0.8)
Installing GoogleToolboxForMac (2.1.3)
Using GoogleUtilities (1.3.2)
Installing nanopb (0.3.8)
Run Code Online (Sandbox Code Playgroud)

当我删除 GoogleTagManager 并只保留 FirebaseAnalytics 时,应用程序运行良好,Firebase Analytics 正在服务器上接收事件。 …

google-analytics ios google-tag-manager swift firebase-analytics

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

从 Android Studio 3.0.1 的 url 加载资源时出现 Google 标签管理器错误

我正在尝试通过 Android studio 3.0.1 添加 GTM 容器已发布,但容器尚未加载。我收到一个错误

 E/GoogleTagManager: NetworkLoader: Error when loading resource from url:
https://www.google-analytics.com/gtm/android?id=GTM-XXXXXXX&pv=-1&rv=5.0
    Bad response: 403
Run Code Online (Sandbox Code Playgroud)

google-analytics google-tag-manager android-studio

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

如何在 React 上跟踪页面浏览量

所以基本上我遇到的问题是我的网站使用的是 reactjs,所以它不会重新加载,我需要检测 URL 上的更改,以便向 Google Analytics 发送新的综合浏览量。有没有人处理过这个问题?


编辑:也许我有点不清楚,我使用 Google 标签管理器,我无法控制页面上的代码,但我可以请求 dataLayers。显而易见的解决方案是在页面更改时请求 dataLayer 但由于我想避免这样做,我严格询问是否有人知道从 GTM 检测 DOM 上的此类更改的方法。

google-analytics google-tag-manager reactjs

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

Google Analytics 未收到事件(忽略命令。未知目标:未定义)

所以我通过谷歌标签管理器设置了我的谷歌分析。页面浏览量跟踪工作正常。但是当我尝试跟踪任何事件时,数据就是无法通过 Analytics。事件跟踪也不适用于传统的 Analytics 代码。

分析调试显示几个“创建配置有一个未知参数:x”和“命令被忽略。未知目标:未定义”

据说这意味着我的跟踪器名称有问题。我已经尝试了默认名称和自定义名称。

可能值得一提:直到最近,我网站的默认 URL 在 Analytics 网站首选项中都是错误的,但我不确定这是否与此有关。

分析调试消息:

Executing Google Analytics commands.
analytics_debug.js:10 Running command: ga("create", {2: null, 3: null, 6: "1", 10: false, 11: false, 12: false, 16: false, 17: false, 18: false, 28: false, 32: "UA-1439995-1", 33: false, 34: false, 35: [{fieldName: "cookieDomain", value: "auto"}]}, {name: "gtm5"})
analytics_debug.js:10 Creating new tracker: t0
analytics_debug.js:10 Create config had an unknown parameter: "2"
analytics_debug.js:10 Create config had an unknown parameter: "3"
analytics_debug.js:10 Create config had an unknown …
Run Code Online (Sandbox Code Playgroud)

google-analytics google-tag-manager

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