Асинхронный код Google Analytics для электронной коммерции не работает - PullRequest
0 голосов
/ 30 мая 2011

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

Это внутри тега body

<body>
   ...
   ...
   <script type="text/javascript"> 
   var _gaq = _gaq || [];
   _gaq.push(['_setAccount', 'xxx']);
   _gaq.push(["_setDomainName", ".abc.com"]);
   _gaq.push(["_setAllowLinker", true]);
   _gaq.push(['_trackPageview']);

   _gaq.push(['_addTrans',
            '456',            // order ID - required
            'EcoStrip',  // affiliation or store name
            '34.95',           // total - required
            '0.0',           // shipping
            'Santa Clara',        // city
            'California',
            'USA'
          ]);

          _gaq.push(['_addItem',
            '456',  // order ID - necessary to associate item with transaction
            '67333',           // SKU/code - required
            'USB EcoStrip 2.0 Energy Saving Power Strip',        // product name
            'Office',   // category or variation
            '34.95',          // unit price - required
        '1'
          ]);
    //Now submit the transaction
    _gaq.push(['_trackTrans']); //submits transaction to the Analytics server

   (function() {
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
                          'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s);
   })();
</script> 

  </body> 

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Я создал индивидуальную многодоменную платформу для электронной коммерции (2 года в разработке), бэкэнд полностью на T-SQL / MSSQL 2008, а интерфейс работает на PHP 5.3 Apache и недавно был перенесен с C # наIIS7.После перехода на PHP отслеживание работает только несколько раз.

Должно быть некоторое различие в том, как IIS обслуживает страницы по сравнению с PHP, и это приводит к тому, что отслеживание не работает.Или, может быть, Google не хочет, чтобы он работал каждый раз, чтобы сэкономить на попаданиях на сервер.

Я использовал инструмент отладки GA, следовал инструкциям Google в письме, и все же маяк отправлял только при первом попадании насайт, или если я нажму кнопку обновления страницы Chrome.

У кого-нибудь была похожая проблема?Код на 100% верный. Я даже пытался удалить все остальные JavaScript со страницы, и я всегда очищаю кеш браузера при тестировании.

Если кто-нибудь может сказать мне, почему это происходит замечательно, но тем временем у меня естьработа раунд, который другие люди могут найти полезным.Это заставит их отслеживать каждый раз.

Короче говоря, исправление заключается в том, чтобы браузер анализировал (если это правильный термин) весь javascript на странице полностью каждый раз.Есть много способов сделать это, мой подход заключается в создании файла PHP, который не поддерживает кэширование и имеет небольшой размер файла.Может быть, это излишне - я не знаю, но это работает.Файл php должен называться any.php и содержать только следующий код.

(function GA_FIX(){
  var gafix = '<?php echo md5(rand(1,20));?>';
})

Возможно, вы захотите добавить заголовки php, чтобы установить тип mime для text / javascript, и кеш истекает в зависимости от конфигурации Apache.,Например, если у вас включено кэширование для файлов .js.

Теперь создайте ссылку на этот файл с вашего сайта непосредственно перед кодом отслеживания GA, как этот.Ваш код отслеживания должен быть перед тэгом закрывающей головы.

 <script type="text/javascript" src="/path_to_php_file.php"></script>
    <!-- google tracking code here-->

Ваше отслеживание GA теперь будет работать 100% времени.Это уже опробовано и протестировано и находится в производстве, пока я жду официального ответа, говорящего мне (и остальным вам), как заставить его работать.

0 голосов
/ 30 мая 2011

Одна из возможных причин: в вашем вызове addTrans отсутствует параметр между общим параметром и параметром доставки: налоговый параметр.Если вы не взимаете налог, вы можете просто установить это значение на «0».

   _gaq.push(['_addTrans',
            '456',            // order ID - required
            'EcoStrip',  // affiliation or store name
            '34.95',           // total - required
            '0', // tax
            '0.0',           // shipping
            'Santa Clara',        // city
            'California',
            'USA'
          ]);

Без налогового параметра все параметры после итога отключаются на один.Таким образом, налог устанавливается на 0, shippping устанавливается на «Санта-Клара», город устанавливается на «Калифорния», а штат / регион устанавливается на США », а страна устанавливается на« неопределенное ».

Подробнее см. Справочный центр Google Analytics .

Теперь, даже если вы это исправите, источник ваших проблем не гарантирован.Но это начало.

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

...