Несколько трекеров GA получают переменные друг друга

Мне нужно разделить сбор данных для двух аккаунтов GA, назовем их UA-XXXXXXX-1 и UA-XXXXXXX-2. Чтобы реализовать это, я использовал пример кода из https://developers.google.com/analytics/devguides/collection/gajs/ (под текстом «Отправка команд на несколько трекеров также работает») и вот мой код:

    _gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
    _gaq.push(['_trackPageview']);
    _gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 1]);

    _gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
    _gaq.push(['second._trackPageview']);
    _gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 1]);

Это работает, но у меня есть обе пользовательские переменные в обеих учетных записях. Что мне действительно нужно, так это отслеживать customVar1 только для учетной записи UA-XXXXXXX-1 и customVar2 только для учетной записи UA-XXXXXXX-2. Есть идеи, как это реализовать?


person Memfis    schedule 08.05.2014    source источник
comment
Рассматривали ли вы возможность перехода на Universal Analytics и использования нового API analytics.js? Вариант использования нескольких трекеров плохо поддерживается в Classic Analytics, но он есть в Universal.   -  person Eduardo    schedule 08.05.2014
comment
@ Эдуардо, возможно ли это вообще с Universal Analytics?   -  person DaImTo    schedule 08.05.2014
comment
@Eduardo, надеюсь есть решение с классической аналитикой, потому что весь код GA на нашем проекте лучше не менять) а мы посмотрим на универсальную аналитику и проверим есть ли такой функционал, спасибо за ответ!   -  person Memfis    schedule 11.05.2014


Ответы (1)


Прежде всего, _setCustomVar должно стоять перед _trackPageview.

Теперь к вашей проблеме:

Это происходит потому, что пользовательские переменные уровня пользователя хранятся в файле cookie. Поскольку оба ваших трекера используют один и тот же файл cookie, второй трекер будет отправлен с переменными, установленными на первом трекере.

У вас есть 3 варианта.

1) Используйте Universal Analytics

Правильный путь здесь — использовать Universal Analytics. Мультитрекинг официально не поддерживается в Classic, потому что он глючит, как вы, наверное, заметили. А вещи легко сломать.

В Universal все специальные параметры оцениваются на стороне сервера, поэтому эта настройка поддерживается. Данные для пользовательских параметров не сохраняются в файлах cookie.

например: при условии, что вы настроили измерение 1 на UA-XXXXXXX-1 и измерение 2 на UA-XXXXXXX-2 через интерфейс администратора.

ga('create', 'UA-XXXXXXX-1', 'auto');
ga('send', 'pageview', {
  'dimension1': 'cv1'
});

ga('create', 'UA-XXXXXXX-2', 'auto', {'name': 'newTracker'});
ga('newTracker.send', 'pageview', {
  'dimension2': 'cv2'
});

Больше информации:

2) Сохранить классическую аналитику, но использовать customVars на уровне сеанса.

Если вы окончательно не можете перейти на Universal Analytics и хотите продолжать использовать Classic, вы можете обойти эту проблему, просто используя пользовательские переменные уровня сеанса. Чтобы заставить его работать, вам нужно всего лишь изменить область пользовательского Var, как показано ниже (с 1 на 2).

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

_gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
_gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 2]);
_gaq.push(['_trackPageview']);


_gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
_gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 2]);
_gaq.push(['second._trackPageview']);

3) Сохраняйте классические и пользовательские резюме, но используйте разные файлы cookie для каждого трекера.

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

Если ваш сайт: http://www.example.net, настройте трекеры следующим образом:

_gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
_gaq.push(['_setDomainName', 'example.net']);
_gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 1]);
_gaq.push(['_trackPageview']);


_gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
_gaq.push(['second._setDomainName', 'www.example.net']);
_gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 1]);
_gaq.push(['second._trackPageview']);

Это ОБЯЗАТЕЛЬНО должно быть сделано на всех страницах вашего сайта. Не только этот. Это гарантирует, что каждый трекер использует свой изолированный набор файлов cookie, а customVars не будет передаваться от одного к другому.

Обратите внимание, что если к вашему сайту можно получить доступ без www.. например: http://example.net/ это не удастся, и обходного пути нет. Вы не можете создать 2 набора файлов cookie с одинаковым именем в одном и том же домене и пути. Вы просто не можете.

Кроме того, если вы используете _gaq.push(['_setDomainName', 'none']); или _gaq.push(['_setAllowHash', false]);, описанный выше прием не сработает, и файлы cookie будут конфликтовать. Ваши данные будут странными. Просто не делай этого. Вы были предупреждены.

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

Больше информации:

person Eduardo    schedule 12.05.2014
comment
отличный ответ. Мне всегда нравится, когда гуглеры готовы делиться своими знаниями. :) - person DaImTo; 13.05.2014
comment
@Eduardo Спасибо за такой подробный ответ! Мы использовали № 2, и он работает идеально! - person Memfis; 14.05.2014
comment
@Memfis, настоятельно рекомендуется стиснуть зубы и перейти на Universal Analytics. Google, вероятно, уже переместил вашу собственность в UA, и вы используете старый код, который станет устаревшим после завершения переноса. Настроить специальные параметры несложно. Я действительно чувствую, что их проще реализовать, чем пользовательские переменные. - person Sean Kendle; 22.05.2014
comment
@ Эдуардо, надеюсь, ты поможешь мне с моей проблемой, связанной с UA. Пожалуйста, ознакомьтесь с моим вопросом здесь: stackoverflow.com/questions/23815965/ - person Sean Kendle; 23.05.2014
comment
@ Эдуардо, я знаю, что этот вопрос уже старый, но я нигде не могу найти ответ на свою проблему. Не могли бы вы взглянуть на мои проблемы с UA? Я чувствую, что решение простое, но я не могу найти ответа на него в Интернете. Я прочитал ваш ответ на этой странице, но он не совсем отвечает на мою проблему. Спасибо. stackoverflow.com/questions/29007427/ - person Chen Li Yong; 12.03.2015