Google Tag Manager 多个增强型电子商务事件

Posted

技术标签:

【中文标题】Google Tag Manager 多个增强型电子商务事件【英文标题】:Google Tag Manager Multiple Enhanced eCommerce Events 【发布时间】:2016-10-03 12:33:16 【问题描述】:

我是 GTM 新手,尝试在 dataLayer 中提交 2 个增强型电子商务事件时遇到问题。当我查看 Google Analytics 时,似乎只发送了最后一个事件。

我遇到了http://www.simoahava.com/analytics/ecommerce-tips-google-tag-manager/,就在摘要之前,它似乎总结了我所说的关于它只提交最后一个。

    dataLayer.push(
        'event': 'addToCart',
        'ecommerce': 
            'currencyCode': 'GBP',
            'add': 
                'products': dataLayerProducts
            
        
    );
    dataLayer.push(
        'event': 'checkout',
        'ecommerce': 
            'checkout': 
                'actionField': 'step': 1,
                'products': dataLayerProducts
            
        
    );

只有结帐会在 Analytics 中注册。我尝试过以下方法:

    dataLayer = [
        'event': 'checkout',
        'event': 'addToCart',
        'ecommerce': 
            'add': 
                'products': dataLayerProducts
            ,
            'checkout': 
                'actionField': 'step': 1,
                'products': dataLayerProducts
            
        
    ];

    dataLayer = [
        'event': 'addToCart',
        'ecommerce': 
            'add': 
                'products': dataLayerProducts
            ,
        
    , 
        'event': 'checkout',
        'ecommerce': 
            'checkout': 
                'actionField': 'step': 1,
                'products': dataLayerProducts
            
        
    ];

但我也没有那样做。如果这是不可能的,任何有用的解决方法将不胜感激。

使用新代码更新: 仍然只发送最后一个事件(结帐)。代码紧跟在 <body> 开头标记之后。

<script>
dataLayer = [];
dataLayerProducts = [];
dataLayerProducts.push(
    'name': 'Product Name',
    'id': 'SKU',
    'price': '29.95',
    'brand': 'Brand',
    'category': 'Some/Category',
    'quantity': 1
);
dataLayer.push(
    'event': 'addToCart',
    'ecommerce': 
        'add': 
            'products': dataLayerProducts
        ,
    
);
dataLayer.push(
    'event': 'checkout',
    'ecommerce': 
        'checkout': 
            'actionField': 'step': 1,
            'products': dataLayerProducts
        
    
);
</script>
<!-- Google Tag Manager -->
// Code
<!-- End Google Tag Manager -->

【问题讨论】:

【参考方案1】:

要触发标签触发,您需要有一个事件,无论该事件是来自先前的推送还是当前的推送,因此将event 一起推送总是一个好习惯 您要发送到 GA 的数据点。 Simo 的例子完美地说明了这一点。但由于 dataLayer 还保留 key:value 对,因此它将始终使用它看到的最新事件。如果您同时推送了多个event,则最后一个推送的会覆盖之前的。这就是为什么您不能在单个 dataLayer.push 中包含多个事件并期望所有关联的标签都会触发。

您需要按照 Simo 的示例进行操作,并将每个数据集/对象连同其自己的 event 一起推送到 dataLayer 中。推送到 dataLayer (dataLayer.push),而不是像您的示例中那样声明它们,允许内置侦听器获取这些特定数据点。

编辑:以修改OP的代码为例:

dataLayer.push(
   'event': 'addToCart',
   'ecommerce': 
      'add': 
         'products': // dataLayerProducts, one object per product
      ,
   
);
dataLayer.push(
   'event': 'checkout',
   'ecommerce': 
      'checkout': 
         'actionField': 'step': 1,
         'products': // dataLayerProducts, one object per product
      
   
);

【讨论】:

您能否修改一个代码示例以帮助我理解?因为我是如何阅读它的,当你说我需要用自己的事件推送每个数据集时,我认为这就是我在问题的第一个代码块中所做的。 在您的第一个代码块中,您通过声明第二个事件来覆盖第一个事件。请记住,正常的 JS 规则适用,所以如果你给一个变量赋值,然后再赋值另一个,那么最后一个会生效。 所以我采用了您的示例代码,并使用我正在使用的完整代码编辑了我的问题。但是,似乎只有结帐事件被推送。分析显示没有添加到购物车的会话,但结帐的会话显示正确。 您必须展示您是如何配置触发器和标签的。每个事件应该有两个触发器(addToCartcheckout)。我在我的页面上使用了与您完全相同的代码,我看到点击数被触发,所以不应该是语法问题。只是好奇,为什么同时推送两个事件? 你是对的,代码运行良好。我的问题是我没有为每个事件设置触发器。一旦我设置它们,上面的代码就完美了。感谢您的帮助。

以上是关于Google Tag Manager 多个增强型电子商务事件的主要内容,如果未能解决你的问题,请参考以下文章

javascript Google Tag Manager表单提交

带有 Google Tag Manager 并手动添加 Google Analytics 的页面

React + Router + Google Tag Manager

来自 Google Tag Manager 的用户数据摄取流程,用于 Recommendation AI Google 云平台

使用 Google Tag Manager 和 Universal Analytics 的 onclick 事件

Google Tag Manager v4 Android 应用测试