web-dev-qa-db-ja.com

製品リストのインプレッション/クリックおよび関連する売上を追跡する方法は?

Magentoショップには、いくつかの異なるカテゴリの製品があります。また、拡張eコマーストラッキングを使用して、製品リストのパフォーマンスを追跡する必要があります。これを使用しました Google dev docs

例:製品はカテゴリ「販売」、「シャツ」、「コレクション素晴らしい」にあります。

ここで問題が発生します。製品の詳細ページでは、どのカテゴリリストから来たのかわからず、Magentoは製品が属する製品カテゴリの最初の製品カテゴリをGoogleに通知します。

その結果、誤ったレポートが生成されます。レポートのProduct List ViewsProduct List Clicks、およびProduct List CTRには正しい番号があります。

ただし、Product Adds To Basketはゼロで、Product CheckoutsUnique Purchases、およびProduct Revenueは、異なるエントリ(行)の(設定なし) )。

Slightly edited screenshot

テストシステムで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
        });
    }
}
1
Jurik

あなたがしなければならない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 で既に報告されているバグがあります。

0
Jurik