Google Analytics: как мы это делаем

6832566ec5bd4603a92c8a03b213264a

Уже четыре года в наших торговых точках работают электронные каталоги. Каталоги, предоставляющие фактически функционал интернет-магазина, дают до 20 % оборотов «Связного». Мы попросили нашего эксперта рассказать о «подводных камнях» настройки аналитики.

Допустим, вы сделали одностраничный сайт на wix.com (или любом другом маловменяемом, но очень красивом движке, или вручную на ajax’е, flash’е и т.п.), формально расположили код Google Analytics (GA) так, как описано в технической документации Google для новичков … и внезапно потеряли чуть более, чем всю информацию о перемещении пользователя между вашими «виртуальными» страницами.

У нас есть три варианта решения вопроса.

Вариант первый и простой: сайты-визитки

На небольшом сайте достаточно будет отслеживать клики по важным и интересным кнопкам с помощью вызова _trackEvent()

_trackEvent(category, action, opt_label, opt_value, opt_noninteraction)

А затем в веб-интерфейсе GA настроить цели. Например, основная цель вашего сайта-визитки — создание лида: заполнение формы на сайте. Настройте цели на микроконверсии по пути к заполнению формы, а затем дашборд goal flow, этого будет достаточно чтобы просматривать конверсию на простейшем одностраничном сайте:

— вы видите весь поток, входящий на сайт, и его источники благодаря GA(‘send’, ‘pageview’);
— вы видите отказы и события, происходящие на сайте (только те, которые отслеживаются с помощью trackEvent)
— вы видите поток микро-конверсий в макро-конверсии, и, соответственно, можете пофиксить те элементы этого потока, на которых отваливается наибольшее количество посетителей.

Вариант второй: сайты уровня интернет-магазина

Как правило, по дефолту при исполнении функции имитирующей переход на новую страницу, к вашему url добавляется в конце через #!

Пример возьмём с самой обычной страницы:
http://www.kutuzov-photo.com/ — это лендинг с чистым url’ом
http://www.kutuzov-photo.com/#!gallery/c1c9t — это виртуальная страница просмотра галереи
http://www.kutuzov-photo.com/#!contact/c16fm — или вот, например, контакты

По умолчанию Google Analytics запустит trackpageview для mysite.com/, но не для mysite.com/#!whatever. В этом случае мы увидим только просмотры главной страницы, но не увидим, сколько людей смотрело whatever или вообще нажало кнопку whatever. Чтобы это исправить, устанавливаем код виртуального просмотра страницы:

<a href="#whatever" title="Whatever_anchor_on_mypage" onclick="_gaq.push(['_trackPageview' ,'/Features/']);">Link on Page</a>

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

Вариант третий: для сложного сайта со многими лэндингами

Теперь допустим, что страница #!whatever становится лэндингом — например, туда ведет ссылка из вашей рассылки или из органического трафика. Естественно, поскольку не произошло клика, просмотр (да и вход) будет приписан главной.

Неплохим решением будет заставить Google Analytics считывать хэштег и всё что следует за ним. Для этого используем свойство location.hash в коде GA.

_gaq.push(['_trackPageview', location.pathname + location.search + location.hash]);

Теперь GA видит каждую нашу виртуальную страницу как отдельную, и механика сбора данных становится похожей на стандартную.

Полный код:

Асинхронный код отслеживания:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxx-X']);
_gaq.push(['_trackPageview', location.pathname + location.search + location.hash]);
(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);
})();

Для старичков, не перешедших на ga.js:

var pageTracker = _gat._getTracker("UA-XXXXX-X");
pageTracker._trackPageview(location.pathname + location.search + location.hash);