Прошел почти месяц с момента публикации моего проекта по автоматической оптимизации рекламных кампаний в Яндекс Директ — вот ссылка на пост.
К сожалению, пост не получил достаточного отклика, чтобы я начал записывать подробную инструкцию по настройке, но всё ещё в силе: как только он наберёт 100 лайков — я обязательно подготовлю и опубликую полноценное руководство.
А пока что — немного новостей и полезностей.
Сейчас я работаю над новым проектом, который опубликую здесь, как только доведу его до ума. Он полностью решит проблему с обучаемостью рекламных кампаний — раз и навсегда.
Но уже сегодня хочу поделиться простым скриптом, который также помогает справляться с этой проблемой. Это временное решение — менее гибкое, чем то, над которым я сейчас работаю, но оно вполне рабочее и может быть полезно прямо сейчас.
Что делает скрипт?
Он создаёт 3 цели, которые автоматически заполняются в зависимости от того, насколько "качественным" оказался пользователь, зашедший на сайт. Затем эти цели можно использовать в качестве конверсий для оптимизации в Яндекс Директ — это позволит системе эффективнее обучаться и не останавливать обучение рекламной кампании.
Скрипт не является полностью моей разработкой, некоторую часть я позаимствовал у одного специалиста. Ссылочку на автора исходного скрипта оставлю здесь:
Итак, давайте сначала разберем принцип работы скрипта и каким проектам он будет полезен.
Принцип работы
Принцип работы максимально простой: скрипт отслеживает поведение пользователя на сайте и по завершению сессии определяет, к какому из трёх сегментов он относится:
minScrollPauses — минимальное количество пауз при прокрутке (скролл-стопов)
Отдельно стоит отметить: скрипт умеет определять, является ли посетитель сайта ботом. Если пользователь распознан как бот — никакие цели ему не присваиваются.
Для каких проектов будет полезно?
В первую очередь такой скрипт будет полезен проектам в перегретых нишах, где:
Высокая конкуренция
дорогой CPL (стоимость лида)
Недельный бюджет, который не позволяет стабильно получать хотя бы 10 конверсий в неделю — это минимальный объём, необходимый для обучения рекламных кампаний в Яндекс Директе.
Инструкция по установке
Чтобы внедрить скрипт на сайт и начать отслеживать поведение пользователей для последующей сегментации, потребуется следующее:
Скрипт — сам код, который будет анализировать поведение и отправлять цели в Метрику
Доступ к Яндекс Тег Менеджеру — если нет возможности напрямую редактировать HTML-код сайта
Доступ к Яндекс Метрике — минимальный уровень доступа: Аналитика, чтобы была возможность создать цели для скрипта.
Ниже опубликован сам скрипт:
<script>
(function() {
console.log('[SegTracker] Скрипт инициализирован.')
var DAILY_COUNTER_STORAGE_KEY = 'quality_user_daily_counter'
var MAX_GOAL_COUNT_PER_DAY = 1
var SESSION_END_INACTIVITY_THRESHOLD = 180000
var MIN_SESSION_DURATION_FOR_GOAL_MS = 30000
var SEGMENT_RULES = {
'quality_user_high': { minTimeOnSiteMs: 300000, minPageViews: 3, minScrollDepthPercentage: 30, minScrollPauses: 3 },
'quality_user_medium': { minTimeOnSiteMs: 60000, minPageViews: 2, minScrollDepthPercentage: 30, minScrollPauses: 2 },
'quality_user_low': { minTimeOnSiteMs: 0, minPageViews: 0, minScrollDepthPercentage: 0, minScrollPauses: 0 }
}
var SCROLL_PAUSE_DURATION = 3000
var SEGMENT_CHECK_INTERVAL_MS = 5000; // New: Check segment every 5 seconds
var STORAGE_KEYS = {
startTime: 'q_ses_start',
active: 'q_ses_active',
scrollPauses: 'q_scroll_pauses',
scrollDepth: 'q_scroll_depth',
pageViews: 'q_page_views',
sent: 'q_goal_sent',
segment: 'q_current_segment',
daily: function(goal) { return DAILY_COUNTER_STORAGE_KEY + '_' + goal }
}
var startTime = parseInt(sessionStorage.getItem(STORAGE_KEYS.startTime)) || Date.now()
sessionStorage.setItem(STORAGE_KEYS.startTime, startTime)
var scrollPauses = parseInt(sessionStorage.getItem(STORAGE_KEYS.scrollPauses)) || 0
var maxScroll = parseInt(sessionStorage.getItem(STORAGE_KEYS.scrollDepth)) || 0
var pageViews = parseInt(sessionStorage.getItem(STORAGE_KEYS.pageViews)) || 1
var goalSent = sessionStorage.getItem(STORAGE_KEYS.sent) === 'true'
function getScrollPercent() {
var height = document.documentElement.scrollHeight - window.innerHeight
return height > 0 ? Math.min(100, (maxScroll / height) * 100) : 0
}
function isWithinDailyLimit(goal) {
return (parseInt(localStorage.getItem(STORAGE_KEYS.daily(goal))) || 0) < MAX_GOAL_COUNT_PER_DAY
}
function incrementDailyCounter(goal) {
var key = STORAGE_KEYS.daily(goal)
var current = parseInt(localStorage.getItem(key)) || 0
localStorage.setItem(key, current + 1)
}
function determineSegment() {
var time = Date.now() - startTime
var scroll = getScrollPercent()
// Дополнительное логирование для отладки
console.log('[SegTracker] Проверка сегмента: Время на сайте (мс): ' + time + ', Просмотры страниц: ' + pageViews + ', Прокрутка (%): ' + scroll.toFixed(2) + ' (макс. пикселей: ' + maxScroll + '), Паузы скролла: ' + scrollPauses);
var keys = []
for (var name in SEGMENT_RULES) {
if (!SEGMENT_RULES.hasOwnProperty(name)) continue
keys.push(name)
}
keys.sort(function(a, b) {
return SEGMENT_RULES[b].minTimeOnSiteMs - SEGMENT_RULES[a].minTimeOnSiteMs
})
for (var i = 0; i < keys.length; i++) {
var k = keys[i]
var rules = SEGMENT_RULES[k]
if (
time >= rules.minTimeOnSiteMs &&
pageViews >= rules.minPageViews &&
scroll >= rules.minScrollDepthPercentage &&
scrollPauses >= rules.minScrollPauses
) {
console.log('[SegTracker] Текущий сегмент: ' + k)
return k
}
}
return null
}
function sendFinalGoal() {
if (goalSent) return
var segment = sessionStorage.getItem(STORAGE_KEYS.segment) || determineSegment()
if (!segment || !isWithinDailyLimit(segment)) return
var time = Date.now() - startTime
if (segment !== 'quality_user_low' && time < MIN_SESSION_DURATION_FOR_GOAL_MS) {
console.log('[SegTracker] Недостаточно времени на сайте для цели: ' + time + ' мс')
return
}
ym(НОМЕР_ВАШЕГО_СЧЕТЧИКА, 'reachGoal', segment)
incrementDailyCounter(segment)
sessionStorage.setItem(STORAGE_KEYS.sent, 'true')
console.log('[SegTracker] Отправлена цель: ' + segment)
}
var scrollTimer
window.addEventListener('scroll', function() {
var y = window.scrollY
maxScroll = Math.max(maxScroll, y)
sessionStorage.setItem(STORAGE_KEYS.scrollDepth, maxScroll.toString())
clearTimeout(scrollTimer)
scrollTimer = setTimeout(function() {
scrollPauses++
sessionStorage.setItem(STORAGE_KEYS.scrollPauses, scrollPauses.toString())
console.log('[SegTracker] Засчитана пауза прокрутки. Всего: ' + scrollPauses + '. Текущая макс. прокрутка (px): ' + maxScroll) // Дополнительное логирование
}, SCROLL_PAUSE_DURATION)
})
var inactivityTimer
function resetInactivityTimer() {
clearTimeout(inactivityTimer)
inactivityTimer = setTimeout(function() {
console.log('[SegTracker] Неактивность. Попытка отправки цели.')
sendFinalGoal()
}, SESSION_END_INACTIVITY_THRESHOLD)
}
var events = ['mousemove', 'keydown', 'click', 'touchstart']
for (var i = 0; i < events.length; i++) {
document.addEventListener(events[i], resetInactivityTimer, { passive: true })
}
document.addEventListener('visibilitychange', function() {
if (document.hidden) {
console.log('[SegTracker] Страница скрыта. Ожидание завершения сессии...')
inactivityTimer = setTimeout(function() {
sendFinalGoal()
}, SESSION_END_INACTIVITY_THRESHOLD)
} else {
console.log('[SegTracker] Страница снова видима.')
resetInactivityTimer()
}
})
window.addEventListener('beforeunload', function() {
if (sessionStorage.getItem('q_internal_nav') === 'true') {
sessionStorage.removeItem('q_internal_nav')
console.log('[SegTracker] Внутренний переход. Цель не отправляется.')
return
}
console.log('[SegTracker] Выход со страницы. Отправка цели...')
sendFinalGoal()
})
document.addEventListener('click', function(e) {
var a = e.target.closest('a')
if (a && a.href && a.origin === location.origin && a.pathname !== location.pathname) {
sessionStorage.setItem('q_internal_nav', 'true')
console.log('[SegTracker] Обнаружен внутренний переход по ссылке: ' + a.href)
}
})
// New function to check and update segment periodically
function checkAndUpdateSegment() {
var best = determineSegment()
var currentStoredSegment = sessionStorage.getItem(STORAGE_KEYS.segment)
if (best && best !== currentStoredSegment) {
sessionStorage.setItem(STORAGE_KEYS.segment, best)
console.log('[SegTracker] Обнаружен и сохранен новый сегмент: ' + best + '. Предыдущий сегмент: ' + (currentStoredSegment || 'не определен'))
}
// No else if for 'best' being the same, to reduce console spam from periodic checks
}
window.addEventListener('load', function() {
var prev = sessionStorage.getItem('q_prev_url')
var curr = location.href
if (prev && prev !== curr) {
pageViews++
console.log('[SegTracker] Переход на новую страницу. pageViews: ' + pageViews)
} else if (!prev) {
console.log('[SegTracker] Первая страница в сессии.')
} else {
console.log('[SegTracker] Перезагрузка текущей страницы.')
}
sessionStorage.setItem(STORAGE_KEYS.pageViews, pageViews.toString())
sessionStorage.setItem('q_prev_url', curr)
// Initial segment check on page load
checkAndUpdateSegment();
})
window.sendFinalGoal = sendFinalGoal
resetInactivityTimer()
// New: Start periodic segment check
setInterval(checkAndUpdateSegment, SEGMENT_CHECK_INTERVAL_MS);
})()
</script>
Найдите следующую строчку
ym(НОМЕР_ВАШЕГО_СЧЕТЧИКА, 'reachGoal', segment)
Замените "НОМЕР_ВАШЕГО_СЧЕТЧИКА" на актуальный номер счетчика яндекс метрики, перед тем, как установить скрипт на сайт.
Ниже — ключевые параметры скрипта, которые вы можете (и должны) настроить под особенности вашего сайта:
var MAX_GOAL_COUNT_PER_DAY = 1
Ограничение на количество целей в сутки с одного пользователя. Позволяет избежать повторных засчитываний целей от одного и того же пользователя. По умолчанию — не больше одной цели в день.
var SESSION_END_INACTIVITY_THRESHOLD = 180000
Порог бездействия для завершения сессии (в миллисекундах). Если пользователь не проявлял активности более 3 минут (180 000 мс), сессия считается завершённой — скрипт оценивает поведение и отправляет цель.
var MIN_SESSION_DURATION_FOR_GOAL_MS = 10000
Минимальная продолжительность сессии, чтобы засчитать цель. Если пользователь пробыл на сайте меньше 10 секунд — поведение считается недостаточным для сегментации, и цель не отправляется.
var SCROLL_PAUSE_DURATION = 3000
Длительность паузы между скроллами (в миллисекундах). Используется для оценки "вдумчивого" чтения. Если пользователь останавливается во время скролла хотя бы на 3 секунды — засчитывается пауза.
var SEGMENT_CHECK_INTERVAL_MS = 5000
Интервал проверки сегментации (в миллисекундах). Скрипт каждые 5 секунд анализирует активность пользователя, чтобы определить, достиг ли он нужного уровня вовлечённости.
Условия (правила) для распределения пользователя в тот или иной сегмент описаны выше.
Создаем цель в Яндекс Метрике
Теперь, когда вы отредактировали скрипт, нужно создать соответствующие цели в интерфейсе Яндекс Метрики.
Переходим в нужный счётчик → раздел «Цели» → «Добавить цель», и создаём 3 цели типа "JavaScript-событие" с идентификаторами:
quality_user_low
quality_user_medium
quality_user_high
Ниже записал видео как пример создания цели quality_user_low
Установка скрипта с помощью Яндекс Тег Менеджера
Если у вас нет доступа к HTML-коду сайта, вы можете установить скрипт через Яндекс Тег Менеджер (ЯТМ). Это удобно, быстро и не требует участия разработчиков.
Чтобы начать работу с ЯТМ, нужно сначала убедиться, что:
Тег Менеджер активирован — это можно сделать в настройках счётчика Яндекс Метрики. 👉 Важно: активировать Тег Менеджер может только владелец счётчика.
У вас есть доступ к контейнеру — для полноценной работы (просмотр, редактирование и добавление скриптов) необходим доступ с правами:
«Просмотр контейнера»
«Редактирование контейнера»
«Создание контейнера»
Внутри интерфейса ЯТМ перейдите в раздел «Теги» и нажмите на кнопку «Добавить тег», откроется окно создания тега со следующим содержимым:
Название — придумайте название тегу, оно может быть произвольным, например «Качественный пользователь»
Шаблон тега — в выпадающем списке выберите «Пользовательский HTML» и вставьте подготовленный скрипт внутрь появившегося окна
Триггеры — пока оставьте пустым
Сохраните ваш тег.
Перейдите в раздел «Триггеры» и нажмите на кнопку «Добавить триггер», откроется окно создания тега со следующим содержимым:
Название — придумайте название тегу, оно может быть произвольным, например «Качественный пользователь»
Тип триггера — в выпадающем списке выберите «Просмотр страницы»
Условия активации триггера — все события
Сохраните ваш триггер.
После создания триггера вернитесь в раздел «Теги», откройте ранее созданный тег и выберите нужный триггер в соответствующем поле. В конечном счете у вас должно быть примерно вот так:
Не забудьте опубликовать изменения, без этого скрипт не заработает на сайте.
Проверка работоспособности
Теперь, когда вы опубликовали тег в интерфейсе ЯТМ осталось проверить его работоспособность. Для этого перейдите на сайт, откройте режим разработчика и перейдите во вкладку «Console». Вы должны увидеть, что скрипт начал исполняться, соответствующие сообщения вы должны увидеть здесь.
[SegTracker] Скрипт инициализирован.
[SegTracker] Первая страница в сессии.
[SegTracker] Проверка сегмента: Время на сайте (мс): 100, Просмотры страниц: 1, Прокрутка (%): 0.00 (макс. пикселей: 0), Паузы скролла: 0
[SegTracker] Текущий сегмент: quality_user_low
[SegTracker] Обнаружен и сохранен новый сегмент: quality_user_low. Предыдущий сегмент: не определен
[SegTracker] Проверка сегмента: Время на сайте (мс): 5002, Просмотры страниц: 1, Прокрутка (%): 0.00 (макс. пикселей: 0), Паузы скролла: 0
Эти сообщения, которые выводятся в консоли говорят о том, что скрипт запустился и начал свою работу.
Поскольку цель отправляется только после завершения сессии — либо по таймауту в 3 минуты бездействия, либо при закрытии вкладки или браузера — для отладки рекомендую использовать режим дебага.
Откройте сайт с параметром отладки, например:
www.washsaite.ru?_ym_debug=2
Параллельно откройте инструменты разработчика (F12) → вкладка Console. Выполните какие-либо действия на сайте (пролистывания, переходы, задержитесь на странице), и наблюдайте, что выводится в консоль — скрипт покажет, какой сегмент был назначен.
Когда увидите сообщение о присвоении сегмента (например, Обнаружен и сохранен новый сегмент: quality_user_low. ), вручную отправьте срабатывание цели, выполнив в консоли команду:
sendFinalGoal();
После того как отправите команду в консоль, откройте вкладку «Events» в дебаггере Метрики — вы должны увидеть, что цель, соответствующая вашему сегменту, сработала. Это значит, что скрипт работает корректно и цели успешно передаются в Метрику.
Теперь, когда стало понятно, что скрипт работает корректно, можно переходить к следующему шагу — добавлением соответствующих целей в настройках рекламных кампаний. Это позволит алгоритму Яндекса получать больше конверсий и поддерживать обучаемость алгоритмов даже в условиях небольшого бюджета или высокой стоимости лида.
✌ Надеюсь этот скрипт поможет в оптимизации ваших рекламных кампаний. Если будут вопросы, замечания, предложения — пишите, всегда открыт для всех.
Ну а если вам нужна настройка рекламных кампаний, аудит или консультация, можете написать мне в телеграм 😊
Ограничение на количество целей в сутки с одного пользователя. Позволяет избежать повторных засчитываний целей от одного и того же пользователя. По умолчанию — не больше одной цели в день.
Порог бездействия для завершения сессии (в миллисекундах). Если пользователь не проявлял активности более 3 минут (180 000 мс), сессия считается завершённой — скрипт оценивает поведение и отправляет цель.
Минимальная продолжительность сессии, чтобы засчитать цель. Если пользователь пробыл на сайте меньше 10 секунд — поведение считается недостаточным для сегментации, и цель не отправляется.
Длительность паузы между скроллами (в миллисекундах). Используется для оценки \"вдумчивого\" чтения. Если пользователь останавливается во время скролла хотя бы на 3 секунды — засчитывается пауза.
Интервал проверки сегментации (в миллисекундах). Скрипт каждые 5 секунд анализирует активность пользователя, чтобы определить, достиг ли он нужного уровня вовлечённости.
Условия (правила) для распределения пользователя в тот или иной сегмент описаны выше.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Создаем цель в Яндекс Метрике"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Теперь, когда вы отредактировали скрипт, нужно создать соответствующие цели в интерфейсе Яндекс Метрики.
Ниже записал видео как пример создания цели quality_user_low
"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"06bababd-9d3e-54f8-8d4e-13def5d9a63c","width":2848,"height":1336,"size":1093919,"type":"gif","color":"1f2220","hash":"","external_service":[],"duration":28.45,"isVideo":false,"has_audio":false}}}]}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Установка скрипта с помощью Яндекс Тег Менеджера"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Если у вас нет доступа к HTML-коду сайта, вы можете установить скрипт через Яндекс Тег Менеджер (ЯТМ). Это удобно, быстро и не требует участия разработчиков.
Чтобы начать работу с ЯТМ, нужно сначала убедиться, что:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Тег Менеджер активирован — это можно сделать в настройках счётчика Яндекс Метрики. 👉 Важно: активировать Тег Менеджер может только владелец счётчика.","У вас есть доступ к контейнеру — для полноценной работы (просмотр, редактирование и добавление скриптов) необходим доступ с правами:","«Просмотр контейнера»","«Редактирование контейнера»","«Создание контейнера»"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Внутри интерфейса ЯТМ перейдите в раздел «Теги» и нажмите на кнопку «Добавить тег», откроется окно создания тега со следующим содержимым:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Название — придумайте название тегу, оно может быть произвольным, например «Качественный пользователь»","Шаблон тега — в выпадающем списке выберите «Пользовательский HTML» и вставьте подготовленный скрипт внутрь появившегося окна","Триггеры — пока оставьте пустым "],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Перейдите в раздел «Триггеры» и нажмите на кнопку «Добавить триггер», откроется окно создания тега со следующим содержимым:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Название — придумайте название тегу, оно может быть произвольным, например «Качественный пользователь»","Тип триггера — в выпадающем списке выберите «Просмотр страницы»","Условия активации триггера — все события"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
После создания триггера вернитесь в раздел «Теги», откройте ранее созданный тег и выберите нужный триггер в соответствующем поле. В конечном счете у вас должно быть примерно вот так:
Теперь, когда вы опубликовали тег в интерфейсе ЯТМ осталось проверить его работоспособность. Для этого перейдите на сайт, откройте режим разработчика и перейдите во вкладку «Console». Вы должны увидеть, что скрипт начал исполняться, соответствующие сообщения вы должны увидеть здесь.
"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"b7d69c0f-4d4b-591a-8d51-45d68398def1","width":3420,"height":2014,"size":1006820,"type":"png","color":"e4e0da","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACQQI/8QAJBAAAgEDAgYDAAAAAAAAAAAAAQIDBAURAAYIEhQWIWETImL/xAAWAQEBAQAAAAAAAAAAAAAAAAAFBAb/xAAgEQABAwMFAQAAAAAAAAAAAAABAAIDBBFxBSExMmGx/9oADAMBAAIRAxEAPwCxuCt7Nc6Wsu2y6ea2xFusMMpccuD9h4JznHgA6z8cmoNdZ4uPiSjhpzE6SVwBHDdyT5twsjXCgsUFfUwpDBGsczqEYgFQGIwfenm3IBujTZJRu/c+5e3oF7huePmIx1cn696M1AAQDKSoCTOcIqtxMz7gubMxLGsmJJPknnOko+gwoJO5yv/Z"}}}]}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"[SegTracker] Скрипт инициализирован.\n[SegTracker] Первая страница в сессии.\n[SegTracker] Проверка сегмента: Время на сайте (мс): 100, Просмотры страниц: 1, Прокрутка (%): 0.00 (макс. пикселей: 0), Паузы скролла: 0\n[SegTracker] Текущий сегмент: quality_user_low\n[SegTracker] Обнаружен и сохранен новый сегмент: quality_user_low. Предыдущий сегмент: не определен\n[SegTracker] Проверка сегмента: Время на сайте (мс): 5002, Просмотры страниц: 1, Прокрутка (%): 0.00 (макс. пикселей: 0), Паузы скролла: 0","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Эти сообщения, которые выводятся в консоли говорят о том, что скрипт запустился и начал свою работу.
Поскольку цель отправляется только после завершения сессии — либо по таймауту в 3 минуты бездействия, либо при закрытии вкладки или браузера — для отладки рекомендую использовать режим дебага.
Параллельно откройте инструменты разработчика (F12) → вкладка Console. Выполните какие-либо действия на сайте (пролистывания, переходы, задержитесь на странице), и наблюдайте, что выводится в консоль — скрипт покажет, какой сегмент был назначен.
Когда увидите сообщение о присвоении сегмента (например, Обнаружен и сохранен новый сегмент: quality_user_low. ), вручную отправьте срабатывание цели, выполнив в консоли команду:
После того как отправите команду в консоль, откройте вкладку «Events» в дебаггере Метрики — вы должны увидеть, что цель, соответствующая вашему сегменту, сработала. Это значит, что скрипт работает корректно и цели успешно передаются в Метрику.
Теперь, когда стало понятно, что скрипт работает корректно, можно переходить к следующему шагу — добавлением соответствующих целей в настройках рекламных кампаний. Это позволит алгоритму Яндекса получать больше конверсий и поддерживать обучаемость алгоритмов даже в условиях небольшого бюджета или высокой стоимости лида.
Ну а если вам нужна настройка рекламных кампаний, аудит или консультация, можете написать мне в телеграм 😊
"}},{"type":"link","cover":false,"hidden":false,"anchor":"","data":{"link":{"type":"link","data":{"url":"https://api.vc.ru/v2.8/redirect?to=http%3A%2F%2Ft.me%2FmaxOvo&postId=2095040","title":"Maxim Voznyuk","description":"рџ“€Marketing","image":{"type":"image","data":{"uuid":"0c5ec522-6456-5837-a7a9-efa6a12645d2","width":180,"height":180,"size":4016,"type":"png","color":"26a5e4","hash":"","external_service":[]}},"v":1,"hostname":"t.me"}}}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":4,"favorites":5,"reposts":0,"views":402,"hits":241,"reads":null,"online":0},"dateFavorite":0,"hitsCount":241,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":"Скрипт для сегментации пользователей, создание целей в Яндекс Метрике, оптимизация рекламных кампаний, повышение эффективности в Яндекс Директ","url":"https://vc.ru/marketing/2095040-kastomnaya-tsel-optimizatsiya-reklamnykh-kampanij","author":{"id":779649,"name":"Максим Вознюк","nickname":null,"description":"Интернет-маркетолог. Рассказываю о том, как автоматизировать процесс работы рекламных кампаний и не только 👋","uri":"","avatar":{"type":"image","data":{"uuid":"5b113363-0041-5c16-bd2f-23ffa5171ad0","width":855,"height":855,"size":409712,"type":"png","color":"993c06","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABwUI/8QAJhAAAQMDAwIHAAAAAAAAAAAAAQIDBAAFEQYSISIxExQjMlFhYv/EABYBAQEBAAAAAAAAAAAAAAAAAAYEBf/EACIRAAEDBAICAwAAAAAAAAAAAAEAAgMEBREhMVESgSJBYf/aAAwDAQACEQMRAD8AwFpiFbvLXNmbHQ46mBvj4QVuBf4APcn6PArIu1fOJoH07iAHAHeB+5SCxWmlNNUsrGBzi0kay4deO0cLkyN6spQDk8baQeQO8owGAawlXQXpToshrod8RPWnhXv+e9C718g5p469J9YdRl4579qtcoUNVxlKVEZJL6ySWxkncahgleImgE8BWywxl7iWjk/S/9k="}},"cover":{"cover":{"type":"image","data":{"uuid":"4963838f-7454-5b9a-b626-90d521d531a9","width":4896,"height":3264,"size":329702,"type":"jpg","color":"638eca","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAAKAAoDASEAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwUGCP/EACYQAAIBAwIEBwAAAAAAAAAAAAECAwAEBREhBgciQRIVFzFRYYH/xAAVAQEBAAAAAAAAAAAAAAAAAAAGBf/EABwRAAICAwEBAAAAAAAAAAAAAAEDAAIEISISof/aAAwDAQACEQMRAD8AJn+YuPsbUpl7nh2FgCQsEYeTbt0Lt+1HeufCK9PkEz6beIIu/wB+9Lr5ik87P2HqY7GdTPeelle7nZ5HZmcliWJJOvelup+aOMJ9GWqDU//Z"}},"cover_y":60},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4657386,"userId":779649,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4657386"},{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 23 июля 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":1033299,"userId":779649,"count":0,"shareImage":"https://api.vc.ru/achievements/share/1033299"}],"lastModificationDate":1764999766,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":199113,"name":"Маркетинг","description":"Рекламные кейсы из России и других стран, советы по продвижению, маркетинг и digital.","uri":"/marketing","avatar":{"type":"image","data":{"uuid":"d66009fe-9bf0-52da-bdbf-4c758eba39e7","width":2400,"height":2400,"size":841299,"type":"jpg","color":"f97373","hash":"0c1cf06cf0d010","external_service":[]}},"cover":{"type":"image","data":{"uuid":"5488a646-f32d-57a6-a31f-d290afc4388a","width":960,"height":280,"size":177,"type":"png","color":"fc7c7c","hash":"","external_service":[]}},"lastModificationDate":1661337194,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"marketing","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[{"id":1,"count":3}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null,"keywords":[],"media":{"type":"image","data":{"uuid":"f6ac00f6-23c9-5b61-b417-815edbf28bcf","width":1237,"height":617,"size":331007,"type":"jpg","color":"7f5343","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACQcK/8QAKxAAAQQAAwQLAQAAAAAAAAAAAwECBAUABgkIERRhBxITFSEjMTRBQlOR/8QAFwEBAQEBAAAAAAAAAAAAAAAABwgEBv/EACkRAAIBAgQFAwUAAAAAAAAAAAECEQMSAAQhQQUGEyIxMlFhBxQVQlL/2gAMAwEAAhEDEQA/AKNsN5Wr48XMx6SDV52t6qsu5mWsspOC2bd2tbAlHqqw8hokjRGW84AIg5CFc0bZLSOaitVEl6ry1T4hxOiKzTlmcKxBJIUGCxAEaLJiTJg7giu6ufq5bIZipSpt10osygixXaO1ASbgZAmQdzPua0vVA1cQSpIZWz7XZakhkGFIy6un/tD3K0BxkcwtKtwG5UNstURHQe8hKo53YcUxVaVFwqL9NeTwqgZV3hQLvvUW6B6rbe2fMbTGBR+eeby7S9huaU/H5s2GTKyHg2+JGhiRhDdMwpE6RHIhHonXF4I9271b8b+a/wBXGfh6JbT7F8j9R/Q+MLvECehVEmNNJ08ttjVDEIThIvmP9uH7O/NvPHZIBYug9K7D2GDaoSKjgExe2/ycf//Z"}},"customCover":null,"robotsTag":null,"categories":[4],"isAnonymized":true}};