Можем ли мы отправить пользовательское измерение (область пользователя) с транзакцией электронной коммерции?

#javascript #google-analytics #transactions

#javascript #google-analytics #транзакции

Вопрос:

Мы используем analytics.js для отслеживания посещений страниц и транзакций. В настоящее время наш код отслеживания выглядит следующим образом:

 ga('create', 'UA-XXX-X', 'auto', {'allowLinker': true});
//add content grouping here if required
ga('send', 'pageview');

if(receiptPage){
  //we call server here ONLY on the receipt page.
  //the results are loaded into the addTransaction and addItem

  ga('require', 'ecommerce', 'ecommerce.js');
  ga('ecommerce:addTransaction', {
    //we set the following fields here:
    //id, affiliation, revenue, shipping, tax, currency
  });

  //for each item in the order we run:
  ga('ecommerce:addItem', {
    //we set the following fields here:
    //id, name, sku, category, price, quantity, currency
  });

  ga('ecommerce:send');
}
  

Мы хотели бы добавить 2 настраиваемых поля измерения в область пользователя — userId и country. У нас есть доступ к обоим этим параметрам на сервере, и мы можем легко включить их в объявление if (receiptPage). Мы хотим точно знать, куда добавить наш пользовательский параметр измерения и как запустить его сбор.

Согласно Google :

В отличие от других типов данных, пользовательские измерения и показатели отправляются в Analytics в качестве параметров, связанных с другими обращениями, такими как просмотры страниц, события или транзакции электронной коммерции.

Однако они показывают только примеры отправки просмотров страниц и событий. Мы не смогли найти ни одного примера, отображающего коллекцию параметра пользовательского измерения через транзакцию.

Вопрос в том, может ли ga (‘ecommerce:send’); собирать пользовательские измерения? В этом случае мы можем сделать:

 ga('create', 'UA-XXX-X', 'auto', {'allowLinker': true});
ga('send', 'pageview');
if(receiptPage){
  ga('require', 'ecommerce', 'ecommerce.js');
  ga('ecommerce:addTransaction', {/*somecode*/});
  ga('ecommerce:addItem', {/*somecode*/});

  ga('set', 'dimension1', 'user555');
  ga('set', 'dimension2', 'Germany');

  ga('ecommerce:send');
}
  

Или, если электронная коммерция не может собирать данные пользовательского измерения, нам придется перенести отправку просмотра страницы в оператор if . Может ли это вызвать проблемы, если мы вызовем его после коллекции электронной коммерции? :

 ga('create', 'UA-XXX-X', 'auto', {'allowLinker': true});
if(receiptPage){
  ga('require', 'ecommerce', 'ecommerce.js');
  ga('ecommerce:addTransaction', {/*somecode*/});
  ga('ecommerce:addItem', {/*somecode*/});

  ga('set', 'dimension1', 'user555');
  ga('set', 'dimension2', 'Germany');

  ga('ecommerce:send');
}
ga('send', 'pageview');
  

Какое решение мы должны выбрать и почему? Это чувствительное место для экспериментов, поэтому мы предпочли бы быть уверенными, а не решать его методом проб и ошибок.

Комментарии:

1. re: эксперименты, ничто не мешает вам создать дополнительное свойство и отправить туда несколько фиктивных вызовов, не затрагивая ваш реальный аккаунт. Отображение данных занимает несколько часов, но обычно это самый надежный способ определить, подходит ли определенный код для вашего варианта использования.

2. И, добавив к комментарию @EikePierstorff, вы даже можете создать фиктивную html-страницу с соответствующим кодом и проверить GA с помощью этого, не влияя на ваш живой сайт вообще. Наличие промежуточного сайта обязательно для веб-разработки.

Ответ №1:

Вы можете использовать оба решения. Они будут запускать два запроса к серверам Google Analytics и передавать все данные, которые вы определили в своем коде.

Первое решение: во втором запросе определен тип «transaction», и он будет включать все значения, определенные в строках перед «ga (‘ecommerce:send’);».

Второе решение: запроса на просмотр страницы может быть достаточно для отправки всех данных, и вам вообще не нужен ga (‘ecommerce: send’), но я не уверен на 100%.