Настройка цілей та конверсій у Яндекс.Метриці
Метрика підтримує два типи цілей: автоматичні (відвідування з глибиною, дзвінки, форми) та ручні (JavaScript-события). Для реклами в Директі цілі використовуються у стратегіях автоматичного управління ставками — правильна настройка напрямку впливає на вартість ліда.
Лічильник та ініціалізація
<!-- Лічильник Метрики — перед </head> -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for(var j=0;j<document.scripts.length;j++){if(document.scripts[j].src===r){return;}}
k=e.createElement(t);a=e.getElementsByTagName(t)[0];k.async=1;k.src=r;a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(COUNTER_ID, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true, // запис сесій
ecommerce: "dataLayer", // назва масиву для e-commerce даних
});
</script>
<noscript>
<div><img src="https://mc.yandex.ru/watch/COUNTER_ID" style="position:absolute; left:-9999px;" alt=""/></div>
</noscript>
COUNTER_ID — числовий ID лічильника з налаштувань Метрики.
Типи цілей
JavaScript-подія (найбільш гнучкий тип)
// Проста ціль
ym(COUNTER_ID, 'reachGoal', 'GOAL_IDENTIFIER');
// Ціль з параметрами
ym(COUNTER_ID, 'reachGoal', 'form_submitted', {
form_type: 'contact',
page: window.location.pathname,
has_phone: true,
});
// Ціль з ціною (для розрахунку ROI в Директі)
ym(COUNTER_ID, 'reachGoal', 'purchase', {
order_id: 'ORDER-789',
revenue: 14500,
});
GOAL_IDENTIFIER повинен совпадати з ідентифікатором, який задано в налаштуваннях лічильника → «Цілі».
Настройка цілі в інтерфейсі Метрики
- Лічильник → «Цілі» → «Додати ціль»
- Тип: «JavaScript-подія»
- Ідентифікатор:
form_submitted(той же, що у коді) - Ціна (опціонально): фіксована або з параметрів события
Ціль за URL (для сторінок благодарності)
Тип: Посещення сторінок
URL містить: /thank-you
Не потребує JS — працює автоматично при заході на сторінку.
Конверсії для ключевих сценаріїв
// Відправка форми заявки
document.getElementById('lead-form').addEventListener('submit', function() {
ym(COUNTER_ID, 'reachGoal', 'lead_form_submit', {
form_location: this.dataset.location ?? 'unknown',
});
});
// Клік по номеру телефона
document.querySelectorAll('a[href^="tel:"]').forEach(link => {
link.addEventListener('click', () => {
ym(COUNTER_ID, 'reachGoal', 'phone_click', {
phone: link.href.replace('tel:', ''),
page: window.location.pathname,
});
});
});
// Клік по email
document.querySelectorAll('a[href^="mailto:"]').forEach(link => {
link.addEventListener('click', () => {
ym(COUNTER_ID, 'reachGoal', 'email_click');
});
});
// Відкриття чату
document.getElementById('chat-button').addEventListener('click', () => {
ym(COUNTER_ID, 'reachGoal', 'chat_opened');
});
// Прокрутка сторінки до блока з формою
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
ym(COUNTER_ID, 'reachGoal', 'form_visible');
observer.disconnect();
}
});
}, { threshold: 0.5 });
observer.observe(document.querySelector('#contact-section'));
Електронна комерція
Метрика підтримує e-commerce через dataLayer. Потрібно задати назву масиву в ініціалізації лічильника (ecommerce: "dataLayer").
// Перегляд списку товарів
dataLayer.push({
ecommerce: {
currencyCode: 'RUB',
impressions: [
{
id: 'SKU-001',
name: 'Professional Plan',
category: 'Subscription',
price: 2990,
position: 1,
},
],
},
});
// Додавання у кошик
dataLayer.push({
ecommerce: {
add: {
products: [{
id: 'SKU-001',
name: 'Professional Plan',
category: 'Subscription',
price: 2990,
quantity: 1,
}],
},
},
});
// Покупка
dataLayer.push({
ecommerce: {
purchase: {
actionField: {
id: 'ORDER-789',
revenue: 14500,
tax: 500,
shipping: 300,
coupon: 'PROMO10',
},
products: [
{
id: 'SKU-001',
name: 'Professional Plan',
category: 'Subscription',
price: 13700,
quantity: 1,
},
],
},
},
});
Параметри відвідувань та користувачів
Параметри дозволяють сегментувати аудиторію у звітах:
// Параметри відвідування (привязуються до конкретного відвідування)
ym(COUNTER_ID, 'params', {
visit_params: {
source_form: 'popup',
ab_variant: 'B',
user_type: 'new',
},
});
// Параметри користувача (зберігаються між відвідуваннями)
ym(COUNTER_ID, 'userParams', {
UserID: 'usr_12345',
plan: 'pro',
registration_date: '2024-01-15',
company_size: 'smb',
});
// UserID для крос-девайс трекінгу
ym(COUNTER_ID, 'setUserID', 'usr_12345');
Лінковка з Яндекс.Директом
Для автоматичних стратегій Директа:
- Директ → «Редагування кампанії» → «Стратегія» → «Оплата за конверсії»
- Вибрати ціль з Метрики (лічильник повинен бути додано у кампанію)
- Встановити цільову вартість конверсії
Важливо: ціль повинна накопити мінімум 10 конверсій за останні 28 днів, щоб автостратегія працювала коректно.
Офлайн-конверсії через API
Якщо конверсія відбувається офлайн (дзвінок закритий у угоду, оплачений рахунок), її можна завантажити у Метрику:
# Завантаження офлайн-конверсій
curl -X POST \
'https://api-metrika.yandex.net/management/v1/counter/COUNTER_ID/offline_conversions/upload' \
-H 'Authorization: OAuth YOUR_TOKEN' \
-H 'Content-Type: text/csv' \
--data-binary $'UserId,Target,DateTime,Price,Currency\nClientId123,purchase,2024-01-15T14:30:00,25000,RUB'
Поля:
-
ClientId— з cookie_ym_uidабо черезym(id, 'getClientID', callback) -
Target— ідентифікатор цілі -
DateTime— ISO 8601 -
Price— ціна конверсії
Налагодження
// Перевірити ініціалізацію лічильника
window.ym // повинна бути функція
// Отримати ClientID
ym(COUNTER_ID, 'getClientID', function(clientID) {
console.log('Metrika ClientID:', clientID);
});
// Тестова ціль — повинна з'явитись у Метриці → Відладка
ym(COUNTER_ID, 'reachGoal', 'test_goal');
Розширення «Яндекс.Метрика Debugger» для Chrome відображає всі hits у панелі DevTools з деталями.
Затримка даних у звітах Метрики — до 2 годин. У розділі «Відладка» дані у реальному часі.
Строки
Встановлення лічильника, настройка 4–6 цілей у коді та інтерфейсі — 1 день. Підключення e-commerce та параметрів відвідувань — 4–6 годин. Настройка офлайн-конверсій та інтеграція з Директом — ще 1 день.







