Magentoショップには、いくつかの異なるカテゴリの製品があります。また、拡張eコマーストラッキングを使用して、製品リストのパフォーマンスを追跡する必要があります。これを使用しました Google dev docs 。
例:製品はカテゴリ「販売」、「シャツ」、「コレクション素晴らしい」にあります。
ここで問題が発生します。製品の詳細ページでは、どのカテゴリリストから来たのかわからず、Magentoは製品が属する製品カテゴリの最初の製品カテゴリをGoogleに通知します。
その結果、誤ったレポートが生成されます。レポートのProduct List Views
、Product List Clicks
、およびProduct List CTR
には正しい番号があります。
ただし、Product Adds To Basket
はゼロで、Product Checkouts
、Unique Purchases
、およびProduct Revenue
は、異なるエントリ(行)の(設定なし) )。
テストシステムで1分以内にすべてをクリックしたため、これがセッションの問題だとは思いません。
これは、製品リストのインプレッションを追跡する方法です(関連データはすべてli-tagのdata-xxx属性にあります)。
/**
* * Set all product list impressions for Google Analytics
* @param bool loadMoreClicked
*/
var setProductImpressions = function(loadMoreClicked) {
jQuery('li[data-product-sku]').each(function(index){
_ga('ec:addImpression', {
'id': this.dataset.productSku,
'name': this.dataset.productName,
'category': this.dataset.productCategory,
'brand': this.dataset.productBrand,
'variant': this.dataset.productVariant,
'list': this.dataset.productList,
'position': index + 1
});
})
if(loadMoreClicked) {
_ga('send', 'event', {
eventCategory: 'productlist',
eventAction: 'click',
eventLabel: 'Load More Button'
});
}
}
これは、製品リストのクリックを追跡する方法です。
var bindProductListClickTracking = function() {
jQuery('a.detail-link-track:not(.ga-click-bound)').on('click', function (e) {
e.preventDefault();
var product;
var href = jQuery(this).attr('href');
var product = jQuery('li[data-product-detail-link="' + href + '"]')[0];
_ga('ec:addProduct', {
'id': product.dataset.productSku,
'name': product.dataset.productName,
'category':product.dataset.productCategory,
'brand': product.dataset.productBrand,
'variant': product.dataset.productVariant,
'position': jQuery(product).index() + 1
});
var list = product.dataset.productList;
_ga('ec:setAction', 'click', {list: list});
_ga('send', 'event', {
eventCategory: 'productlist',
eventAction: 'click',
eventLabel: product.dataset.productList,
hitCallback: function () {
if (!(e.ctrlKey || e.which == 2)) {
document.location = href;
}
}
});
}).addClass('ga-click-bound');
}
これが、カートへの追加イベントを追跡する方法です。
function manipulationOfCart(product, type) {
_ga('ec:addProduct', {
'id': product.id,
'name': product.name,
'category': product.category,
'brand': product.brand,
'variant': product.variant,
'price': product.price,
'quantity': product.qty
});
_ga('ec:setAction', type);
if (type == 'add') {
_ga('send', {
hitType: 'event',
eventCategory: 'Cart',
eventAction: 'click',
eventLabel: 'Add To Cart',
nonInteraction: 1
});
} else if (type == 'remove') {
_ga('send', {
hitType: 'event',
eventCategory: 'Cart',
eventAction: 'click',
eventLabel: 'Remove From Cart',
nonInteraction: 1
});
}
}
あなたがしなければならない3つのことがあります。
1。製品リストページで製品リストのクリックを追跡します
/**
* Binds click event on product detail page links at product list page.
*/
var bindProductListClickTracking = function() {
jQuery('a.detail-link-track:not(.ga-click-bound)').on('click', function (e) {
e.preventDefault();
var href = jQuery(this).attr('href');
//all my product data are attributes á la data-product-sku
var product = jQuery('li[data-product-detail-link="' + href + '"]')[0];
ga('ec:addProduct', {
'id': product.dataset.productSku,
'name': product.dataset.productName,
'category':product.dataset.productCategory,
'brand': product.dataset.productBrand,
'variant': product.dataset.productVariant,
'position': jQuery(product).index() + 1
});
var list = product.dataset.productList;
/**
* IMPORTANT: save your product list name into a cookie
*/
jQuery.cookie('productlist', list, { path: '/', domain: cookieDomain});
ga('ec:setAction', 'click', {list: list});
ga('send', 'event', {
eventCategory: 'productlist',
eventAction: 'click',
eventLabel: list,
hitCallback: function () {
if (!(e.ctrlKey || e.which == 2)) {
document.location = href;
}
}
});
}).addClass('ga-click-bound');
}
ヒント:遅延読み込みまたは追加読み込みボタンがある場合は、製品の詳細でこのイベントを2回バインドしないように注意してくださいページリンク
2。商品リストのactionObjectを、商品の詳細ページでカートに追加アクションに追加します
var manipulationOfCart = function(product, type, productList) {
ga('ec:addProduct', {
'id': product.id,
'name': product.name,
'category': product.category,
'brand': product.brand,
'variant': product.variant,
'price': product.price,
'quantity': product.qty
});
ga('ec:setAction', type, {list: productList});
if (type == 'add') {
ga('send', {
hitType: 'event',
eventCategory: 'Cart',
eventAction: 'click',
eventLabel: 'Add To Cart',
nonInteraction: 1
});
} else if (type == 'remove') {
ga('send', {
hitType: 'event',
eventCategory: 'Cart',
eventAction: 'click',
eventLabel: 'Remove From Cart',
nonInteraction: 1
});
}
}
3。商品をカートに追加した後、またはユーザーが商品の詳細ページを離れた後にCookieを削除します
manipulationOfCart(productToBasket, 'add', productlist);
$.removeCookie('productlist', { path: '/', domain: cookieDomain});
および
$(window).unload(function() {
$.removeCookie('productlist', { path: '/', domain: cookieDomain});
});
実際に Google Analytics Docs は間違っています-彼らが言っていることは機能しません。そして、 Google Analytics Bug Tracker で既に報告されているバグがあります。