【问题标题】:How to specify what "list" the product was added to cart from? Enhanced Ecommerce如何指定产品从哪个“列表”添加到购物车?增强型电子商务
【发布时间】:2015-08-18 02:39:05
【问题描述】:

尝试为我的网站实施 Google Analytics 增强型电子商务跟踪。

如何指定产品从哪个“列表”添加到购物车?

这是将产品添加到购物篮的标准跟踪代码:

    // Called when a product is added to a shopping cart.
function addToCart(product) {
  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', 'add');
  ga('send', 'event', 'UX', 'click', 'add to cart');     // Send data using an event.
}

没有任何功能可以指定单击“添加到购物车”按钮的产品列表的名称。

一定有这样的:

ga('ec:setAction', 'click', {'list': 'Search Results'});

但这仅适用于“点击”操作(而不是“添加”)。 (根据https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#(product action)

此外,我需要指定产品在列表中的位置。 有什么想法吗?

【问题讨论】:

  • 您的“点击”与“添加”有何不同?换句话说,当您将产品添加到购物车时,需要“点击”操作。那是你的实现吗?此外,产品数据允许您指定位置:developers.google.com/analytics/devguides/collection/…
  • nyuen,谢谢您的评论。 “添加”和“点击”是 Google Analytics(分析)中不同类型的增强型电子商务操作。单击是关于单击产品链接然后查看其详细信息页面的全部内容。但“添加”衡量购物车的添加量。有区别...
  • Google 文档是错误的。 Google Analytics Tracker 已经有一个错误。

标签: javascript google-analytics e-commerce implementation product


【解决方案1】:

我遇到了同样的问题,被困了好几个小时。

我的问题是,我的结帐流程与列出和点击产品展示的子域不同。 只需在 GTM 的 GA 页面视图标签上添加一个字段 "cookieDomain" = "auto",所有这些都开始工作 - Cross Domain Tracking with Google Tag Manager

我需要添加列表信息的唯一地方是:

  • 产品印象列表。 'list' : 'Search result'
  • 产品点击(来自展示列表)。 'actionField': {'list': 'Search Results'},

我没有为产品详细信息添加它,也没有在结帐过程中的任何地方添加它(添加到购物车、结帐、购买)。

对于结帐过程中的其他外部域,我想您将需要跨域跟踪。

【讨论】:

    【解决方案2】:

    你必须做三件事。

    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。将产品列表的 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 已经报告了一个错误。

    【讨论】:

      【解决方案3】:

      actionField 中的列表变量仅对 clickdetail 操作有效。 如果您想跟踪客户旅程,您必须将点击和添加合并到一个逻辑事件中。

      因此,如果您可以直接从列表中添加并且希望在 UA 中将数据绑定在一起,那么您可以采取一些小解决方法,例如:

      function addToCart(product) {
        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', 'click', {'list': 'Search Results'});
        ga('send', 'event', 'automatic', 'click', 'add to cart',{'nonInteraction': 1});     // Send data using an event.
      
        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', 'add');
        ga('send', 'event', 'UX', 'click', 'add to cart');     // Send data using an event.
      }
      

      【讨论】:

      • 这个答案不是 100% 正确的。您可以ga('ec:setAction', 'add', {'list': 'Search Results'}); - 您必须在产品列表页面的产品列表中跟踪对产品的点击。
      • 这个答案不正确,如上所述。不需要产品点击或产品详细信息来捕获列表信息,这可以作为添加到购物车数据层推送中的操作字段添加。我已经对此进行了测试,并且购买被正确地归因于我仅在添加到购物车 dataLayer 推送中设置的列表。
      • @sdhaus 是正确的,这不起作用,但如果将其添加为 actionField,它会起作用。
      【解决方案4】:

      您应该在添加detail 操作时发送list 属性(应该在用户查看产品页面时发送)。

      ga('ec:setAction', 'detail', { list: 'Search Results' });

      考虑以下场景:

      1. 用户在您的网站上搜索产品,结果会显示出来。此时,每个产品结果都会产生印象。
      2. 用户点击产品结果之一,您添加click 操作,然后用户被重定向到产品页面。
      3. 页面加载时,您发送detail 操作,指定list 属性(作为setAction 中的参数)。
      4. 用户点击“加入购物车”,您发送add 操作。

      如果在detail动作中没有指定list属性,或者根本不发送detail动作,然后在查看add动作>Product List Performance 在 Google Analytics(分析)中,添加到购物车数据将在 Product List Name 下显示为 (未设置)

      文档未能在其完整示例中包含这一重要信息,可在 here 中找到该示例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-19
        相关资源
        最近更新 更多