新Google Analytics(analytics.js)设置中未跟踪事件
我有一个网站,我正在使用新的通用分析(analytics.js)进行跟踪。 使用以下代码片段设置和工作(网页浏览,推介等):
(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-39570713-1', 'site.com'); ga('send', 'pageview');
它位于标记之前。
我正在使用JQuery来发起一个事件。 我用一条警告消息测试了JQuery并且它被调用了,所以这不是问题所在。 以下是单击按钮时触发的代码段:
$('#submitButton').on('click', function() { ga('send', 'event', 'button', 'click', 'contact form'); });
Google Analytics的“事件”部分中没有任何内容。 我一直点击按钮,即使是从不同的计算机,只是为了确保它不排除我的IP地址。 由于Google提供的Google Analytics(分析)文档并未提供大量解释,因此我不知所措。
如果您使用Google跟踪代码管理器并且还希望通过代码触发某些事件,则ga('send'...)
似乎不够。 您需要先获取适当的分析对象:
if ("ga" in window) { tracker = ga.getAll()[0]; if (tracker) tracker.send("event", "Test", "Test GA"); }
请注意,这假设您仅在您的网站上使用单个Google Analytics跟踪代码。 如果您碰巧使用多个,则可能需要按名称或索引获取适当的一个。
出于测试目的,您还可以使用hitCallback方法:
ga('send', { 'hitType': 'event', 'eventCategory': 'button', 'eventAction': 'click', 'eventLabel': 'contact form', 'hitCallback' : function () { alert("Event received"); } });
更新:逗号丢失。
我有同样的问题。 我必须创建一个新属性并选择“Universal Analytics”而不是“Classic Analytics”(它标记为“beta”)。 现在可以正确捕获事件。
我遇到了同样的问题,而且我认为我已经找到了解决方案,但是对于Universal Analytics来说,这真的让我感觉很糟糕。
我必须做的是明确使用同步分析API。 因此,不要在标记中包含常用的代码段,请使用以下代码:
然后你像这样调用事件跟踪代码:
tracker.send('event', 'Category', 'Action', 'Label');
这将确保跟踪信标发送给Google 并在用户导航到的页面开始加载之前得到确认 。
这表明Universal Analytics需要某种额外的确认,而不是旧的ga.js
分析代码所需要的。 因此,当您将事件附加到将用户带到另一个页面的单击时,无法发送该确认,因为浏览器已离开页面并删除了当前的javascript执行堆栈。
也许这个问题特定于某些执行环境(我在OSX Mountain Lion上使用Chrome 34),这可能解释了为什么更多的开发人员没有注意到这个问题。
在我的情况下,问题是阻止分析脚本加载的uBlock Origin。
我看不出代码本身有什么问题。 您是否尝试过使用备用事件跟踪?
ga('send', { 'hitType': 'event', // Required. 'eventCategory': 'button', // Required. 'eventAction': 'click', // Required. 'eventLabel': 'contact form' });
我还建议使用GA Debug Chrome插件测试网站,这样您就可以看到跟踪信号是否已发送。
截至目前,Universal Analytics的“官方”调试文档仍然缺失,但希望很快就会添加,因为ga_debug.js提供了很多有用的方法来找出Google Analytics实施的错误…
我有同样的问题,看起来跟踪事件,但GA仪表板不允许浏览它们。 这是我可以解释GA仪表板显示的“事件访问次数:1071”但“总事件:0”的唯一方法。
UPD :使用GA Chrome调试,发现了一个问题; 第一种方法不起作用(发送事件没有附加任何数据),但第二种方法是OK。
您还应该考虑在ga脚本能够执行’send’方法之前触发提交事件后页面可能会重新加载。 为避免这种情况,您可以使用’hitCallback’机制,即阻止提交,调用ga send-method并在回调中提交表单数据。
我得到了它 – 我的例子是使用新的Universal Analytics。
- 确保Google Analytics / Google跟踪代码管理器filter不排除来自其他域的任何流量。 (也许你正在测试它以使用不同的域工作)
- 在ga(’create’,’UA-39570713-1’,’site.com’)中重新检查您的GA ID和域名;
- 在Google Analytics(GA)中创建新的配置文件以进行测试,并在您在GA中定义的同一域中调试html。
- 在GA中更改今天的日期 – 您可能还需要等待一段时间才能在GA中出现
在我的情况下它没有用,因为我直接从文件系统加载HTML文件。
通过Web服务器加载页面就可以了。
对于本地开发,像https://github.com/tj/serve这样的工具做得很好。
今天我需要第一次设置分析,我发现自己遇到了同样的麻烦。
我发现处理多个跟踪器以避免getAll()
的getAll()
是这样的:
请注意,您必须将“名称”传递给create方法,然后使用ga([trackerName].send, ...)
将事件发送到该跟踪器
参考: https : //developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers
我建议通过window.dataLayer.push({ event: 'EVENT_NAME', ...data })
发送GTM事件window.dataLayer.push({ event: 'EVENT_NAME', ...data })
并在GTM中创建触发器以触发将事件发送到Google Analytics的标记。 您将获得GTM预览的最佳调试体验,并且您将确保将事件从GTM发送到GA,因为GTM负责这一点。
解决问题的唯一方法是回滚到之前版本的Analytics(非beta):
您还可以使用我为新的Universal Analytics编写的jquery插件: https : //github.com/pascalvgemert/jquery-analytics-event-tracking