Google analytics “GA未录制”;“添加到篮子”的会话; 总结
我们有一个Magento 2商店,在设置Google Analytics以正确跟踪电子商务时遇到了问题 我们遵循Magento建立GA>M,但它没有在转换>电子商务>购物行为中收集到正确数量的添加到购物篮的会话 从上图中可以看出,它没有正确跟踪会话。27个有结帐的会话,但只有1个会话有“添加到购物篮”,这不算,用户必须在到达结帐前添加到购物车 另外,当我检查Magento上的订单数量时,我发现实际上有29个订单,其中27个来自不同的用户。因此,它似乎也没有正确捕获订单数量 调试/设置 我们按照Magento设置GA>M,如下所示。如果你点击下面的图片,你会看到一张质量更好的图片 我们在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个来自不同的用户。因此,它似乎也没有正确捕获订单数量 调试/设置 我们
起初,我发现在GTM预览模式下,使用设置的addToCart标记没有启动。似乎GTM触发器未触发数据层事件。
因此,我设置了一个新触发器,在单击时触发,并将其添加到: 我现在可以在GTM预览模式下看到标签触发:
我可以在GAs实时事件报告中看到添加到购物车事件。
但它仍然没有在转换>电子商务>购物行为中的添加到购物篮会话中显示正确的数据 问题
提前感谢您,感谢您的帮助:)根据@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感谢您提供的信息,它确实帮助我了解了可能存在的问题。如果你在回答中解释了活动如何需要电子商务数据,你应该得到奖励:)