GTM 中的 dataLayer 正确配置
dataLayer proper configuration in GTM
根据下面给出的用于生成 dataLayer 变量的示例,应该如何调用事件触发器?
现在我的自定义事件名称是'purchase',我是应该告诉开发者只像上一部分的代码示例中那样生成dataLayer,还是必须根据我的更改一些东西GTM 配置?
据我所知,后端开发人员应该负责正确实现 dataLayer 变量(即 Javascript 数组)。但是 he/she 如何调用 dataLayer 中的元素应该与我们在自定义事件触发器中使用的事件名称相匹配。
出现这个问题是因为几天前我们的电子商务跟踪实施停止注册交易、收入等。阿尔。我没有自己实现,但不知何故我负责修复它。
我们的 GA 配置文件停止记录交易的日期是 8 月 2 日凌晨 4 点。那是在我们的生产服务器中实现的日期。
我们的感谢页面:
我正在检查感谢页面的代码,我注意到 dataLayer 变量未填充交易和项目信息。
它应该是什么样子:我在 OptimizeSmart 博客中找到的内容
GTM UA-采购订单标签和自定义事件触发器:
自定义事件触发器:
如何用PHP生成dataLayer:
我在另一个答案中找到了如何动态填充数据层:
<script>
dataLayer.push({
'ecommerce': {
'currencyCode': '<?php echo $order->get_order_currency(); ?>',
'purchase': {
'actionField':{
'id': '<?php echo $order->get_order_number(); ?>',
'affiliation': 'WooCommerce',
'revenue': <?php echo number_format($order->get_subtotal(), 2, ".", ""); ?>,
'tax': <?php echo number_format($order->get_total_tax(), 2, ".", ""); ?>,
'shipping': <?php echo number_format($order->calculate_shipping(), 2, ".", ""); ?>,
<?php if($order->get_used_coupons()): ?>
'coupon': '<?php echo implode("-", $order->get_used_coupons()); ?>'
<?php endif; ?>
},
'products': [
<?php
foreach($order->get_items() as $key => $item):
$product = $order->get_product_from_item( $item );
$variant_name = ($item['variation_id']) ? wc_get_product($item['variation_id']) : '';
?>
{
'name': '<?php echo $item['name']; ?>',
'id': '<?php echo $item['product_id']; ?>',
'price': '<?php echo number_format($order->get_line_subtotal($item), 2, ".", ""); ?>',
'brand': '',
'category': '<?php echo strip_tags($product->get_categories(', ', '', '')); ?>',
'variant': '<?php echo ($variant_name) ? implode("-", $variant_name->get_variation_attributes()) : ''; ?>',
'quantity': <?php echo $item['qty']; ?>
},
<?php endforeach; ?>
]
}
}
});
</script>
您在 PHP 代码中的数据层推送缺少在 'EV - Order Purchase' 触发器中设置的事件变量。这就是为什么您的交易没有被记录的原因,因为 'UA - Order Purchase' 标签永远不会被其触发器 运行。
你应该使用:
<script>
dataLayer.push({
'event': 'purchase', // same event name as in your trigger
'ecommerce': {
// ecommerce data comes here
}
});
</script>
根据下面给出的用于生成 dataLayer 变量的示例,应该如何调用事件触发器?
现在我的自定义事件名称是'purchase',我是应该告诉开发者只像上一部分的代码示例中那样生成dataLayer,还是必须根据我的更改一些东西GTM 配置?
据我所知,后端开发人员应该负责正确实现 dataLayer 变量(即 Javascript 数组)。但是 he/she 如何调用 dataLayer 中的元素应该与我们在自定义事件触发器中使用的事件名称相匹配。
出现这个问题是因为几天前我们的电子商务跟踪实施停止注册交易、收入等。阿尔。我没有自己实现,但不知何故我负责修复它。
我们的 GA 配置文件停止记录交易的日期是 8 月 2 日凌晨 4 点。那是在我们的生产服务器中实现的日期。
我们的感谢页面:
我正在检查感谢页面的代码,我注意到 dataLayer 变量未填充交易和项目信息。
它应该是什么样子:我在 OptimizeSmart 博客中找到的内容
GTM UA-采购订单标签和自定义事件触发器:
自定义事件触发器:
如何用PHP生成dataLayer:
我在另一个答案中找到了如何动态填充数据层:
<script>
dataLayer.push({
'ecommerce': {
'currencyCode': '<?php echo $order->get_order_currency(); ?>',
'purchase': {
'actionField':{
'id': '<?php echo $order->get_order_number(); ?>',
'affiliation': 'WooCommerce',
'revenue': <?php echo number_format($order->get_subtotal(), 2, ".", ""); ?>,
'tax': <?php echo number_format($order->get_total_tax(), 2, ".", ""); ?>,
'shipping': <?php echo number_format($order->calculate_shipping(), 2, ".", ""); ?>,
<?php if($order->get_used_coupons()): ?>
'coupon': '<?php echo implode("-", $order->get_used_coupons()); ?>'
<?php endif; ?>
},
'products': [
<?php
foreach($order->get_items() as $key => $item):
$product = $order->get_product_from_item( $item );
$variant_name = ($item['variation_id']) ? wc_get_product($item['variation_id']) : '';
?>
{
'name': '<?php echo $item['name']; ?>',
'id': '<?php echo $item['product_id']; ?>',
'price': '<?php echo number_format($order->get_line_subtotal($item), 2, ".", ""); ?>',
'brand': '',
'category': '<?php echo strip_tags($product->get_categories(', ', '', '')); ?>',
'variant': '<?php echo ($variant_name) ? implode("-", $variant_name->get_variation_attributes()) : ''; ?>',
'quantity': <?php echo $item['qty']; ?>
},
<?php endforeach; ?>
]
}
}
});
</script>
您在 PHP 代码中的数据层推送缺少在 'EV - Order Purchase' 触发器中设置的事件变量。这就是为什么您的交易没有被记录的原因,因为 'UA - Order Purchase' 标签永远不会被其触发器 运行。
你应该使用:
<script>
dataLayer.push({
'event': 'purchase', // same event name as in your trigger
'ecommerce': {
// ecommerce data comes here
}
});
</script>