繁体   English   中英

某些提交的 Google Analytics 事件跟踪失败

[英]Google Analytics events tracking fails for some submissions

我在我们的网站上使用谷歌标签管理器,并在提交表单后通过它向谷歌分析发送事件。 以下代码只是简单地与提交确认一起打印。

$(document).ready(function() {
    sendGA('form_submit_completed', '{form_id}', '{form_sender}');
});

sendGA function 定义如下。

function sendGA(anec, anea, anel) {

   if(typeof dataLayer === 'undefined') {
    console.log('Google analytics undefined, aren\'t you logged in?');
    return;
   }

   dataLayer.push({
    'event': 'ga_custom_event',
    'ga_anec': anec,
    'ga_anea': anea,
    'ga_anel': anel
   });

   console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}

当将来自 Google Analytics 的数据与我们数据库中记录的提交进行比较时,我可以看到有些提交没有记录在 Google Analytics 中。 我自己无法在任何浏览器中复制它。

有谁知道可能导致这种行为的原因? 我知道所有操作都是异步的,所以有时如果用户立即离开页面,请求可能无法通过。 但是在上周,这发生在大约 10% 的提交中,这是由这个引起的。

更新的源代码仍有 10% 的下降:

function sendGA(anec, anea, anel)
{
    anec = anec || "empty_anec";
    anea = anea || "empty_anea";
    anel = anel || "empty_anel";
    let loggedIn = false;

    if(typeof window.dataLayer === 'undefined') {
        console.log('Google analytics undefined, aren\'t you logged in?');
        loggedIn = true;
    }

    window.dataLayer = window.dataLayer || [];

    window.dataLayer.push({
        'event': 'ga_custom_event',
        'ga_anec': anec,
        'ga_anea': anea,
        'ga_anel': anel
    });

    if(!loggedIn)
        console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}

这可能是某种竞争条件。 如果 GTM 在此 DOM 就绪代码触发后加载,您的代码将不会尝试跟踪(根据您的typeof dataLayer === 'undefined'检查)。

实际上,在这种情况下无需担心时间问题,因为 dataLayer 是一个消息队列。 即使它还不存在(即 GTM 尚未加载),您仍然可以将内容推送到它上面,并且当 GTM 赶上时您的标签将触发。

尝试修改以下内容:

function sendGA(anec, anea, anel) {

   window.dataLayer = window.dataLayer || [];
   window.dataLayer.push({
    'event': 'ga_custom_event',
    'ga_anec': anec,
    'ga_anea': anea,
    'ga_anel': anel
   });

   console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}

如果您在此更改后仍然看到丢失的数据,是否也有丢失的变量? 如果您没有事件类别或事件操作的值(在您的情况下,事件操作是变量),则事件命中将无效,并且在 Google Analytics 收集期间将被忽略。

旁注:如果 {form_sender} 变量是用户的 email 地址或其他个人信息,您需要避免收集这些信息,因为它违反了 GA 服务条款以获取个人身份信息 (PII)。

https://support.google.com/analytics/answer/2795983?hl=en

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM