Google Analytics: задержка необходима для отслеживания кликов по ссылкам?

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

Попасть на данную страницу можно по разным ссылкам (например, по ссылке вверху исходной страницы или по ссылке в нижнем колонтитуле). По этой причине недостаточно просто отслеживать загрузку целевой страницы; нам нужно помечать и отслеживать события клика.

В документации Google Analytics рекомендуется добавить задержку в 100 мс для кликов по "исходящим ссылкам", чтобы код отслеживания завершился до загрузки целевого объекта ссылки. Это потому что _gaq.push(['_trackEvent', category , action]) код асинхронный и требует времени для завершения, прежде чем страница выгружается?

Если это так, не будет ли это также требоваться для ссылок "на сайте"? Я не вижу, чем это отличается от ссылки на новую страницу на том же сайте; в обоих случаях текущая страница выгружается.

Изменить: я с тех пор обнаружил Google hitCallback механизм для запуска ваших событий загрузки страницы с помощью обратного вызова. Это избавляет от необходимости использовать задержку.

4 ответа

Решение

Любое отслеживание, которое необходимо выполнить непосредственно перед новой страницей, должно включать небольшую ( < 200 мс) задержку. Автономный, локальный, отправка формы и т. Д. Это позволяет выполнить запрос к серверам аналитики.

Что касается внутреннего отслеживания ссылок, вы смотрели на отчет In-Page Analytics и плагин Enhanced Link Attribute? Это может помочь вам немного без необходимости делать дополнительное кодирование.

Google Analytics предоставляет hitCallback крючок для таких случаев.

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

// Pretend that all of this preceding code
// is within a link's click handler.
var _this = this;
var eventHit;

ga('send', 'event', 'Outbound Links', 'click', _this.href, {
  hitCallback: function () {
    eventHit = true;
    document.location = _this.href;
  }
});

// Set delayed fallback to your liking. This example is 1 second.
setTimeout(function () {
  if (!eventHit) {
    document.location = _this.href;
  }
}, 1000);

Не откладывайте клики. Даже задержка в 250 мс не гарантирует успешного отслеживания. Если целевой URL находится внутри вашего домена, просто сохраните информацию об отслеживании в local.storage и проверьте на каждой странице, есть ли что-то в хранилище, и вместо этого вызовите событие ga для нажатой кнопки при загрузке страницы. Вам также следует проверить, есть ли на клиенте локальное хранилище, и если нет, то в этих случаях вы можете использовать задержку щелчка.

Вот Jquery для создания задержки:

$("a").click(function (e) {        
    e.preventDefault(); //cancel the link click
    var url = $(this).attr('href');//get the destination url of the link        
    _gaq.push(['_trackEvent', 'Links', 'Clicked', 'Buy']); //do your tracking
    //go to the original destination url after a delay
    setTimeout(function () { window.location.href = url; }, 250); 
});

Да, требуется задержка, чтобы убедиться, что запрос GA завершен до перезагрузки страницы.

Вот код Vanilla JS для реализации отслеживания и задержки:

document.getElementById('ID').addEventListener('click', function(event) {
    event.preventDefault();
    _gaq.push([ '_trackEvent', 'category', 'action', 'label' ]);
    setTimeout( function() {
        document.location = event.target.href;
    }, 200);
});
Другие вопросы по тегам