Данные универсальной электронной торговли Google Analytics не записываются

Я пытался перевести отслеживание электронной торговли Google Analytics в универсальное, но у меня есть несколько проблем. Само отслеживание работает нормально, но не электронная коммерция. Я включил отслеживание электронной торговли в Google Analytics и добавил следующий код:

внутри printlandtest.co.uk.cara.init.js:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-30033504-40', 'auto',{'name': 'CARATracker'});  // New tracker.
ga('CARATracker.send', 'pageview');

и внутри caranew.js

ga('CARATracker.require', 'ec'); 


function CaraGetWidgetDescription(manufacturerWidget) {
    CaraConfig();
     ga('CARATracker.set', 'Widget Impression ID E-tale', String(manufacturerWidget));

}



function CaraAddToBasket(productName, sku) {

    CaraConfig();
    ga('CARATracker.send', 'event', String(productName), 'AddToBasket', String(sku));
}

function CaraBeginTransaction(orderNo, totalPrice) {

CaraConfig();
   ga('CARATracker.ecommerce:addTransaction', String(orderNo), "", CaraPriceFix(String(totalPrice)), "", "0.00", "", "", "");
}

function CaraAddTransactionItem(orderNo, sku, productName, productCategory, productPrice, quantity) {

    CaraConfig();
    ga('CARATracker.ecommerce:addItem', {
        String(orderNo),
        String(sku),
        String(productName),
        String(productCategory),
        CaraPriceFix(String(productPrice)),
        String(quantity)
    });


function CaraEndTransaction() {

    CaraConfig();
    ga('CARATracker.ecommerce:send');  
}

function CaraPriceFix(price) {

    var fixedPrice = price;

    var pLength = price.length;
    var comma = price.indexOf(",") + 1;
    var period = price.indexOf(".") + 1;

    //comma is in the price
    if (comma != 0) {
        //if the comma is not at a 2-decimal point position
        //i.e true for 1,200
        if ((pLength - comma) > 2) {
            fixedPrice = fixedPrice.replace(",", "");
        }
    }
    //period is in the price
    if (period != 0) {
        //if the period is not at a 2-decimal point position
        //i.e true for 1.200
        if ((pLength - period) > 2) {
            fixedPrice = fixedPrice.replace(".", "");
        }
    }
    return fixedPrice;
}

Поскольку это находится внутри сайта clents, оно асинхронно с их собственной аналитикой Google и настроено следующим образом:

<script>  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');  ga('create', 'UA-3521256-1', {'siteSpeedSampleRate': 20});  ga('send', 'pageview');</script><script src="https://where-to-buy.co/scripts/cara/printerlandtest.co.uk.cara.init.js" type="text/javascript"></script><script src="https://where-to-buy.co/scripts/cara/caranew.js" type="text/javascript"></script>

На кнопке «Добавить в корзину» есть следующий код:

<a onclick="TrackEvent('Buy Button Click','ProductList','01327701','');CaraAddToBasket('OKI C511dn','01327701');" id="ctl00_ctl00_ContentPlaceHolderMain_cntPlaceHlderMain_lstCategoryProducts_ctrl0_lnkBuy" class="button product_buy selected" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl00$ContentPlaceHolderMain$cntPlaceHlderMain$lstCategoryProducts$ctrl0$lnkBuy", "", true, "", "", false, true))'><span>Added</span> </a>

Однако я получаю следующую ошибку:

Uncaught ReferenceError: CaraAddToBasket не определен

и когда я нажимаю на оплатить, я получаю следующую ошибку:

Uncaught ReferenceError: CaraBeginTransaction не определен

Я думал, что определяю их в функциях, но я что-то не так?

Есть ли что-нибудь еще, что останавливает отслеживание электронной торговли?

Спасибо


person anna    schedule 20.05.2015    source источник


Ответы (1)


Я переписал код и пришел к этому решению. Удаление всех новых функций String() и перемещение функции фиксации цены из массива в var над ним.

Также за функцией addtobasket отсутствовал }, что приводило к сбою JS.

Теперь функция работает нормально.

(function(i, s, o, g, r, a, m) {
  i['GoogleAnalyticsObject'] = r;
  i[r] = i[r] || function() {
    (i[r].q = i[r].q || []).push(arguments)
  }, i[r].l = 1 * new Date();
  a = s.createElement(o),
    m = s.getElementsByTagName(o)[0];
  a.async = 1;
  a.src = g;
  m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');

ga('create', 'UA-30033504-40', 'auto', {
  'name': 'CARATracker'
}); // New tracker.
ga('CARATracker.send', 'pageview');

ga('CARATracker.require', 'ec');


function CaraGetWidgetDescription(manufacturerWidget) {
  CaraConfig();
  ga('CARATracker.set', 'Widget Impression ID E-tale', String(manufacturerWidget));

}



function CaraAddToBasket(productName, sku) {

  CaraConfig();
  ga('CARATracker.send', 'event', String(productName), 'AddToBasket', String(sku));
  alert('Debugging: added');
}

function CaraBeginTransaction(orderNo, totalPrice) {

  CaraConfig();
  ga('CARATracker.ecommerce:addTransaction', String(orderNo), "", CaraPriceFix(String(totalPrice)), "", "0.00", "", "", "");
}

function CaraAddTransactionItem(orderNo, sku, productName, productCategory, productPrice, quantity) {

  CaraConfig();
  var price = CaraPriceFix(productPrice);
  alert(price);
  ga('CARATracker.ecommerce:addItem', {
    orderNo,
    sku,
    productName,
    productCategory,
    price,
    quantity
  });
}


function CaraEndTransaction() {

  CaraConfig();
  ga('CARATracker.ecommerce:send');
}

function CaraPriceFix(price) {

  var fixedPrice = price;

  var pLength = price.length;
  var comma = price.indexOf(",") + 1;
  var period = price.indexOf(".") + 1;

  //comma is in the price
  if (comma != 0) {
    //if the comma is not at a 2-decimal point position
    //i.e true for 1,200
    if ((pLength - comma) > 2) {
      fixedPrice = fixedPrice.replace(",", "");
    }
  }
  //period is in the price
  if (period != 0) {
    //if the period is not at a 2-decimal point position
    //i.e true for 1.200
    if ((pLength - period) > 2) {
      fixedPrice = fixedPrice.replace(".", "");
    }
  }
  return fixedPrice;
}

function CaraConfig() {
  //empty
}
<html>

<body>
  <a onclick="CaraAddToBasket('OKI C511dn','01327701');" id="ctl00_ctl00_ContentPlaceHolderMain_cntPlaceHlderMain_lstCategoryProducts_ctrl0_lnkBuy" class="button product_buy selected" href='#'><span>Added</span> </a>

</body>

</html>

person Thomas Theunen    schedule 20.05.2015
comment
Спасибо, я только что заметил дополнительную } старую добрую консоль, похоже, теперь она должна работать, просто нужно подождать, пока данные не поступят в аналитику (скрестим пальцы), спасибо за ваше время. Я фактически удалил CaraConfig(); aswel, поскольку я думаю, что это устарело. - person anna; 20.05.2015
comment
привет, Томас, к сожалению, я до сих пор не получаю данные электронной коммерции, хотя оповещения, установленные в коде, срабатывают. Есть ли у вас другие предложения? В обзоре поведения я вижу, что страница orderreceipt.aspx попадает, но нет данных электронной торговли. Большое спасибо - person anna; 03.06.2015
comment
извините, не отметил вас в последнем комментарии, пожалуйста, смотрите выше, спасибо! - person anna; 08.06.2015
comment
Посмотрите, может быть, это название «CARATracker». Удалите это и посмотрите, прибудет ли оно тогда. - person Thomas Theunen; 08.06.2015
comment
Я пытался удалить его, но он по-прежнему не записывает его, потому что он был добавлен, потому что на странице есть еще один скрипт Google Analytics, поэтому мне нужно было различать два - developers.google.com/analytics/devguides/collection/ см. поддержку нескольких средств отслеживания. - person anna; 16.06.2015
comment
Используя отладку GA в Chrome, я вижу следующее: Выполняется команда: ga(CARATracker.require, ecommerce) analytics_debug.js:9 Плагин электронной торговли, инициализированный на трекере CARATracker. analytics_debug.js:9 Выполняемая команда: ga(CARATracker.ecommerce:addTransaction, 1141701, , 198.00, , 0.00, , , ) analytics_debug.js:9 Выполняемая команда: ga(CARATracker.ecommerce:addItem, {orderNo: 1141701, sku: 01327701, productName: OKI C511dn, productCategory: Лазерные принтеры OKI, цена: 165,00, количество: 1}) analytics_debug.js:9 Запуск команды: ga(CARATracker.ecommerce:send) - person anna; 16.06.2015