价格比较器的跟踪代码管理器销售跟踪

时间:2019-02-14 10:46:59

标签: javascript google-tag-manager

尝试在标记管理器上解决问题时,我遇到了困难。如果您能帮助我,我将非常感激,我完全迷失了。

我必须为我们要引用的价格比较器网站实施销售跟踪标签。

我找到了公司提供的标签跟踪模式,但是,我无法获得相同的结果。这是我要求实施的网站上可用的标签:

var _kkstrack = {
      merchantInfo : [{ country:"COUNTRY_CODE", merchantId:"COMID_VALUE" }],
      orderValue: 'ORDER_VALUE',
      orderId: 'ORDER_ID',
      basket:  [{ productname: 'PRODUCT1_NAME',
                 productid: 'PRODUCT1_ID',
                 quantity: 'PRODUCT1_QUANTITY',
                 price: 'PRODUCT1_PRICE'
                },
                { productname: 'PRODUCT2_NAME',
                 productid: 'PRODUCT2_ID',
                 quantity: 'PRODUCT2_QUANTITY',
                 price: 'PRODUCT2_PRICE'
                }
               ]
    };
    (function() {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = 'https://s.kk-resources.com/ks.js';
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    })();

我实现了这个标签,我创建了基于我的数据层的变量,例如对于productid来说是“ ecommerce.purchase.products.0.id”。 但是,它没有用,我的意思是我得到了重复,对于订购的2种不同产品,我最终得到了相同的标题,两个商品的ID。第二项与第一项具有相同的功能。

所以我尝试了第二种解决方案: 对于我使用自定义Javascript的每个变量(Kelkoo-购买对应于数据层变量“ ecommerce.purchase”),这就是我写的内容:

function() {
  var products = {{Kelkoo - purchase}};
 return products.map(function(prod) { return prod.price; });
}

不幸的是,另一个问题出现了:我将所有产品数据彼此相邻,并用逗号分隔(productid:34756、8546),如下所示:

 basket:  [{ productname: 'PRODUCT1_NAME', 'PRODUCT2_NAME',
             productid: 'PRODUCT1_ID', 'PRODUCT2_ID',
             quantity: 'PRODUCT1_QUANTITY', 'PRODUCT2_QUANTITY',
             price: 'PRODUCT1_PRICE','PRODUCT2_PRICE'
            }
           ]
};

我想以这种格式返回数据

 basket:  [{ productname: 'PRODUCT1_NAME',
             productid: 'PRODUCT1_ID',
             quantity: 'PRODUCT1_QUANTITY',
             price: 'PRODUCT1_PRICE'
            },
            { productname: 'PRODUCT2_NAME',
             productid: 'PRODUCT2_ID',
             quantity: 'PRODUCT2_QUANTITY',
             price: 'PRODUCT2_PRICE'
            }
           ]

我该怎么办,我必须建立一个数组吗?

感谢您对此事的关注。

谢谢

1 个答案:

答案 0 :(得分:0)

据我了解,您已经拥有一个包含产品数据的dataLayer,该数据层与Google Analytics(分析)增强型电子商务的所需内容和数据结构相匹配。您想将产品数据转换为basket变量的_kkstrack键中使用的格式。

基于增强型电子商务Developer guide,增强型电子商务购买数据具有以下格式。

dataLayer.push({
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
        'affiliation': 'Online Store',
        'revenue': '35.43',                     // Total transaction value (incl. tax and shipping)
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      'products': [{                            // List of productFieldObjects.
        'name': 'Triblend Android T-Shirt',     // Name or ID is required.
        'id': '12345',
        'price': '15.25',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Gray',
        'quantity': 1,
        'coupon': ''                            // Optional fields may be omitted or set to empty string.
       },
       {
        'name': 'Donut Friday Scented T-Shirt',
        'id': '67890',
        'price': '33.75',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Black',
        'quantity': 1
       }]
    }
  }
});

您可以通过以下几种方法来引用此数据:将整个电子商务对象指向GTM中的dataLayer变量(然后在代码中引用其键),或直接指向产品数组。 (我使用的是后者,因此dataLayer变量名称将为ecommerce.purchase.products

将产品分配给{{DLV-电子商务购买产品}} GTM变量名称,您可以创建自定义JavaScript函数来进行必要的转换。

function() {
  return {{DLV - Ecommerce purchase products}}.map(function(e) {
    return {
      productname: e.name,
      productid: e.id,
      quantity: e.quantity,
      price: e.price      
    };
  });
}

在您的函数中,您循环遍历所有产品数组元素,并使用其他工具要求的不同键返回现有数据。现在,您可以在“自定义HTML”标记中使用此自定义JavaScript变量,在其中设置basket变量的内容。

很明显,只要您在自定义JavaScript变量中引用它,就可以使用自己的变量命名约定。

希望我能很好地理解您的问题,并且您可以通过此答案解决您的任务。