2016-09-06 42 views
6

Wydaje się:commerce Google Analytics Zwiększona ładowność zbyt duży na kasie

ga('send', 'pageview'); 

nie wie, jak radzić sobie z dużą ładowność (ponad 8K), gdy mamy do wysyłania dużej transakcji z ponad 100 produktów , wyświetlenie strony po prostu próbuje wysłać wszystkie elementy w jednym poście nawigacyjnym.

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

co skutkuje

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

Jesteśmy właśnie po dokumentację: enhanced-ecommerce#measuring-transactions

+0

Jednym sposobem byłoby, aby kasa mniejsza - wystarczy zdać SKU dla każdego produktu i dodać nazwy, kategorii itd pośrednictwem importu danych (które, aby mogły być wykonane przed zbieraniem danych, co jest dość niewygodne jeśli ciebie często dodawaj nowe produkty). –

+0

Należy rozważyć możliwość importowania plików xls/csv z danymi produktów do GA (w panelu administracyjnym)? https://support.google.com/analytics/answer/6066852?hl=pl Następnie możesz po prostu przesłać identyfikator produktu przy zakupie (spowoduje to, że wszystkie inne parametry produktu będą znane z zaimportowanych danych) –

+0

@EikePierstorff Nie mogę tego zrobić system jest dynamiczny, a nowe produkty mogą się pojawiać w każdej chwili. –

Odpowiedz

1

Po kilku badań wydaje się, że znaleźliśmy rozwiązanie, złamaliśmy transakcję do partii 20 pozycji i na końcu my wysyłania danych globalnych transakcji (jak podatek i koszt wysyłki). Każda partia jest połączona z transakcją poprzez wysłanie identyfikatora transakcji.

  //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

W przeszłości stwierdziłem, że wiele transakcji o tym samym identyfikatorze jest wyświetlanych w jednym wierszu, ale są przechowywane wewnętrznie jako wiele transakcji (co wpłynęło na niektóre kluczowe wskaźniki wydajności, np. Współczynniki konwersji), jednak w moim przypadku transakcje zostały wysłane w ciągu kilku minut Tak więc jestem ciekawy, czy przetestowałeś, że twoje transakcje (które są prawdopodobnie wysyłane w ciągu milisekund) są liczone jako pojedyncze zamówienie? –

+0

@EikePierstorff masz rację, to ma wpływ na współczynnik konwersji, czy znalazłeś inne obejście? –

1

limit ustalony dla żądania HTTP do punktu końcowego Google Analytics jest 8kB (lub bardziej dokładnie 8192 bajty) .
Istnieje doskonały blog here omawiający zarządzanie tym przepełnieniem.
Pomysł polega na tym, że liczba obiektów (produktów) w tablicy jest większa niż zdefiniowana liczba, powiedzmy 35, a użytkownik wybrał wyświetlanie 100 produktów, rozwiązaniem jest automatyczne wysłanie danych w 3 odsłonach, aby uniknąć trafienie w limit 8 KB.

<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

Widzę, jak to działa w przypadku wyświetleń, ale nie dodawaj produktów, a zakup musi być zgrupowany w jednym wydarzeniu ? –