2016-09-06 42 views
6

这似乎是:谷歌分析增强型电子商务有效载荷结账太大

ga('send', 'pageview'); 

不知道如何处理大型有效载荷(超过8K),当我们有超过100种产品发起大交易,网页展示只会尝试发送单个灯塔帖子中的所有项目。

products.forEach(product => ga('ec:addProduct', ...)) // 100 products 
ga('ec:setAction', 'purchase', ...) 
ga('send', 'pageview'); 

导致

raven.js:80 Payload size is too large (11352). Max allowed is 8192. 

我们只是下面的文档:对于一个HTTP请求到谷歌分析端点enhanced-ecommerce#measuring-transactions

+0

的一种方法是使结账更小 - 只是通过SKU的每个产品,并通过数据导入添加名称,类别等(其作为数据采集,这是如果你相当不方便前完成经常添加新产品)。 –

+0

考虑将产品数据导入xls/csv到GA(在管理面板中)? https://support.google.com/analytics/answer/6066852?hl=en然后,你可以只发送产品ID与购买(导致所有其他产品参数谷歌就知道了进口数据) –

+0

@EikePierstorff我不能这样做该系统是动态的,新产品可以随时出现 –

回答

1

几个测试之后,它好像我们找到了解决办法,我们打破了交易的20个项目批次,并在结束时,我们将交易的全球数据(如税收和运费)。每个批次都通过发送事务标识连接到事务。

  //break the transaction of batches of 20 items 
      var idArrays = splitArray(Object.keys(cart.lines), 20), 
       transaction = { id: order.id }; 
       angular.forEach(idArrays, function(ids){ 
        angular.forEach(ids, function (id) { 
         var analyticsLine = analyticsCart(cart.lines[id]); 
         ga('ec:addProduct', analyticsLine); 
        }); 

        // connect the batch to the transaction 
        ga('ec:setAction', 'purchase', transaction); 
        ga('send', 'event', 'Checkout', 'Purchase', 'items batch'); 
       }); 

      //Send the transaction total data 
      var fullTransaction = { 
       id: order.id, 
       tax: cart.tax, 
       shipping: cart.deliveryCost 
      }; 
      ga('ec:setAction', 'purchase', fullTransaction); 
      ga('send', 'event', 'Checkout', 'Purchase', 'transaction details'); 
+0

在过去,我发现有相同ID的多个事务显示在一列,但在内部存储为多笔交易(这影响了一些关键绩效指标,如Conversionrates)。然而,在我的情况下与之间几分钟发送的交易他们,所以我很好奇,你有没有测试过您的交易(这是在几毫秒内大概发送)实际上是算作一个订单? –

+0

@EikePierstorff你是对的它确实影响转换率,你有没有找到另一种解决方法? –

1

极限为8KB(或者更确切地说8192个字节) 。
有一个很好的博客here讨论如何管理这种溢出。
我们的想法是,如果对象的(产品)的阵列中的数是比你的定义数时,让我们说35以及访问者已经选择显示100级的产品,该溶液是将自动发送数据在3次点击,以避免达到8Kb限制。

<script> 
if (product.length > 0 || promo.length > 0) { 
    var maxProducts = 35;     // Max objects that will be sent with 1 hit. 
    var ecomm = product.concat(promo);  // Merge product & promo into 1 array that we use in the add to cart & click tracking. 
while(product.length || promo.length) { 
    var p1 = product.splice(0,maxProducts); // Split the product array into arrays with max 35 objects 
    var p2 = promo.splice(0,maxProducts); // Split the promo array into arrays with max 35 objects 
    dataLayer.push({ 
     'ecommerce': { 
      'promoView': { 
       'promotions': p2 
       }, 
      'impressions': p1 
     }, 
     'event': 'impression', // GTM Event for Impression tracking 
     'eventCategory':'Ecommerce','eventAction':'Impression' 
     }); 
    }; 
}; 
</script> 
+0

我看到它是如何去的展示工作,但不得将本产品添加和购买需要一个单一的事件进行分组? –

相关问题