UTM-мітки: правила іменування, які не ламають аналітику
Як складати UTM-мітки для Google Ads, Meta, TikTok, email і Telegram — єдиний стандарт utm_source / utm_medium / utm_campaign, шаблон таблиці, автоматична перевірка і нормалізація в звітах.

Найдешевша причина поганої аналітики — хаос в UTM-мітках. Instagram, instagram, ig, insta, facebook / paid, fb / cpc — і замість одного каналу у звіті шість. Атрибуція, ROAS і бюджети потім рахуються з цих рядків. Нижче — стандарт, який я впроваджую в проєктах, і як змусити його працювати.
П'ять параметрів
| Параметр | Що означає | Приклад |
|---|---|---|
utm_source | звідки трафік (майданчик) | google, facebook, instagram, tiktok, newsletter, telegram |
utm_medium | тип трафіку | cpc, paid_social, email, social, referral, affiliate |
utm_campaign | кампанія | 2026-10_autumn-sale_ua |
utm_content | варіант оголошення / креатив | video-15s_v2 |
utm_term | ключове слово або аудиторія | lookalike-buyers-3pct |
GA4 використовує source і medium для групування каналів за замовчуванням, тому значення utm_medium мають відповідати правилам груп — наприклад, cpc для платного пошуку, email для розсилок. Якщо написати utm_medium=paid-insta, трафік потрапить у групу «Unassigned».
Правила
- Лише малі літери. GA4 чутливий до регістру:
Facebookіfacebook— різні джерела. - Без пробілів і кирилиці. Дефіс між словами, підкреслення між смисловими блоками.
- Фіксований словник source і medium — нові значення додаються лише через таблицю.
- Шаблон назви кампанії:
рік-місяць_назва_геоабо інший, але один для всіх. - Не ставити UTM на внутрішні посилання — це перезапускає сесію з новим джерелом.
- Автомітки там, де вони є. Для Google Ads вмикайте автоматичне позначення (
gclid), UTM — лише як доповнення.
Словник (приклад)
| Канал | utm_source | utm_medium |
|---|---|---|
| Google Ads Search | cpc | |
| Meta Ads (Facebook) | paid_social | |
| Meta Ads (Instagram) | paid_social | |
| TikTok Ads | tiktok | paid_social |
| Email-розсилка | newsletter | |
| Telegram-канал | telegram | social |
| Блогер / інфлюенсер | blogger-name | influencer |
| Партнерська програма | partner-name | affiliate |
Meta дозволяє підставляти динамічні параметри ({{campaign.name}}, {{ad.name}}) в URL. Це зручно, але назви кампаній у кабінеті тоді мають підпорядковуватися тому самому шаблону.
Таблиця-генератор
Найпрактичніший інструмент — Google Таблиця, де маркетолог обирає source/medium зі списку, вводить назву кампанії, а формула збирає URL. Валідація даних не дасть ввести «Insta».
=A2&IF(ISNUMBER(SEARCH("?",A2)),"&","?")&"utm_source="&B2&"&utm_medium="&C2&"&utm_campaign="&LOWER(SUBSTITUTE(D2," ","-"))
Перевірка і нормалізація
Навіть зі стандартом помилки будуть. Тому в пайплайні є шар нормалізації:
SELECT
CASE
WHEN LOWER(source) IN ('fb', 'facebook', 'm.facebook.com', 'l.facebook.com') THEN 'facebook'
WHEN LOWER(source) IN ('ig', 'insta', 'instagram', 'l.instagram.com') THEN 'instagram'
ELSE LOWER(source)
END AS source_norm,
LOWER(medium) AS medium_norm,
COUNT(*) AS sessions
FROM sessions
GROUP BY 1, 2
ORDER BY sessions DESC;
А в дашборді — віджет «нові незнайомі значення source/medium за тиждень». Якщо там з'явилось щось нове, маркетолог дізнається одразу, а не на квартальному звіті.
Особливі випадки
- Telegram і месенджери часто не передають реферер — без UTM трафік стане «direct».
- Оплата на сторінці LiqPay / monobank з поверненням на сайт може підмінити джерело сесії; додайте платіжні домени до списку виключених рефералів у GA4.
- QR-коди офлайн: окремий
utm_medium=offlineіutm_sourceза місцем розміщення. - Email-сервіси часто дописують UTM автоматично — перевірте, щоб вони збігалися зі словником.
Як це пов'язано з атрибуцією
Якщо зберігати UTM разом із лідом у CRM (прихованими полями форми), можна рахувати замовлення й виручку за каналами без залежності від GA4 (атрибуція). Для зведеного звіту з витратами — реклама в одному дашборді.
Чекліст
- Словник source/medium затверджено
- Шаблон назви кампанії один для всіх
- Таблиця-генератор з валідацією
- Автомітки Google Ads увімкнено
- Платіжні домени в списку виключених рефералів
- UTM зберігаються в CRM з лідом
- Нормалізація в пайплайні та контроль нових значень
Покроково: як запровадити конвенцію в живому акаунті
Найскладніше — запровадити правила в акаунті з роками хаотичних міток. Порядок, що працює:
- Аудит наявного. Вивантажте комбінації source/medium/campaign за 12 місяців із сесіями та виручкою. Зазвичай там десятки написань того самого (
facebook,Facebook,fb,m.facebook.com). - Запишіть дозволені значення
utm_sourceіutm_mediumзакритим списком. Назви кампаній — за шаблоном, а не за списком. - Зіставте старі значення з новими в довідковій таблиці, щоб історичні звіти стали порівнянними.
- Переведіть нові кампанії на таблицю-конструктор з певної дати і запишіть цю дату.
- Перевіряйте щотижня і виправляйте «зайві» значення в джерелі, а не лише у звітах.
Шаблон назви кампанії з прикладами
Шаблон, який я використовую для utm_campaign — малими літерами, частини через підкреслення, всередині частин — дефіси:
{країна}_{мета}_{аудиторія}_{пропозиція-або-тема}_{ррррмм}
| Ситуація | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Meta, залучення, осінній розпродаж | meta | paid_social | ua_conv_lookalike_autumn-sale_202610 |
| Google Пошук, бренд | cpc | ua_conv_brand_core_202610 | |
| Розсилка, новинки | newsletter | ua_retention_subscribers_new-arrivals_20261015 | |
| Пост у Telegram-каналі | telegram | social | ua_traffic_channel_guide-launch_202610 |
| Блогер | influencer | ua_awareness_creator-name_capsule_202610 |
Параметр utm_content несе креатив чи позицію посилання (video-15s-a, header-link), а utm_term лишається для ключових слів чи деталей аудиторії. Тримайте частини у фіксованому порядку, щоб назву кампанії можна було розбити на колонки в SQL. Латиниця в значеннях обов'язкова: кирилиця в URL кодується і перетворюється на нечитабельні рядки у звітах.
SQL: нормалізація і розбиття у сховищі
Навіть з правилами деякі значення проскакують. Нормалізуйте в чистому шарі:
SELECT
LOWER(TRIM(utm_source)) AS source_raw,
COALESCE(m.source_std, LOWER(TRIM(utm_source))) AS source,
COALESCE(m.medium_std, LOWER(TRIM(utm_medium))) AS medium,
LOWER(utm_campaign) AS campaign,
SPLIT(LOWER(utm_campaign), '_')[SAFE_OFFSET(0)] AS camp_country,
SPLIT(LOWER(utm_campaign), '_')[SAFE_OFFSET(1)] AS camp_objective,
SPLIT(LOWER(utm_campaign), '_')[SAFE_OFFSET(4)] AS camp_month
FROM clean.sessions s
LEFT JOIN ref.utm_source_map m
ON m.source_raw = LOWER(TRIM(s.utm_source));
Щотижнева перевірка виводить усі source чи medium, яких немає в дозволеному списку, з кількістю сесій — щоб той, хто запустив кампанію, виправив посилання.
Типові помилки
| Помилка | Наслідок | Як виправити |
|---|---|---|
| UTM на внутрішніх посиланнях | сесія перезапускається, справжнє джерело перезаписується | ніколи не розмічайте посилання всередині сайту |
| Різний регістр | Meta і meta — два рядки | усе малими літерами |
| Пробіли в значеннях | кодуються як %20 чи +, значення розпадаються | лише підкреслення й дефіси |
| medium поза правилами каналів GA4 | трафік потрапляє в «Unassigned» | medium, що відповідають стандартним групам каналів GA4, або власні групи |
| Перекриття автотегування | витрати й конверсії Google Ads не з'єднуються | лишайте автотегування gclid; UTM — лише якщо потрібні деінде |
| Назви кампаній без дат | не відрізнити цьогорічний розпродаж від минулорічного | додавайте ррррмм |
Офлайн, QR-коди і месенджери
UTM працюють усюди, де можна відкрити посилання, тож корисні не лише для реклами:
| Розміщення | Рекомендована розмітка | Примітка |
|---|---|---|
| QR-код на упаковці | source=packaging, medium=qr, campaign=insert-card_202610 | використовуйте короткий редирект, щоб згодом змінити ціль |
| Офлайн-подія чи листівка | source=назва-події, medium=offline, campaign=… | окреме посилання на кожне розміщення, якщо хочете їх порівнювати |
| Повідомлення в Telegram/Viber | source=telegram (тощо), medium=messenger чи social | вбудовані браузери месенджерів часто губять referrer, тож без UTM це стане «direct» |
| Партнер чи афіліат | source=назва-партнера, medium=affiliate чи referral | узгодьте мітки в договорі з партнером |
| Підпис в email | source=email-signature, medium=email | дрібниця, але часто напрочуд стабільна |
Правило лишається тим самим: значення із закритого списку, сталий шаблон і запис посилання в таблиці-конструкторі — щоб той, хто читатиме звіт пізніше, знав, що таке «insert-card_202610».
Для Telegram-каналів це особливо важливо: багато українських бізнесів отримують звідти помітну частку трафіку, а без розмітки вона розчиняється в «прямих» заходах і не потрапляє в жоден звіт за каналами.
Хто відповідає за конвенцію
Призначте одного власника — зазвичай керівника маркетингу, — який погоджує нові значення source чи medium і оновлює таблицю-конструктор. Надавайте таблицю агенціям і фрилансерам у перший же день, а «посилання зібрані в конструкторі» робіть частиною кожного брифу на кампанію. Конвенції не працюють, коли живуть лише в чиїйсь голові.
Часті запитання
Чи потрібні UTM для Google Ads?
З автоматичним позначенням (gclid) GA4 сам визначає кампанії Google Ads. UTM можна додавати для CRM і сторонніх систем, але вони не мають суперечити автомітці.
Чому трафік з UTM потрапляє в Unassigned?
Найчастіше через нестандартний utm_medium. Групи каналів GA4 спираються на певні значення medium — використовуйте їх.
Чи можна виправити старі дані з кривими UTM?
У звітах GA4 — ні, але в BigQuery та дашборді — так, через таблицю нормалізації.
Чи впливають UTM на SEO?
Ні, якщо не ставити їх на внутрішні посилання і канонічні URL сторінок вказані коректно.

