Команда maksimum-art.ruУстановка микроцелей — важный этап. Если у вас возникли трудности или вопросы по интеграции скрипта с вашим сайтом, мы готовы помочь.
Приветствуем! Если вы запускаете рекламу в Яндекс.Директе, то наверняка сталкивались с ситуацией, когда большая часть бюджета уходит на пользователей, которые просто зашли на сайт и сразу ушли. Платить за такой трафик — неэффективно. Особенно при использовании стратегии «Оплата за конверсию», где вы платите только за конкретные действия.
Но что делать, если основных целей (звонков или заявок) слишком мало для обучения алгоритма? Или их стоимость зашкаливает? Решение — использовать промежуточные микроцели, которые фиксируют реальный интерес посетителя.
Сегодня расскажем о нашей разработке — скрипте для настройки микроцели «Активность 4+», который поможет вам покупать только качественный, заинтересованный трафик.
Что такое микроцель
В Яндекс.Метрике есть инструмент «Вебвизор», который записывает действия пользователей на сайте и оценивает их активность по цветовому индикатору (от красного до зелёного). Всего 5 ступеней активности. Цель «Активность 4+» срабатывает, когда пользователь достигает 4-й (синей) или 5-й (зелёной) ступени. Это означает, что человек действительно взаимодействовал с сайтом: читал, скроллил, кликал, провёл на странице достаточное время.
Почему именно эта цель, а не другие?
- Время на сайте: Пользователь может открыть вкладку и забыть про неё на несколько часов. Активности ноль, а время идёт.
- Глубина просмотра: Для лендингов (одностраничных сайтов) эта цель практически бесполезна.
- Скролл до блока: Можно быстро пролистать страницу за пару секунд без осмысленного просмотра.
- Готовые комбинированные скрипты (например, «60 секунд»): Часто срабатывают слишком часто, фиксируя даже слабую активность, что «размывает» качество трафика.
«Активность 4+» — это наш собственный алгоритм, который комплексно оценивает поведение: учитывает время, количество просмотренных страниц, прокрутку и клики. Он точнее отделяет заинтересованных пользователей от случайных.
Как установить и настроить скрипт? (Пошаговая инструкция)
Не волнуйтесь, программировать не нужно. Просто скопируйте наш код и выполните несколько простых шагов.
Шаг 1: Скопируйте код в файл
Создайте на своём компьютере текстовый файл и назовите его maksimum-art.js. Откройте его любым текстовым редактором (например, Блокнотом) и скопируйте туда код из блока ниже.
// maksimum-art.js
// Скрипт для отправки микроцели "Активность 4+" в Яндекс.Метрику
// Разработано командой maksimum-art.ru
// Конфигурация скрипта
const CONFIG = {
buttonId: 'maksimumart', // ID кнопки для клика
desktopOffset: 100, // Отступ для десктопа (px)
mobileOffset: 450, // Отступ для мобильных (px)
requiredTime: 180, // Требуемое время на сайте (секунды)
requiredPages: 2 // Требуемое количество посещенных страниц
};
(function () {
'use strict';
// Проверка, является ли устройство мобильным
function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || window.innerWidth <= 768;
}
// Получение количества посещенных страниц
function getVisitedPages() {
return parseInt(sessionStorage.getItem('visitedPages') || '0');
}
// Увеличение счетчика посещенных страниц
function incrementVisitedPages() {
const count = getVisitedPages() + 1;
sessionStorage.setItem('visitedPages', count.toString());
return count;
}
// Получение времени начала сессии
function getSessionStartTime() {
let startTime = sessionStorage.getItem('sessionStartTime');
if (!startTime) {
startTime = Date.now().toString();
sessionStorage.setItem('sessionStartTime', startTime);
}
return parseInt(startTime);
}
// Получение времени на сайте в секундах
function getTimeOnSite() {
const startTime = getSessionStartTime();
return Math.floor((Date.now() - startTime) / 1000);
}
// Проверка прокрутки до конца страницы
function isScrolledToBottom() {
const offset = isMobile() ? CONFIG.mobileOffset : CONFIG.desktopOffset;
const scrollPosition = window.innerHeight + window.scrollY;
const documentHeight = document.documentElement.scrollHeight;
return scrollPosition >= documentHeight - offset;
}
// Проверка всех условий
function checkConditions() {
const visitedPages = getVisitedPages();
const timeOnSite = getTimeOnSite();
const scrolledToBottom = isScrolledToBottom();
return visitedPages >= CONFIG.requiredPages &&
timeOnSite >= CONFIG.requiredTime &&
scrolledToBottom;
}
// Выполнение клика по кнопке
function triggerButtonClick() {
// Проверяем, был ли уже выполнен клик
if (sessionStorage.getItem('buttonClicked') === 'true') {
return;
}
const button = document.getElementById(CONFIG.buttonId);
if (button) {
button.click();
sessionStorage.setItem('buttonClicked', 'true');
}
}
// Обработчик прокрутки
function handleScroll() {
if (checkConditions()) {
triggerButtonClick();
}
}
// Инициализация
function init() {
// Увеличиваем счетчик посещенных страниц
incrementVisitedPages();
// Проверяем условия при загрузке страницы
if (checkConditions()) {
triggerButtonClick();
return;
}
// Добавляем обработчик прокрутки
let scrollTimeout;
window.addEventListener('scroll', function () {
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(handleScroll, 100);
}, { passive: true });
// Проверяем условия по времени каждые 10 секунд
setInterval(function () {
if (checkConditions()) {
triggerButtonClick();
}
}, 10000);
}
// Запуск скрипта после загрузки DOM
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
/// ... индификатор цели (в настройказ цели метрики)
if (document.getElementById('maksimumart')) {
document.getElementById('maksimumart').addEventListener('click', function () {
ym('12345678', 'reachGoal', 'maksimumart'); // 'button_click' — название цели
console.log('ок');
});
};
Шаг 2: Загрузите файл на сайт
Загрузите созданный файл maksimum-art.js в корневую папку вашего сайта (туда же, где лежат файлы index.html, style.css и другие).
Шаг 3: Подключите скрипт к сайту
Добавьте следующую строку перед закрывающим тегом </body> на всех страницах вашего сайта:
<div id="maksimumart"></div>
<script src="/maksimum-art.js"></script>
Шаг 4: Настройте параметры
В самом начале кода файла maksimum-art.js найдите блок CONFIG и отредактируйте значения под свои задачи: JavaScript
// Конфигурация скрипта
const CONFIG = {
buttonId: 'maksimumart', // ID кнопки для клика
desktopOffset: 100, // Отступ для десктопа (px)
mobileOffset: 450, // Отступ для мобильных (px)
requiredTime: 180, // Требуемое время на сайте (секунды)
requiredPages: 2 // Требуемое количество посещенных страниц
};
Шаг 5: Создайте цель в Яндекс.Метрике
- 1. Зайдите в Яндекс.Метрику → ваш счётчик → «Цели»
- 2. Нажмите «Добавить цель».
- 3. Имя цели: Например, «Активность 4+».
- 4. Тип цели: Выберите «JavaScript-событие».
- 5. В строку Идентификатор цели - совпадает: maksimumart
- 6. Сохраните цель.
Шаг 6: Укажите номер вашей Яндекс.Метрики
В том же файле maksimum-art.js найдите строку ym('12345678', 'reachGoal', 'maksimumart'); и замените 12345678 на номер вашего счётчика Метрики (его можно найти в настройках вашего счётчика).
/// ... индификатор цели (в настройказ цели метрики)
if (document.getElementById('maksimumart')) {
document.getElementById('maksimumart').addEventListener('click', function () {
ym('12345678', 'reachGoal', 'maksimumart'); // 'button_click' — название цели
console.log('ок');
});
};
Важно! Новые цели в Метрике начинают работать в течение 3 часов после создания.
Как работать со стратегией «Оплата за конверсию»?
- 1. В Директе создайте кампанию со стратегией «Оплата за конверсию».
- 2. В настройках кампании в поле «Цель» выберите созданную вами цель «Активность 4+».
- 3. Установите желаемую цену за конверсию. Рекомендуем ставить её в 3-5 раз ниже, чем
ваша
текущая стоимость лида (заявки/звонка).
- Пример: если лид стоит 1000 рублей, а конверсия из активных пользователей в лид — 20%, то оптимальная цена за микроцель — 200 рублей.
Теперь вы будете платить только за пользователей, которые проявили реальный интерес к вашему сайту. Это повысит эффективность рекламы и снизит стоимость привлечения клиентов.