我有一个单页电子商务应用程序,需要设置Google电子商务渠道。我的应用程序在标签管理器dataLayer中设置了渠道步骤

文档中没有任何内容指示何时将数据层实际发送到Google跟踪代码管理器。

window.dataLayer从以下页面开始:

  event: 'checkout',
  ecommerce: {
    checkout: { actionField: {step: 1, option: 'Checkout Options'}}
  }


在第一个按钮上单击

$(document).one('click','#button-payment-address', function () {
        window.dataLayer.push({
            'event': 'checkout',
            'ecommerce': {
                'checkout': {
                    'actionField': {
                        'step': 2,
                        'option': 'Billing Details'
                    }
                }
            }
        });
});


dataLayer变为:

event: 'checkout',
ecommerce: {
    checkout: { actionField: {step: 2, option: 'Billing Details'}}
}


在第二个按钮上

$(document).one('click', "#button-shipping-address",  function(){
        window.dataLayer.push({
            'event': 'checkout',
            'ecommerce': {
                 'checkout': {
                    'actionField': {
                       'step': 3,
                       'option': 'Delivery Details'
                    }
                }
            }
        });
        console.log(window.dataLayer);
});


dataLayer变为:

  event: 'checkout',
  ecommerce: {
    checkout: { actionField: {step: 3, option: 'Delivery Details'}}
  }


等等...

什么时候发送dataLayer或有什么方法可以强制发送,请重新初始化dataLayer然后执行下一步?

更新:我在Firefox DevTools / network / XHR下寻找通信,但找不到任何通信。在DevTools / network / images下查看,将显示每次单击时发布的数据。

最佳答案

将数据添加到dataLayer不会将其发送到任何地方。它只是从GTM内部以结构化方式提供数据。每当您将名为“事件”的键推入dataLayer时,GTM都会扫描dataLayer结构并使用更改或添加的值更新其内部数据模型。

这基本上为变量创建一个名称空间。变量可能会被覆盖,因此每次创建新的JS变量时,都需要确保不要重复使用现有名称,并且不小心将新值分配给变量,依此类推。相反,如果您将数据添加到dataLayer,则只需要确保您没有第二个dataLayer变量即可。

话虽如此,您的情况有所不同。您拥有的是Google Universal Analytics增强型电子商务的特殊数据结构。您的Google Analytics(分析)浏览量或事件标签中至少有一个应配置为启用增强型电子商务,并且该设置应从数据层中提取数据。

如果您在GTM中没有标签,那么数据将完全不会发送。

关于javascript - dataLayer.push之后何时将数据发送到Google,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59760514/

10-16 00:19