【问题标题】:dataLayer proper configuration in GTMGTM中的dataLayer正确配置
【发布时间】:2018-08-04 19:15:18
【问题描述】:

应该如何调用事件触发器,基于下面给出的用于生成 dataLayer 变量的示例?

现在我的Custome Event名称是“purchase”,我应该告诉开发人员只生成dataLayer,就像上一部分的代码示例中那样,还是必须根据我的GTM配置进行更改?

据我所知,后端开发人员应该负责正确实现 dataLayer 变量(即 Javascript 数组)。但是他/她如何调用 dataLayer 中的元素应该与我们在自定义事件触发器中使用的事件名称相匹配。

之所以出现这个问题,是因为几天前我们的电子商务跟踪实施停止记录交易、收入等。人。我没有自己实现,但不知何故我负责修复它。

我们的 GA 配置文件停止记录交易的日期是 8 月 2 日凌晨 4 点。那是在我们的生产服务器中实现的日期。

我们的感谢页面:

我正在检查感谢页面的代码,我注意到 dataLayer 变量没有填充交易和项目信息。

应该是什么样子:我在 OptimizeSmart 博客中发现的内容

GTM UA-采购订单标签和自定义事件触发器

自定义事件触发器

如何用PHP生成dataLayer

我在另一个答案中发现了如何动态填充 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>

【问题讨论】:

    标签: google-tag-manager google-analytics-firebase google-datalayer


    【解决方案1】:

    您在 PHP 代码中推送的数据层缺少事件变量,该变量在“EV - 订单购买”触发器中设置。这就是为什么您的交易没有被记录的原因,因为“UA - Order Purchase”标签永远不会被它的触发器运行。

    你应该使用:

    <script>
      dataLayer.push({
        'event': 'purchase', // same event name as in your trigger 
        'ecommerce': {
          // ecommerce data comes here
        }
      });
    </script>
    

    【讨论】:

    • 谢谢,我怀疑缺少这样的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多