谷歌分析发送事件回调函数

我正在尝试在用户注册之后和重定向之前发送事件go google analytics。 我正在使用Google跟踪代码管理器和univerasl js。

首先,我尝试使用dataLayer对象,如下所述: developers.google

这就是我的function:

//Registering new user via ajax $.ajax('/register/', { success: function() { //Pushing event to dataLayer dataLayer.push({ 'Category': 'Registration Process', 'event': 'Registration Submit Btn' }); //Logging in new user and redirecting the page with a timeout setTimeout(function(){ loginAction(); }, 500) } }) 

麻烦的是,我收到了大约25%的所有活动, 其他所有活动都丢失了 。 我不知道在向dataLayer添加对象之后是否以及何时将事件实际发送给Google,我认为75%的事件根本没有发送。

现在我正在尝试实现另一种方法:

 //Registering new user via ajax $.ajax('/register/', { success: function() { //Sending event through ga('send') parent.ga('send', 'event', 'Registration Process', 'Registration Submit Btn'); //Logging in new user and redirecting the page with a timeout setTimeout(function(){ loginAction(); }, 500) } }) 

但ga(’send’)再没有任何回调函数!

如何使用dataLayer或ga(’send’)确保事件实际发送到谷歌?

终于明白了。 它非常复杂,在文档中没有描述。 在我的情况下,我使用Google跟踪代码管理器,所以我必须做一些变通方法才能成功触发事件并获得回调。

首先,我们必须获取ClientId ,这是发送到Google服务器的任何事件所必需的。 实际上它保存在cookie中,但谷歌不建议直接从那里拿它。

以下是Google建议如何获取它,但如果您使用的是Google跟踪代码管理器, 则无法使用此function。

  ga(function(tracker) { var clientId = tracker.get('clientId'); }); 

相反,您必须从getAll方法获取ClientId。

  var clientId = ga.getAll()[0].get('clientId'); 

之后,您必须创建新的跟踪器

  ga('create', 'UA-XXX-YYY', { 'clientId': clientId }); 

然后我们可以发送一个事件:

  ga('send', 'event', { 'eventCategory': 'YOUR Category Name', //required 'eventAction': 'YOUR Action name', //required 'eventLabel': 'YOUR Label', 'eventValue': 1, 'hitCallback': function() { console.log('Sent!!'); //callback function }, 'hitCallbackFail' : function () { console.log("Unable to send Google Analytics data"); //callback function } }); 

来自Google Analytic doc https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallback 新闻

 // Alerts the user when a hit is sent. ga('send', 'pageview', { 'hitCallback': function() { alert('hit sent'); } }); 

您可以为您编辑hitCallback函数。

要么

 // Use a timeout to ensure the execution of critical application code. ga('send', 'pageview', {'hitCallback': criticalCode}); setTimeout(criticalCode, 2000); // Only run the critical code once. var alreadyCalled = false; function criticalCode() { if (alreadyCalled) return; alreadyCalled = true; // Run critical code here... } 

在这里,您可以在上面的示例中定义您的函数( criticalCode ),该函数可以确保将数据发送到Google Analytic,然后使用您的代码。

为了更好地理解分析的api,fyr: https : //developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference

来自文档: https : //developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback

 ga('send', 'pageview', { 'page': '/my-new-page', 'hitCallback': function() { alert('analytics.js done sending data'); } }); 

在此示例中,字段名称对象配置页面参数,以及设置hitCallback。 跟踪器完成发送数据后,将向用户显示一个警告框。

您可以将hitCallback用于事件,页面查看等。