Google 跟踪代码管理器多个增强型电子商务事件

Google Tag Manager Multiple Enhanced eCommerce Events

我是 GTM 新手,尝试在数据层中提交 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 -->

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

你需要做什么按照 Simo 的例子,将每个数据 set/object 连同它自己的 event 推入数据层。推送到 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
      }
   }
});