sendHitTask 不适用于通过 GTM Universal Analytics 标记模板发送的命中
sendHitTask not working with hits sent via GTM Universal Analytics tag template
我已经实施了 Google Analytics sendHitTask
跟踪器方法,以便将任何命中(页面浏览量、事件...)的副本推送到 Google Analytics 发送给自己的然后我可以检查数组并用于调试:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXX-1', 'auto');
// https://developers.google.com/analytics/devguides/collection/analyticsjs/tasks#adding
ga(function(tracker) {
var originalSendHitTask = tracker.get('sendHitTask');
tracker.set('sendHitTask', function(model) {
originalSendHitTask(model); // Send to GA as usual
window.gaDebugging.push(model); // Push copy to debugging array
});
});
ga('send', 'pageview');
这适用于:
- 我通过代码推送的点击数(例如
<button onclick="ga('send', 'event', 'Test'...
- 我通过 GTM 使用
Custom HTML Tag
发送的点击(例如 <script>ga('send', 'event', 'Test'...</script>
)
但是这不适用于:
- 我使用内置的 Universal Analytics 模板通过 GTM 发送的匹配 (
[1] Choose Products -> Universal Analytics
)
知道如何通过内置的 Universal Analytics 模板标签跟踪 GTM 发送的点击并将这些点击推送到 JavaScript 数组吗?
当您使用 ga(function(tracker) { ... })
语法时,该函数使用 ga('create', 'UA-XXXXX-Y')
命令创建的默认跟踪器作为其参数。
换句话说,您在此回调中执行的任何操作将仅适用于使用此默认跟踪器发送的点击。
Google 当您使用标签模板创建标签时,标签管理器不使用默认跟踪器。相反,它为每个注入的标签提供了一个唯一的跟踪器名称。这部分是因为 GTM 还不真正支持您在跟踪器 上设置的字段 与您在标签 上设置的字段 之间的区别.
要对使用 GTM 标签模板创建的标签应用您的 sendHitTask
操作,您需要 重命名这些模板使用的跟踪器 。您可以在 高级配置 > 设置跟踪器名称 下找到此设置。只需将该字段留空(确保您已选中该复选框)。现在,具有此设置的标签模板将使用默认跟踪器名称,您对 ga(function(tracker) { ... })
中的 tracker
对象执行的任何操作也将应用于 GTM 标签模板。
但是! 这是有风险的,因为正如我上面所写的,GTM 没有针对跟踪器与单个标签的单独字段。换句话说,您为一个标签模板添加的任何 要设置的字段 和 自定义 Dimensions/Metrics 现在将应用于 所有 次共享跟踪器名称的点击。如果您想发送命中范围的自定义维度,或单独为单个命中设置字段,这尤其有问题。
遗憾的是,除了使每次命中之间的每个跟踪器字段无效之外,确实没有适当的解决方法,但这是一个很大的开销。您可以做的一件事是仅使用自定义 HTML 标签来处理 Google 分析命中,使用内联 ga('send'...)?
语法,但这确实削弱了首先使用 GTM 的原因。
我已经实施了 Google Analytics sendHitTask
跟踪器方法,以便将任何命中(页面浏览量、事件...)的副本推送到 Google Analytics 发送给自己的然后我可以检查数组并用于调试:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXX-1', 'auto');
// https://developers.google.com/analytics/devguides/collection/analyticsjs/tasks#adding
ga(function(tracker) {
var originalSendHitTask = tracker.get('sendHitTask');
tracker.set('sendHitTask', function(model) {
originalSendHitTask(model); // Send to GA as usual
window.gaDebugging.push(model); // Push copy to debugging array
});
});
ga('send', 'pageview');
这适用于:
- 我通过代码推送的点击数(例如
<button onclick="ga('send', 'event', 'Test'...
- 我通过 GTM 使用
Custom HTML Tag
发送的点击(例如<script>ga('send', 'event', 'Test'...</script>
)
但是这不适用于:
- 我使用内置的 Universal Analytics 模板通过 GTM 发送的匹配 (
[1] Choose Products -> Universal Analytics
)
知道如何通过内置的 Universal Analytics 模板标签跟踪 GTM 发送的点击并将这些点击推送到 JavaScript 数组吗?
当您使用 ga(function(tracker) { ... })
语法时,该函数使用 ga('create', 'UA-XXXXX-Y')
命令创建的默认跟踪器作为其参数。
换句话说,您在此回调中执行的任何操作将仅适用于使用此默认跟踪器发送的点击。
Google 当您使用标签模板创建标签时,标签管理器不使用默认跟踪器。相反,它为每个注入的标签提供了一个唯一的跟踪器名称。这部分是因为 GTM 还不真正支持您在跟踪器 上设置的字段 与您在标签 上设置的字段 之间的区别.
要对使用 GTM 标签模板创建的标签应用您的 sendHitTask
操作,您需要 重命名这些模板使用的跟踪器 。您可以在 高级配置 > 设置跟踪器名称 下找到此设置。只需将该字段留空(确保您已选中该复选框)。现在,具有此设置的标签模板将使用默认跟踪器名称,您对 ga(function(tracker) { ... })
中的 tracker
对象执行的任何操作也将应用于 GTM 标签模板。
但是! 这是有风险的,因为正如我上面所写的,GTM 没有针对跟踪器与单个标签的单独字段。换句话说,您为一个标签模板添加的任何 要设置的字段 和 自定义 Dimensions/Metrics 现在将应用于 所有 次共享跟踪器名称的点击。如果您想发送命中范围的自定义维度,或单独为单个命中设置字段,这尤其有问题。
遗憾的是,除了使每次命中之间的每个跟踪器字段无效之外,确实没有适当的解决方法,但这是一个很大的开销。您可以做的一件事是仅使用自定义 HTML 标签来处理 Google 分析命中,使用内联 ga('send'...)?
语法,但这确实削弱了首先使用 GTM 的原因。