Google跟踪代码管理器访问数据层对象值

问题描述 投票:0回答:1

我正在尝试在添加到购物车事件时访问数据层变量,但不会在标记管理器管理站点上跟踪它

*触发事件,但不发送值

数据层推送:

<script>
  dataLayer.push({
    'event': 'addToCart', 
    'ecommerce': {
      'currencyCode': 'EUR', 
      'add': {
        'products': [
          {
            'name': 'test',
            'id': 'ZZZ232323',
            'price': 33,
            'brand': '',
            'category': 'test',
            'variant': '','quantity': 1
          }
        ]
      }
    }
  });
</script>

我正在尝试访问数据层以获取产品名称:

dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products[dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products.length - 1].price

Image of google tag manager site

google-tag-manager google-datalayer
1个回答
0
投票

数据层变量不需要引用dataLayer的特定步骤(数组元素)。当您创建对dataLayer变量的引用时,例如ecommerce,Google跟踪代码管理器(GTM)将尝试在任何给定的GTM事件中对其进行评估,但会回退到undefined或您指定的任何其他值。

这意味着,如果您在产品数据可用时触发Facebook Pixel跟踪代码(event = addToCart),对电子商务数据的正确引用将具有价值。有几种方法可以获取您的产品名称。

您可以创建一个通用的“电子商务”变量,将ecommerce引用为数据层变量名称。在与Facebook Pixel相关的代码中,您必须走到所需的变量,并且还要注意任何可能的缺失值。但是,此电子商务变量可用于多个标签。

var productName = {{Ecommerce}}.add.products[0].name; //assuming you'll always have just one product in products array

或者,您可以使用特定变量,其中设置“电子商务 - 产品名称已添加到购物车”,您可以在其中引用ecommerce.add.products[0].name。这样,您可以使用{{Ecommerce - name of product added to cart}}将此变量简单地分配给正确的Facebook Pixel变量

© www.soinside.com 2019 - 2024. All rights reserved.