Google Analytics - несколько трекеров на одной странице (конфликт cookie) - PullRequest
55 голосов
/ 06 августа 2009

Я пишу веб-приложение, которое должно быть встроено в чужие веб-сайты (виджет). Я использую Google Analytics для отслеживания всех людей, которые посещают все экземпляры моего скрипта на встраиваемых веб-сайтах. Проблема в том, что я не знаю, как его использовать, чтобы он не мешал собственным аккаунтам Google Analytics этих сайтов. Я храню переменную трекера в пространстве имен, поэтому я подумал, что это следует сделать, но я не понял, что GA сохраняет свои настройки в куки (__utma, __utmz и т. Д.), И эти куки используются обоими трекерами, если их две на одной странице ... Например, если я использую _setVar для хранения какой-то определенной пользователем переменной в Google Analytics, а сайт встраивания делает то же самое, мы перезаписываем значения друг друга ...

Конечно, было бы проще, если бы Google предоставил способ изменить название файлов cookie на пользовательские, но я не могу найти способ сделать это. Я думал об использовании домена cookie или пути к файлу для принудительного создания отдельного файла cookie, но это не работает, потому что, если я задаю домен или путь для чего-то другого, кроме реального домена / пути, то файл cookie не будет читаем для страницы после перезагрузки. ..

Кто-нибудь знает способ иметь два трекера на одной странице и заставить их использовать отдельные файлы cookie, чтобы они не перезаписывали настройки друг друга?

Или, если это абсолютно невозможно - есть ли другой аналитический сервис с функциями, аналогичными GA, в котором это возможно? (он должен иметь расширенные функции, такие как отслеживание событий и кампаний ...)

Ответы [ 9 ]

56 голосов
/ 06 января 2010

Теперь стало проще с новым асинхронным кодом отслеживания. :)

https://developers.google.com/analytics/devguides/collection/gajs/#MultipleCommands

18 голосов
/ 05 февраля 2014

Вы можете установить несколько экземпляров кода отслеживания Google Analytics на своих веб-страницах, чтобы отправлять данные нескольким свойствам в своем аккаунте. https://support.google.com/analytics/answer/1032400?hl=en

Или вы можете проявить творческий подход и выполнить следующие действия в соответствии с инструкциями Google. https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers

<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-XXXX-Y', 'auto');
  ga('create', 'UA-XXXX-Y', 'auto', {'name': 'newTracker'});
  ga('send', 'pageview');
  ga('newTracker.send', 'pageview');

</script>
10 голосов
/ 18 августа 2009

Не нужно использовать разные имена файлов cookie, так как Google Analytics успешно работает с несколькими трекерами на одной странице. См. Ответы на вопрос Google Analytics - несколько трекеров для нескольких учетных записей? .

Обновление

Оказывается, что использование нескольких трекеров является рабочим методом, но имеет некоторые подводные камни . Одним из них является то, что вы не можете применять разные сегменты пользователей для каждого из них. Джон Хенсон демонстрирует обходной путь, который заставляет GA использовать разные куки , может быть, вам стоит проверить его.

8 голосов
/ 19 января 2013

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

var _gaq = _gaq || [];

_gaq.push(['some_unique_name._setAccount', 'UA-xxxxxxxx-1']);
_gaq.push(['some_unique_name._trackPageview']);

(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);
})();

Я также использую события

_gaq.push(['some_unique_name._trackEvent', 'Event Category', 'Event Action', 'Event Label']);

Если кто-то видит проблему с этим, пожалуйста, дайте мне знать.

3 голосов
/ 14 сентября 2012

Похоже, Google рекомендует против этой практики:

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

https://support.google.com/analytics/bin/answer.py?hl=en-GB&answer=1032400

3 голосов
/ 02 ноября 2009

Согласно документации , перечисленной Török, правильный ответ - использовать _setCookiePath . Это заставляет каждый трекер использовать совершенно разные куки.

Пример кода с сайта:

<script type=”text/javascript”>
    var pageTracker = _gat._getTracker(”UA-11111-1″);

    pageTracker._setDomainName(’domain.com’);

    pageTracker._setCookiePath(’/subdirectory/’);
    pageTracker._trackPageview();

    var otherTracker = _gat._getTracker(”UA-22222-1″);
    otherTracker._setDomainName(’domain.com’);
    otherTracker._trackPageview();
</script>

Когда вы переходите с одного домена на другой, каждая ссылка, которая публикуется на другом домене, должна выглядеть следующим образом:

<a href="pageTracker._linkByPost('otherdomain.com/petStoreCart/legalTerms.php');"

Это добавит значения строки запроса Google Analytics, которые будут использоваться вышеуказанным сценарием для установки файла cookie ( source ).

1 голос
/ 27 января 2011

Я использовал эту структуру на наших сайтах и ​​сайтах клиентов, и она работает как шарм ...

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");    
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js'     type='text/javascript'%3E%3C/script%3E")); 
</script> <script type="text/javascript"> 

try {

//Original tracking
var pageTracker_ORIG = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_ORIG._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_ORIG._trackPageview();

//New Analytics tag
var pageTracker_SGM = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_SGM._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_SGM._trackPageview();


} catch(err) {}

0 голосов
/ 31 декабря 2009
var otherTracker = _gat._getTracker(”UA-22222-1″);
otherTracker._setDomainName(’domain.com’);
otherTracker._trackPageview();
0 голосов
/ 06 августа 2009

У этого человека такая же проблема в справочной системе Google Analytics. Я бы посоветовал взглянуть на тему. Но регулярно GA не поддерживает несколько трекеров.

Мне нравится Clicky сам, но это стоит денег.

...