Как отслеживать в Яндекс.Метрике глубину просмотра лендинга и повторные визиты

Я чот подумал над тем, что не хватает функционала в метрике и решил, а что если добавить новые цели.

📌 Цель №1. Просмотр 75% лендинга (или любого другого процента)

Такая цель показывает, насколько посетитель заинтересовался вашим предложением.

🔘 просмотр 25% страницы 🔘 просмотр 50% 🔘 просмотр 75% 🔘 просмотр 100%

Код для отслеживания

(function () { let fired = false;

window.addEventListener('scroll', function () {

if (fired) return;

const scrollTop = window.pageYOffset || document.documentElement.scrollTop; const windowHeight = window.innerHeight; const documentHeight = document.documentElement.scrollHeight;

const percent = ((scrollTop + windowHeight) / documentHeight) * 100;

if (percent >= 75) { fired = true;

ym(12345678, 'reachGoal', 'scroll75'); } }); })();

Замените 12345678 на номер вашего счетчика Яндекс.Метрики.

Затем создайте в Метрике цель типа JavaScript-событие с названием:

scroll75

💡 Хотите отслеживать другой процент? Просто измените:

75 например на:

• 25 • 50 • 90 • 100

и название события:

scroll25 scroll50 scroll90 scroll100

📌 Цель №2. Повторный визит через 1 или 7 дней

На самом деле писать код для этого не обязательно.

Яндекс.Метрика уже умеет определять вернувшихся пользователей.

Для анализа и ретаргетинга достаточно создать сегмент:

Вернувшиеся посетители; Количество визитов ≥ 2; Пользователи, вернувшиеся за последние 7 или 30 дней.

Но если вам нужна отдельная цель JavaScript, например для передачи события в Метрику или использования в оптимизации рекламы, можно сделать так.

Повторный визит через 1 день

(function(){

const now = Date.now(); const key = 'firstVisitDate';

let firstVisit = localStorage.getItem(key);

if (!firstVisit){

localStorage.setItem(key, now);

} else {

const diff = now - Number(firstVisit);

const days = diff / (10006060*24);

if(days >= 1){

ym(12345678, 'reachGoal', 'return1day');

localStorage.setItem(key, now); }

}

})();

Создайте цель: return1day

Повторный визит через 7 дней Достаточно изменить одно число:

if(days >= 7){ ym(12345678, 'reachGoal', 'return7days'); }

и создать цель: return7days

Какие цели я рекомендую использовать практически на каждом лендинге

🔘 Просмотр глубины просмотра сайта на 75% 🔘 просмотр кейсов/отзывов 🔘 скачивание прайс-листа 🔘 Звонки с коллтрекинга 🔘 отправка формы (только с JS события) 🔘 Нахождение на сайте более 60 сек.

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

А какие нестандартные цели используете вы в своих проектах?