Google analytics 电子商务交易通常有不正确的数量

Google analytics 电子商务交易通常有不正确的数量,google-analytics,google-tag-manager,Google Analytics,Google Tag Manager,更新:我现在有一笔数量为13的交易!即,相同的transactionId,但有许多交易。我已经测试了我的transactionId生成器,它看起来还可以,所以我真的不确定发生了什么 问题: 尝试使用Google Tag Manager进行一些Ecommerce跟踪 我想我的一切都设置正确了,但是我的事务得到了一些数量值0,一些是1(这是正确的),一些甚至是13 它的静态值设置为1数量,以下是我的数据层代码: <script> dataLayer = [{ 'transactionId

更新:我现在有一笔数量为13的交易!即,相同的
transactionId
,但有许多交易。我已经测试了我的
transactionId
生成器,它看起来还可以,所以我真的不确定发生了什么

问题:

尝试使用Google Tag Manager进行一些Ecommerce跟踪

我想我的一切都设置正确了,但是我的事务得到了一些数量值0,一些是1(这是正确的),一些甚至是13

它的静态值设置为1数量,以下是我的数据层代码:

<script>
dataLayer = [{
'transactionId': '504210532.1395946032.72', // <? echo $id.".".time().".".rand(1,100); ?>
'transactionTotal': 1.00,
'transactionProducts': [{
'sku': 'prod1',
'name': 'Product',
'price': 1.00,
'quantity': 1
}],

**OTHER DATALAYER PROPERTIES**

}];
</script>

数据层=[{
'transactionId':'504210532.1395946032.72',//
“transactionTotal”:1.00,
“transactionProducts”:[{
“sku”:“prod1”,
“名称”:“产品”,
“价格”:1.00,
“数量”:1
}],
**其他数据层属性**
}];
唯一动态的东西是
事务ID
,其余的都是静态的

标签只在特定页面上触发;开火似乎不是问题,只是因为一些未知的原因,它并不总是得到正确的数量

我无法评论(目前),但是你有办法防止电子商务代码片段重复开火吗?Google Tag Manager的电子商务代码片段将在每次加载收据页面时触发。我猜这就是为什么你会看到一些奇怪的数字-因为如果有人刷新,点击后退按钮,等等。这将导致重复火灾。我见过奇怪的事情在没有这个的情况下发生,所以我总是确保我已经实现了它

我不记得我最初在哪里找到这个解决方案,所以我很抱歉,我不能引用我的源代码(如果我找到它将更新)但这里有一个解决方案,可以防止在Google Tag Manager中触发两次电子商务片段。

将其添加为在“签出完成”页面上激发的自定义HTML片段

 <script> 
 // CustomHTML only trigger on /checkout/sale-complete.html and gtm.dom ready 
 function createCookie(name,value,days) { 
 if (days) { // If not provided, it will be a session cookie. 
 var date = new Date(); 
 date.setTime(date.getTime()+(days*24*60*60*1000)); 
 var expires = "; expires="+date.toGMTString(); 
 } 
 else var expires = ""; 
 document.cookie = name+"="+value+expires+"; path=/"; 
 } 

 function readCookie(name) { 
 var nameEQ = name + "="; 
 var ca = document.cookie.split(';'); 
 for(var i=0;i < ca.length;i++) { 
 var c = ca[i]; 
 while (c.charAt(0)==' ') c = c.substring(1,c.length); 
 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
 } 
 return null; 
 } 

 if (!readCookie('cookie_hasPurchaseRecordedAlready')) { 
 createCookie('cookie_hasPurchaseRecordedAlready', 'true', 1); 
 } 
 </script>

//CustomHTML仅在/checkout/sale-complete.html和gtm.dom就绪时触发
函数createCookie(名称、值、天数){
如果(天){//如果未提供,则它将是会话cookie。
变量日期=新日期();
date.setTime(date.getTime()+(天*24*60*60*1000));
var expires=“;expires=“+date.togmString();
} 
else var expires=“”;
document.cookie=name+“=”+value+expires+“path=/”;
} 
函数readCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(var i=0;i
脚本将创建一个新的cookie

接下来,创建一个新的第1方Cookie宏,将其命名为Purchase Cookie,并将其值设置为“Cookie\u hasPurchaseRecordedAlready”


在您的电子商务UA代码上,添加阻止规则-{{Purchase Cookie]]等于true。

只是一个简单的初始问题:在GTM代码片段之前,您是否包含了上述数据层?我真的看不出您的代码有任何其他错误,您说代码运行正常,所以我想一定是其他错误。您在注意到事务数据之前等待了多长时间?有时我看到它是正确的是的,数据层位于GTM代码段之上;几天后,它还没有自行更正