【问题标题】:Google analytics 4 events sometimes not arrivingGoogle Analytics 4 事件有时未到达
【发布时间】:2022-12-17 21:14:12
【问题描述】:

我通过在“成功购买”页面上将自定义事件从 JavaScript 发送到 Google 跟踪代码管理器来跟踪 Google Analytics 网站上的购买情况。在大多数情况下,这都能完美运行,但在某些情况下,事件似乎并未到达 Google Analytics(分析)。

最初我认为可能无法依赖访问成功页面,但后来我在触发记录事件发送到我的数据库的事件后添加了一个额外的调用。令我惊讶的是,到目前为止的事件总是登录到我的数据库,但它们有时仍未显示在分析中。这是执行此操作的代码:

                    const event = {
                        'event': 'purchase',
                        'ecommerce': {
                            'transaction_id': orderData.id,
                            'value': orderData.price,
                            'currency': 'EUR',
                            'coupon': orderData.CouponCode,
                            "items": orderData.services.map(elem => ({
                                'item_id': elem.id,
                                'item_name': elem.name,
                                'price': elem.price,
                                'item_type': elem.type,
                                'quantity': 1,
                            })),
                        }
                    };
                    
                    // Send GA4 purchase event
                    dataLayer.push(event);
                    
                    // Log to my db
                    fetch("/ajax/trackAnalytics", {
                        method: "POST",
                        headers: {
                            "Content-Type": "application/json",
                        },
                        body: JSON.stringify({
                            event,
                            cleaning_id: orderData.id
                        })
                    })

让我们以 12 月 2 日为例。根据谷歌分析,这些是传入的购买:

但是在我的数据库中,我收到了以下日志(我编辑了“项目”字段,因为它包含客户信息,但这无关紧要):

{
   "event":"purchase",
   "ecommerce":{
      "transaction_id":6520,
      "value":73.89,
      "currency":"EUR",
      "coupon":null
   },
   "timestamp":"2022-12-02T15:10:47+00:00"
}

{
   "event":"purchase",
   "ecommerce":{
      "transaction_id":6519,
      "value":67.99,
      "currency":"EUR",
      "coupon":null
   },
   "timestamp":"2022-12-02T15:57:44+00:00"
}

{
   "event":"purchase",
   "ecommerce":{
      "transaction_id":6487,
      "value":197.05,
      "currency":"EUR",
      "coupon":null
   },
   "timestamp":"2022-12-02T19:17:54+00:00"
}

如您所见,除 ID 为 6520 的交易外,所有内容都匹配。

我尝试创建包含 6520 所做的确切元素的订单,但我无法以这种方式重现该问题。我也尝试在我的浏览器上启用跟踪器拦截器来做同样的事情,但数据仍然通过。

标签管理器设置如下:

购买触发:

购买标签:

【问题讨论】:

    标签: google-analytics google-tag-manager


    【解决方案1】:

    有时,如果用户在浏览器上安装了广告拦截扩展程序。

    这些类型的分析标签根本不会触发。

    你说你试过安装某种这样的东西,它会起作用。这意味着您可能安装了与用户不同的拦截器。

    并非每种拦截器都会拦截 GA 请求。但他们中的一些人仍然这样做了。


    导致GA4命中未发送的原因还有很多。但是如果我们使用客户端 GTM 容器。它总是与后端数据有一些不同。只是或多或少。

    【讨论】:

    • 由于阻止程序,我认为更多的交易被阻止是合理的。我已经使用了一个带有内置拦截器的浏览器,这已经很少见了,即使如此,事件也会发生。更严重的阻塞应该更罕见,但所有事件中有三分之一被丢弃。
    • 因此,如果我们想从另一个角度对此进行调查。这可能是该脚本运行的时间。使用window.dataLayer = window.dataLayer || []; window.dataLayer.push(event)更安全确保dataLayer已经存在或者先初始化数组。
    • 我不确定是什么解决了它,但它已经正常工作了好几天了。可能是 window.dataLayer = window.dataLayer || [],尽管我添加该行与问题的解决并不完全一致。
    【解决方案2】:

    正如 Darrellwan 所建议的那样,在 dataLayer.push 之前添加行 window.dataLayer = window.dataLayer || []; 似乎已经解决了问题,但并不是 100% 清楚。

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2022-06-29
      相关资源
      最近更新 更多