Настройка цели Метрики «Время на сайте»: инструкция
Сегодня мы настроим еще одну нужную цель Яндекс Метрики: «Время на сайте» с учетом активности.
Содержание статьи
Как время на сайте влияет на конверсию?
Время, проведенное пользователем на сайте, это один из важнейших факторов, который позволяет оценить, насколько сайт отвечает запросу пользователей. Не случайно, при оценке поведения посетителя на ресурсе, все поисковые системы в первую очередь обращают внимание, сколько времени провел пользователь на сайте.
Если время визита составляет менее 15 секунд, то метрики фиксируют «Отказ». Как правило, этого времени достаточно, чтобы пользователь успел открыть страницу и оценить, насколько сайт отвечает его поисковому запросу и либо продолжил изучение информации, либо продолжил поиск.
Логично, что если посетитель закрыл сайт в первые секунды посещения, то такой визит не даст конверсионных действий. И так же верно обратное, чем больше времени провел посетитель на сайте, чем тщательнее изучал представленную информацию, тем выше вероятность, что он заинтересован, а значит имеет смысл таких пользователей попытаться конвертировать в покупателей, например, с помощью ретаргетинговой кампании
Время на сайте без учета активности
Однако, не достаточно просто выбрать все визиты с длительностью выше 15 секунд. Часто бывает, что в отчетах Яндекс Метрики мы видим визиты продолжительностью в несколько минут, однако если анализировать параметры глубже, то мы обнаружим, что пользователь не совершал никакой активности.
На скриншоте мы видим, что был переход по рекламе и длительность визита составила 4 минуты и 44 секунды. Если ориентироваться только на время, то такое посещение нужно записать в «Заинтересованный потенциальный клиент» и настроить ретаргетинговую кампанию. Но если мы зайдем в Вебвизор ( как улучшить сайт с помощью вебвизора у нас была отдельная статья) , то увидим, что после открытия страницы посетитель не совершал никаких действий.
Для оценки заинтересованности важно не только, сколько времени провел посетитель, но и его активность на сайте. Чем больше действий он совершил, тем выше его вовлеченность.
В нашем случае мы понимаем, что это просто бот, а значит он для нас бесполезен: боты не становятся клиентами и покупателями, хотя даже умеют оставлять заявки.
Поэтому рассматривать время на сайте без учета активности пользователя во время визита нельзя.
Скрипт для сайта
Сегодня мы поделимся с Вами скриптом, который не только умеет фиксировать время на сайте, но и учитывает активность пользователя. Вот, собственно, сам код:
<script>
var settings = {
/* Все настройки вбиваем тут, остальной код не трогаем */
vremya: 30, // Сюда вписываем через какое количество секунд повторно отправлять цель, по умолчанию стоит 60, но можно указать и 30. Если вы указали шаг 30 секунд, то в Яндекс Метрике можно отслеживать события с шагом 30, а если указали 60 секунд, то с шагом 60. Цель событий в метрике указываем в формате "vremya+sec", то есть если указано 60, то цель будет 60sec,120sec,180sec и т.д.
checkTime: 10, // секунды. Период проверки. Желательно, чтобы этот показатель был кратным vremya
IDmetrika: XXXXXXXX, // Вписываем ваш номер Счетчика Яндекс Метрики
/* Настройки которые надо менять */
}
/* БОЛЬШЕ В КОДЕ НИЧЕГО НЕ ТРОГАЕМ, ЦЕЛИ ТОЖЕ НЕ ПРАВИМ */
var metricsFn = function () {
console.log(ActiveScore.timer);
console.log(ActiveScore.vremya);
var c1 = this.getCookie(this.cookieName);
console.log(c1);
if (ActiveScore.timer >= ActiveScore.vremya) {
console.log("событие отправилось");
/* Тут перечисляем все что нужно будет вызвать по достижению цели */
ym(settings.IDmetrika, "reachGoal", this.cookieName.slice(0, -3));
/* Тут перечисляем все что нужно будет вызвать по достижению цели */
}
};
var ActiveScore = {
vremya: settings.vremya,
checkTime: settings.checkTime,
loop: true,
counter: 0,
cookieName: "60sec_ap",
sendFn: null,
parts: 0,
active_parts: 0,
timer: 0,
events: [
"touchmove",
"blur",
"focus",
"focusin",
"focusout",
"load",
"resize",
"scroll",
"unload",
"click",
"dblclick",
"mousedown",
"mouseup",
"mousemove",
"mouseover",
"mouseout",
"mouseenter",
"mouseleave",
"change",
"select",
"submit",
"keydown",
"keypress",
"keyup",
"error",
],
setEvents: function () {
for (var index = 0; index < this.events.length; index++) {
var eName = this.events[index];
window.addEventListener(eName, function (e) {
if (e.isTrusted && ActiveScore.period.events == false) {
ActiveScore.period.events = true;
}
});
}
},
period: {
start: 0,
end: 0,
events: false,
},
init: function (fn) {
this.calcParts();
this.setEvents();
this.setStartCounter();
if (this.checkCookie()) {
this.sendFn = fn;
this.start();
}
},
readLastCookie: function () {
var absurdlyLarge = 100000;
for (var i = 1; i < absurdlyLarge; i++) {
var cookie = this.getCookie(i * this.vremya + 'sec_ap');
if (cookie != this.parts * this.parts) return { i: i, cookie: cookie };
}
return { i: 1, cookie: 0 };
},
setStartCounter: function () {
var lastCookie = this.readLastCookie();
this.counter = lastCookie.i - 1;
this.active_parts = Number(lastCookie.cookie);
this.cookieName = (this.counter + 1) * this.vremya + "sec_ap";
},
calcParts: function () {
this.parts = Math.ceil(this.vremya / this.checkTime);
},
setPeriod: function () {
this.period.start = this.microtime();
this.period.end = this.period.start + this.checkTime;
this.period.events = false;
},
microtime: function () {
var now = new Date().getTime() / 1000;
var s = parseInt(now);
return s;
},
start: function () {
this.setPeriod();
this.runPeriod();
},
timeoutId: null,
checkPeriod: function () {
if (this.period.events == true) {
this.active_parts = this.active_parts + 1;
// console.log('В этой секции были действия');
} else {
// console.log('В этой секции НЕБЫЛО действия');
}
this.timer = this.active_parts * this.checkTime;
console.log(
this.active_parts + " / " + this.parts + " [" + this.timer + "]"
);
if (this.checkSecs()) {
} else {
this.start();
}
this.setCookie(this.cookieName, this.active_parts);
},
checkSecs: function () {
if (this.timer >= this.vremya) {
this.send();
if (this.loop == true) {
this.counter++;
this.timer = 0;
this.active_parts = 0;
this.cookieName = (this.counter + 1) * this.vremya + "sec_ap";
return false;
} else {
// console.log('Завершили проверку активности');
return true;
}
}
return false;
},
timeoutFn: function () {
ActiveScore.checkPeriod();
},
runPeriod: function () {
this.timeoutId = setTimeout(this.timeoutFn, this.checkTime * 1000);
},
send: function () {
if (this.getCookie(this.cookieName) == this.parts * this.parts) {
this.setStartCounter();
} else {
this.setCookie(this.cookieName, this.active_parts * this.active_parts);
}
this.sendFn();
},
checkCookie: function () {
var c = this.getCookie(this.cookieName);
if (c == null) {
return true;
} else {
if (c == '') return true;
c = parseInt(c);
if (c >= this.parts) {
// console.log('Скрипт даже не запустился...');
if (this.loop == true) {
return true;
}
return false;
} else {
this.active_parts = c;
return true;
}
}
},
setCookie: function (name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
},
getCookie: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
eraseCookie: function (name) {
document.cookie =
name + "=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;";
},
};
ActiveScore.init(metricsFn);
</script>
Инструкция, как настроить цель «Время на сайте»
Для того, чтобы добавить скрипт на ваш сайт, вам нужно просто скопировать и вставить код через GTM, а так же задать свои параметры. Меняем только 3 значения:
Функция vremya- устанавливаем, как часто будет срабатывать событие. Мы рекомендуем использовать период либо 30, либо 60 секунд.
XXXXXX- тут нужно указать номер вашего счетчика в Яндекс Метрике
После чего вам нужно в настройках счетчика создать новую цель, например, «Визит 60 секунд» и в качестве идентификатора указать «60sec».
Если все сделано правильно, то вы сможете отслеживать время на сайте с учетом активности пользователя.
Понравилась статья?
Еще много полезной информации у нас в телеграм-канале.