Google analytics “GA未录制”;“添加到篮子”的会话; 总结

Google analytics “GA未录制”;“添加到篮子”的会话; 总结,google-analytics,magento2,google-tag-manager,Google Analytics,Magento2,Google Tag Manager,我们有一个Magento 2商店,在设置Google Analytics以正确跟踪电子商务时遇到了问题 我们遵循Magento建立GA>M,但它没有在转换>电子商务>购物行为中收集到正确数量的添加到购物篮的会话 从上图中可以看出,它没有正确跟踪会话。27个有结帐的会话,但只有1个会话有“添加到购物篮”,这不算,用户必须在到达结帐前添加到购物车 另外,当我检查Magento上的订单数量时,我发现实际上有29个订单,其中27个来自不同的用户。因此,它似乎也没有正确捕获订单数量 调试/设置 我们

我们有一个Magento 2商店,在设置Google Analytics以正确跟踪电子商务时遇到了问题

我们遵循Magento建立GA>M,但它没有在转换>电子商务>购物行为中收集到正确数量的添加到购物篮的会话

从上图中可以看出,它没有正确跟踪会话。27个有结帐的会话,但只有1个会话有“添加到购物篮”,这不算,用户必须在到达结帐前添加到购物车

另外,当我检查Magento上的订单数量时,我发现实际上有29个订单,其中27个来自不同的用户。因此,它似乎也没有正确捕获订单数量

调试/设置 我们按照Magento设置GA>M,如下所示。如果你点击下面的图片,你会看到一张质量更好的图片

我们在GA中设置了电子商务:

起初,我发现在GTM预览模式下,使用设置的addToCart标记没有启动。似乎GTM触发器未触发数据层事件。

因此,我设置了一个新触发器,在单击时触发,并将其添加到:

我现在可以在GTM预览模式下看到标签触发:

我可以在GAs实时事件报告中看到添加到购物车事件。

但它仍然没有在转换>电子商务>购物行为中的添加到购物篮会话中显示正确的数据

问题
  • 我会错过什么
  • 我应该在GTM标记设置中将非交互命中设置为false吗
  • 我应该为GTM中的标记将use data layer设置为false吗 addToCart自定义事件未触发?或者也许这仍然是需要的 为了什么
  • 关于如何调试addToCart自定义事件为何不可用的任何提示 在GTM处于预览模式时对Magento开火
  • 我注意到时间是3.5小时,而时间只有30分钟。也许就是这样?我们更改了GA会话超时以匹配Magento,但事实并非如此:(

  • 提前感谢您,感谢您的帮助:)

    根据@lossleader对我的问题的评论,我能够确定并解决问题。我会在这里回答,以防其他人觉得有用

    基本上正如@lossleader在评论中所说,主要内容是:


    自定义事件还应该包含use dataLayer标记的电子商务数据

    因此,用简单的点击事件触发addToCart标记是不够的,因为它不包含电子商务数据,我需要修复在Magento上触发事件的方式

    我发现Magento Commerce更改/修复了最近升级时触发此事件的函数调用方式,即&

    我们的Magento确实收到了这些更改,因为和在其主题中被覆盖

    按照以下差异更新主题文件解决了我们案例中的问题:

    diff --git a/app/code/Namespace/CategoryPages/view/frontend/templates/product/list.phtml b/app/code/Namespace/CategoryPages/view/frontend/templates/product/list.phtml
    index 6771e863..2ab8905c 100644
    --- a/app/design/frontend/Namespace/theme/Magento_Catalog/templates/product/list.phtml
    +++ b/app/design/frontend/Namespace/theme/Magento_Catalog/templates/product/list.phtml
    @@ -91,7 +91,7 @@ $_helper = $this->helper('Magento\Catalog\Helper\Output');
                                         <div class="actions-primary"<?php echo strpos($pos, $viewMode . '-primary') ? $position : ''; ?>>
                                             <?php if ($_product->isSaleable()): ?>
                                                 <?php $postParams = $block->getAddToCartPostParams($_product); ?>
    -                                            <form data-role="tocart-form" action="<?php /* @escapeNotVerified */ echo $postParams['action']; ?>" method="post">
    +                                            <form data-role="tocart-form" data-product-sku="<?= $block->escapeHtml($_product->getSku()) ?>" action="<?= /* @NoEscape */ $postParams['action'] ?>" method="post">
                                                     <input type="hidden" name="product" value="<?php /* @escapeNotVerified */ echo $postParams['data']['product']; ?>">
                                                     <input type="hidden" name="<?php /* @escapeNotVerified */ echo Action::PARAM_NAME_URL_ENCODED; ?>" value="<?php /* @escapeNotVerified */ echo $postParams['data'][Action::PARAM_NAME_URL_ENCODED]; ?>">
                                                     <?php echo $block->getBlockHtml('formkey')?>
    diff --git a/app/design/frontend/Namespace/theme/Magento_Catalog/web/js/catalog-add-to-cart.js b/app/design/frontend/Namespace/theme/Magento_Catalog/web/js/catalog-add-to-cart.js
    index fae6f0fa..34978ec4 100644
    --- a/app/design/frontend/Namespace/theme/Magento_Catalog/web/js/catalog-add-to-cart.js
    +++ b/app/design/frontend/Namespace/theme/Magento_Catalog/web/js/catalog-add-to-cart.js
    @@ -6,8 +6,10 @@
     define([
         'jquery',
         'mage/translate',
    +    'underscore',
    +    'Magento_Catalog/js/product/view/product-ids-resolver',
         'jquery/ui'
    -], function ($, $t) {
    +], function ($, $t, _, idsResolver) {
         'use strict';
    
         $.widget('mage.catalogAddToCart', {
    @@ -75,7 +77,9 @@ define([
              * @param {String} form
              */
             ajaxSubmit: function (form) {
    -            var self = this;
    +            var self = this,
    +                productIds = idsResolver(form),
    +                formData = new FormData(form[0]);
    
                 $(self.options.minicartSelector).trigger('contentLoading');
                 self.disableAddToCartButton(form);
    @@ -97,6 +101,13 @@ define([
                     success: function (res) {
                         var eventData, parameters;
    
    +                    $(document).trigger('ajax:addToCart', {
    +                        'sku': form.data().productSku,
    +                        'productIds': productIds,
    +                        'form': form,
    +                        'response': res
    +                    });
    +
                         if (self.isLoaderEnabled()) {
                             $('body').trigger(self.options.processStop);
                         }
    
    diff--git a/app/code/Namespace/CategoryPages/view/frontend/templates/product/list.phtml b/app/code/Namespace/CategoryPages/view/frontend/templates/product/list.phtml
    索引6771e863..2ab8905c 100644
    ---a/app/design/frontend/Namespace/theme/Magento_Catalog/templates/product/list.phtml
    +++b/app/design/frontend/Namespace/theme/Magento_Catalog/templates/product/list.phtml
    @@-91,7+91,7@@@U helper=$this->helper('Magento\Catalog\helper\Output');
    
    -推送的自定义事件还应该包含“使用数据层”标记中提到的电子商务数据,因此您确实需要修复magento配置或检测用户操作,而不是模拟它。也就是说,在这些输入/表单周围寻找对商店html的定制,并尝试将其还原为库存


    看起来您是通过查看已安装主题覆盖的
    addToCart
    事件的magento更新找到的。

    自定义事件还应包含use dataLayer标记的电子商务数据,因此,您确实应该修复magento配置或检测用户操作,而不是模拟它。也就是说,在这些输入/表单周围查找对商店html的自定义设置,并尝试将它们还原为库存。@lossleader感谢您提供的信息,它确实帮助我了解了可能存在的问题。如果你在回答中解释了活动如何需要电子商务数据,你应该得到奖励:)