【问题标题】:Google Tag Manager Multiple Enhanced eCommerce EventsGoogle Tag Manager 多个增强型电子商务事件
【发布时间】: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 -->

【问题讨论】:

    标签: google-analytics 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)。我在我的页面上使用了与您完全相同的代码,我看到点击数被触发,所以不应该是语法问题。只是好奇,为什么同时推送两个事件?
    • 你是对的,代码运行良好。我的问题是我没有为每个事件设置触发器。一旦我设置它们,上面的代码就完美了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多