我有一个指向我的网页的链接,我希望在将用户重定向到外部页面之前使用 Google Analytics 和 Google Tag Manager 跟踪用户。
我想确保在执行重定向之前完成 GA 和 GTM。最好的方法是什么?
一个简单的方法是使用 setTimeout。但是 1000 毫秒是太长还是太短?如果可以在跟踪实际完成时进行重定向,会更喜欢吗?。GTM 和 GA 跟踪是否在文档准备好之前完成?如果不能,这可以强制吗?
<html lang="sv">
<head>
<title></title>
<meta charset="utf-8"/>
<script src="~/Scripts/jquery-2.1.0.min.js"></script>
<!-- ANALYTICS CODE -->
</head>
<body>
<!-- TAG MANAGER CODE -->
<script language="javascript">
$(function() {
setTimeout(function() {
window.location.replace("http://externalwebsite.com");
},1000);
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在 GTM 存储桶中,我有 Twitter 和 Facebook 再营销标签。
更新的解决方案
我已经更新了我的解决方案。因为我最感兴趣的是确保 GA 在重定向之前绝对触发,这会更好。
<html lang="sv">
<head>
<title></title>
<meta charset="utf-8"/>
<script src="~/Scripts/jquery-2.1.0.min.js"></script>
<script language="javascript">
var redirect = function(waitFor) {
return function(signal) {
waitFor[signal] …Run Code Online (Sandbox Code Playgroud) 我的数据层中有动态值,我想从 Google 跟踪代码管理器中的自定义 HTML 访问这些动态值
标签中的自定义 HTML:{用于跟踪订单的像素图像}
<img src="https://httpool-secure.net/p.ashx?o=59&e=51&f=img&t={{transactionId}}&etc={{transactionTotal}}" width="1" height="1" border="0"
Run Code Online (Sandbox Code Playgroud)
我的数据层对象:
[{
"event": "ordersuccess",
"transactionId": 86886,
"transactionAffiliation": "Powai",
"transactionTotal": 158,
"transactionTax": 17.5,
"transactionProducts": [{
"sku": "2395",
"name": "Masala Calzone ",
"category": "OTHERS",
"price": "70",
"quantity": "2"
}]
}, {
"gtm.start": 1454584525056,
"event": "gtm.js"
}, {
"event": "gtm.dom"
}, {
"event": "gtm.load"
}]
Run Code Online (Sandbox Code Playgroud)
现在,当我发布标签时,我收到错误:
在标签中发现未知变量“transactionTotal”。编辑标签并删除对未知变量的引用。
在标签中发现未知变量“transactionId”。编辑标签并删除对未知变量的引用。
如何将变量关联到我的标签???
当我在 React 上的 GTM 中添加触发器<a />或<Link />元素它会在单击时导致整个页面重新加载,而不是仅重新呈现应用程序的一部分。
当我删除谷歌跟踪时,一切正常。有没有办法,如何配置 GTM 不影响应用程序的行为?
我正在尝试在我的页面上实施Google 跟踪代码管理器脚本,但它抛出了错误。我将 html 页面精简为最简单的内容:
<html>
<head>
<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','GTM-XXXX');</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但我仍然看到控制台中抛出以下错误:
Uncaught TypeError: Cannot read property 'test' of undefined
at <anonymous>:14:12
at gtm.js?id=GTM-XXXX:57
at Object.Th (gtm.js?id=GTM-XXXX:59)
at sf (gtm.js?id=GTM-XXXX:31)
at uk.B (gtm.js?id=GTM-XXXX:90)
at ag (gtm.js?id=GTM-XXXX:99)
at jg (gtm.js?id=GTM-XXXX:39)
at Array.a.push (gtm.js?id=GTM-XXXX:105)
at Array.<anonymous> (gtm.js?id=GTM-XXXX:105)
at Lf (gtm.js?id=GTM-XXXX:34)
Run Code Online (Sandbox Code Playgroud)
GA 调试器 Chrome 扩展显示脚本仍在“工作”,即所有正确的 ga 方法都在触发。我只是关心这个错误是什么。
请注意,我在 Firefox 和 Safari 中也遇到了相同的错误(跟踪看起来略有不同,但它是相同的错误):
TypeError: undefined is not an object (evaluating 'tryformurls.test')
Global Code (Script Element …Run Code Online (Sandbox Code Playgroud) 所以我在 GTM 中有一个自定义的 javascript 变量:
function(){
var products = {{dlv ecommerce products}};
var prodinfo = [];
for(var i = 0; i < products.length; i++){
prodinfo.push({
'subTotal': products[i].price,
'category': products[i].category,
'sku': products[i].id,
'quantity': products[i].quantity,
'name': products[i].name
});
}
return prodinfo;
}
Run Code Online (Sandbox Code Playgroud)
我正在为我的事件 event_process 运行此代码,并将其推送到数据层,成功地在该事件中为调试器填充:
[
{
subTotal: '149.99',
category: 'main-product',
sku: 'WB36',
quantity: 1,
name: 'The Revolutionary Wombo'
},
{
subTotal: '0',
category: 'accessory',
sku: 'LL550',
quantity: 1,
name: '7-day warranty'
}]
Run Code Online (Sandbox Code Playgroud)
Google Analytics 标签在调试器中成功显示了此信息,但在我的自定义 HTML 标签的调试器中:
"[object, Object],[object Object]"
Run Code Online (Sandbox Code Playgroud)
并且网络似乎没有选择键值对。标签在正确的事件上触发,而其他标签正在拾取对象数组,所以我很困惑为什么这个标签不能显示数组中的对象。我唯一能想到的可能是自定义 …
标签如下:
<script type="text/javascript">
var foo = "="
</script>
Run Code Online (Sandbox Code Playgroud)
但是当我在预览模式下查看它时,它显示:
<script type="text/gtmscript>
var foo = "\x3d"
</script>
Run Code Online (Sandbox Code Playgroud)
我完全迷失了这个,这是在“自定义 HTML 标签”中。
我究竟做错了什么?
Google 跟踪代码管理器 (GTM) 会缩小所有标签和代码片段并提供缩小的服务。这很好。
但加载标签本身的 javascript 并未最小化。
例如: https: //www.googletagmanager.com/gtm.js? id=GTM-WPGCQNW
// Copyright 2012 Google Inc. All rights reserved.
(function(w,g){w[g]=w[g]||{};w[g].e=function(s){return eval(s);};})(window,'google_tag_manager');(function(){
var data = {
"resource": {
"version":"137",
"macros":[{
"function":"__jsm",
"vtp_javascript":["template","(function(){var a=new Date(document.querySelector('meta[name\\x3d\"article_date_original\"]').content);return a.toISOString()})();"]
...
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到总的 javascript 并未缩小,但每一行的内容都缩小了。
我的问题是,是否有答案:如何链接到缩小版本?谷歌也提供这个吗?
当我按照谷歌的script强烈推荐将谷歌标签管理器放在我网站的头部时;
该脚本基本上延迟了 onload 事件,从而增加了页面的交互时间。
我通过在 3000 毫秒后使用setTimeout() function.
这极大地提高了网站的性能。但这不是由Google. 因为我知道 gtm 脚本有问题。有解决方法吗?
我正在尝试为网站设置 Google Analytics App+Web 的电子商务事件配置。请参阅此处的文档。
因为电子商务配置有很多自定义代码,所以我不能使用通用的 GA App+Web webevent 模板,所以在这种情况下我使用自定义 HTML 标签。
作为第一个测试,我尝试触发以下简单事件:
<script>
gtag('event', 'blabla', {
'test_param1': 'test_value_1'
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是,事件没有正确发送到 GA;相反,控制台中返回以下错误:
未捕获的 ReferenceError:gtag 未定义
要重现,请参阅以下页面:https : //www.hema.nl/mooi-gezond/make-up/make-up-accessoires/toilettassen-1/toilettas-11830901.html
附加信息:
有谁知道出了什么问题,为什么会出现控制台错误以及为什么事件没有发送到 GA?
我最近的任务是清理我们的 GTM 标签。我注意到很多标签通过使用 JS 将它们注入到 DOM 中来包含远程脚本,例如:
var head = document.getElementsByTagName('head')[0]
var js = document.createElement('script');
js.src = 'https://cdn.somewhere.com/script.js';
head.appendChild(js);
Run Code Online (Sandbox Code Playgroud)
人们这样做而不是仅仅使用它有什么具体的原因吗?
<script type="text/javascript" src="https://cdn.somewhere.com/script.js" async></script>
Run Code Online (Sandbox Code Playgroud)
第一种方式有什么好处?有没有更好的方法来处理外部脚本?