ОП.03 · ЗАНЯТИЕ 22 ак. часа

UTM-
метки

Тема
определяем источник перехода и заявки
Формат
практическое занятие: разбор, затем работа руками
Опора
занятие 1: событие, запрос /g/collect, поле ep.source
Результат
таблица UTM-ссылок и тестовые заявки с источником

нажмите любую клавишу, чтобы начать ▸

01/59

ОП.03 · занятие 2 · 2 академических часа

UTM-
метки

определяем источник перехода и заявкипродолжение занятия 1
01

Отправная точка · незакрытый вопрос занятия 1

Поле ep.source осталось незаполненным — с ним и работаем

На занятии 1 мы вскрыли учебный стенд в панели сетевых запросов и нашли событие generate_lead. Все его поля были на месте, кроме одного: ep.source приходил то со значением, то со строкой (not set). Разница была не в событии, а в ссылке, по которой человек пришёл на страницу.

Событие generate_lead с меткой utm_source и без неё
кадр с занятия 1: слева переход по размеченной ссылке, справа — по обычной
Сохранённая заявка, у которой все поля источника имеют значение (not set)
чем это оборачивается в заявке: источник неизвестен

Начнём не с определений: сначала семь минут за клавиатурой, чтобы увидеть результат, и только потом разберём, из чего он складывается.

01

За клавиатуру · 7 минут · до всякой теории

Практика предшествует разбору: сначала результат, затем механизм

Тему проще понять, когда уже видел результат своими глазами. Поэтому начнём не с определений, а с семи минут работы руками: откроем учебный стенд, допишем к его адресу три пары и посмотрим, что от этого изменится в заявке и в запросе.

  1. Отправить форму как есть и посмотреть на сохранённую заявку.
  2. Дописать в адрес три пары и нажать Enter.
  3. Пролистать до формы и сравнить строку под ней с тем, что было.
  4. Отправить форму ещё раз — и сравнить две заявки.
  5. Открыть Network → Payload и найти там те же три значения.

Адрес стенда выдаётся на занятии. Данные в форму — только тестовые: условное имя, учебный адрес почты, пометка «проверка». Те же шаги с кадром на каждый — в файле PRACTICE.md в папке занятия.

ПР

Шаг 1 из 5 · как есть

Открыть стенд по обычной ссылке и отправить форму

Учебный стенд: страница курса с кнопкой «Оставить заявку»
1. обычная страница курса, никаких меток в адресе
Сохранённая заявка: три поля источника со значением (not set)
2. заявка сохранена — и три поля источника пусты

Имя и контакт на месте, заявка полноценная. А вот откуда пришёл человек — неизвестно: во всех трёх полях источника стоит (not set). Ровно это мы и видели на занятии 1, только там смотрели на поле ep.source в запросе, а здесь — на строку таблицы.

ПР

Шаг 2 из 5 · дописать в адрес

Добавить к адресу три пары и нажать Enter

Щёлкнуть по адресной строке, поставить курсор в самый конец адреса и дописать то, что ниже. Пробелов внутри быть не должно — набирайте одной строкой.

адрес_стенда?utm_source=vk&utm_medium=social&utm_campaign=sept_open_2026

после ввода — Enter, страница перезагрузится

Адресная строка браузера с тремя дописанными парами
так адресная строка выглядит после перезагрузки

Обратите внимание: страница не изменилась. Тот же заголовок, та же кнопка, та же форма. Довесок в адресе на содержимое страницы не влияет.

ПР

Шаг 3 из 5 · сравнить строку под формой

Форма не изменилась — изменились значения скрытых полей

до того, как дописали Форма стенда и строка под ней: три значения (not set)
Три поля со значением (not set). Форму никто не трогал — значения появились сами при загрузке страницы.
после того, как дописали Та же форма, строка под ней: vk, social, sept_open_2026
Те же три поля, но со значениями из адреса. Ни одно из полей формы посетитель не заполнял.

Строка под формой — учебная: на настоящем сайте её нет. Она показывает, что лежит в полях, которых посетитель не видит.

ПР

Шаг 4 из 5 · отправить ещё раз

Две заявки с одной и той же формы

первая отправка · без довеска Заявка без источника: три значения (not set)
Источник неизвестен. Через месяц по такой строке нельзя сказать, откуда пришёл человек.
вторая отправка · с довеском Заявка с источником: vk, social, sept_open_2026
Источник записан. Заявку можно отнести к каналу и посчитать в отчёте по кампании.

Разница между этими двумя строками — единственное, чего мы добились дописыванием трёх пар в адрес. Ни форма, ни страница, ни код сайта при этом не менялись.

ПР

Шаг 5 из 5 · и что дальше

Те же три значения — в запросе события

Вкладка Payload: поля ep.source, ep.medium, ep.campaign
Network → фильтр collect → строка generate_lead → Payload
ep.source = vkто самое поле, которое на занятии 1 приходило пустым
ep.medium = socialпоявилось оттуда же — из адреса
ep.campaign = sept_open_2026и третье значение доехало целиком
что получилосьодна и та же надпись дошла до двух разных мест: до строки заявки и до поля события

Результат получен — дальше разбираем, из чего он складывается. По порядку: из чего состоит ссылка, почему сайт не спотыкается о незнакомый довесок, что означают имена utm_source, utm_medium, utm_campaign и по каким правилам подбирают их значения, чтобы отчёт не рассыпался на четыре строки вместо одной.

ПР

Вопрос 1

Почему браузер вообще
не знает, откуда пришёл человек?

Источник мы только что вписали руками. А взять его готовым было нельзя?

02

Ответ

Потому что источник перехода — не свойство браузера, а надпись, которую делает человек

Браузер сообщает о себе многое сам: язык, разрешение экрана, версию. Эти данные у него есть, потому что они описывают его самого. А «человек пришёл из рассылки приёмной комиссии» — не свойство браузера, а факт о рекламной работе, который браузеру взять неоткуда.

Есть одна подсказка — заголовок Referer: адрес страницы, с которой перешли. Но он рассказывает мало и часто пропадает совсем. Переход из мобильного приложения, из мессенджера, из письма в почтовом клиенте или из документа не оставляет его вовсе — с точки зрения аналитики такой переход выглядит прямым заходом. Отсюда и раздутый канал direct, о котором шла речь в конце занятия 1.

Поэтому источник не вычисляют, а записывают заранее: тот, кто публикует ссылку, дописывает в неё пометку о том, где эта ссылка стоит. Пометка передаётся вместе с адресом и доходит до отчёта.

02

Вопрос 2

Из чего вообще
состоит ссылка?

Три пары мы в адрес уже дописали — теперь разберём, куда именно

03

Ответ · часть 1 · то, без чего ссылки не бывает

Три обязательные части: схема, узел, путь

https://схема kolledzh.ruузел /kursyпуть

Схема — по каким правилам общаться с сервером. Узел — имя машины, к которой обращаемся. Путь — что именно на этой машине запрашиваем. Этих трёх частей достаточно, чтобы страница открылась: адрес https://kolledzh.ru/kursy — законченный и рабочий.

Строение адреса описано не соглашением между сайтами, а стандартом — RFC 3986. Поэтому любой браузер, любой сервер и любая система аналитики разбирают адрес на одни и те же части одинаково.

03

Ответ · часть 2 · то, что дописывают

После вопросительного знака начинается строка запроса

https://схема kolledzh.ruузел /kursyпуть ?начало page=2пара 1 &разделитель sort=newпара 2

Строка запроса — это довесок к адресу: набор пар «имя=значение». Знак ? отмечает её начало и ставится один раз. Пары отделяются друг от друга знаком &. Внутри пары имя и значение разделяет =.

Страница откроется и без этого довеска. Строка запроса нужна, чтобы передать странице дополнительные сведения: какую показать страницу списка, в каком порядке, по какому запросу искать. Метка источника — такой же довесок, только читает её не сама страница, а код счётчика.

03

Ответ · часть 3 · четыре правила синтаксиса

Что считается правильно составленной строкой запроса

один «?»Вопросительный знак отделяет путь от строки запроса и встречается один раз. Всё после него — пары. Второй ? знаком-разделителем уже не считается: он становится обычным символом внутри значения.
«&» между парами?a=1&b=2 — две пары. ?a=1?b=2 — одна пара, у которой значение равно 1?b=2. Ошибка не видна глазом и не мешает странице открыться.
без пробеловПробел в адресе не допускается. Если он всё же нужен внутри значения, его записывают кодом: %20. Тем же способом кодируются кириллица и знаки препинания.
регистр значимЗначения сравниваются посимвольно: VK и vk — разные строки. Для системы аналитики это два разных источника, а не один, записанный по-разному.

Три из этих четырёх правил станут причинами конкретных ошибок в отчёте — разберём каждую отдельно.

03

Вопрос 3

А можно дописать в адрес
что угодно?

Сайт же не знает про наши пары

04

Ответ

Можно: незнакомые пары сервер не читает

Сервер разбирает строку запроса и берёт из неё только те имена, которые ему нужны. Пара с незнакомым именем не вызывает ошибки — её никто не запрашивает, и она остаётся лежать в адресе. Проверить это можно прямо сейчас: допишите к адресу любой открытой страницы ?proverka=1 и перезагрузите — страница откроется как обычно.

https://kolledzh.ru/kursyадрес страницы ?начало proverka=1сервер не читает

Именно на этом свойстве и держатся метки источника. Их не читает сервер сайта — их читает код счётчика, который работает в браузере и разбирает адрес самостоятельно.

Отсюда следствие для практики: разметить можно ссылку на любой сайт, даже если у вас нет к нему доступа, и ссылка останется рабочей. А вот попадёт ли метка в отчёт — зависит от того, установлен ли на сайте счётчик, который её прочитает.

04

Вопрос 4

Так что такое
UTM-метка?

Теперь у нас есть, из чего собрать определение

05

Ответ · определение

UTM-метка — это пара «имя=значение» в строке запроса, описывающая источник перехода

Что это. Обычная пара в строке запроса, у которой имя начинается с utm_, а значение задаёт человек, публикующий ссылку. Никакого особого статуса у неё в адресе нет: для браузера это такой же довесок, как page=2.

Как работает. Человек переходит по размеченной ссылке. Адрес вместе с меткой попадает в адресную строку, оттуда — в поле dl запроса события. Код счётчика читает адрес, вырезает значения меток и кладёт их в отдельные поля события. Дальше система аналитики собирает из этих полей строки отчёта по источникам.

Зачем нужна. Чтобы у каждой заявки был известен источник и каналы можно было сравнивать между собой: где переходов много, а заявок мало; какая рассылка сработала, а какая нет. Без метки такие переходы сливаются в direct и (not set), и сравнивать становится нечего.

05

Ответ · продолжение · откуда взялось название

Приставка utm_ досталась от системы Urchin

UTM расшифровывается как Urchin Tracking Module — «модуль отслеживания Urchin». Urchin — название системы веб-аналитики компании Urchin Software Corporation, появившейся в 1996 году. Формат меток придумали там, задолго до Google.

В апреле 2005 года Google купил Urchin, а в ноябре того же года запустил на его основе Google Analytics. Метки перешли в новую систему как есть — вместе с приставкой utm_ в именах. Размеченных ссылок к тому моменту было уже слишком много, чтобы менять формат: переименование сломало бы разметку на всех сайтах разом.

Сама система Urchin закрыта в 2012 году, а её приставка осталась в адресах и работает до сих пор. Метки читает не только Google Analytics: utm_* понимают Яндекс.Метрика, почтовые рассылки, рекламные кабинеты и системы управления заявками. Формат стал общим не по стандарту, а потому что его поддержали все.

Практический вывод: имена меток менять нельзя. utm_source — это имя, на которое настроены чужие системы, а не слово, которое можно сократить по своему вкусу.

05

Ответ · продолжение · сколько их всего

Меток пять: три обязательные и две для рекламы

utm_term→Поисковый запрос, по которому показали платное объявление. В обычной работе не нужен
utm_content→Что именно нажали, когда в одном письме или объявлении две разные ссылки

Обязательная только одна — utm_source: без неё разметка не имеет смысла, потому что неизвестна площадка. На практике всегда ставят три первые: по одному utm_source нельзя отличить пост от письма, а сентябрьскую кампанию — от мартовской.

Мы работаем с тремя. Две последние разберём позже, когда дойдём до платных объявлений.

05

Вопрос 5

Что писать
в utm_source?

Разбираем по одной метке за раз

06

Ответ · метка 1 из 3

utm_source — название площадки, на которой стоит ссылка

Отвечает на вопрос «где человек увидел ссылку». Не «как» и не «зачем» — именно место. Значение придумывает тот, кто размечает; закрытого списка здесь нет, и в этом главная опасность: два человека назовут одну площадку по-разному, и в отчёте появятся две строки.

vkСообщество колледжа во «ВКонтакте». Не vk.com, не VK, не вконтакте — одно написание на всю группу
priem_emailРассылка приёмной комиссии. Название говорит, чья рассылка: писем на сайте может быть несколько
afisha_qrПечатная афиша с QR-кодом в холле. Офлайн-источник тоже размечается — иначе такие переходы попадут в direct
partner_siteСсылка на сайте партнёра. Если партнёров несколько, у каждого своё значение: partner_lyceum, partner_cdo
06

Вопрос 6

А utm_medium —
разве не то же самое?

Эти две метки путают чаще всего

07

Ответ · метка 2 из 3

utm_medium — не место, а способ доставки ссылки

Разница видна, когда одна и та же площадка работает двумя способами. Сообщество во «ВКонтакте» может дать переход из обычного поста и из платного объявления. Площадка одна, utm_source=vk в обоих случаях — а вести себя эти переходы будут по-разному, и считать их вместе нельзя: за одни заплатили, за другие нет.

Что произошлоutm_sourceutm_medium
Обычный пост в сообществе колледжаvksocial
Платное объявление в том же сообществеvkcpc
Письмо приёмной комиссииpriem_emailemail
Ссылка со страницы партнёраpartner_sitereferral

Проверка себя: utm_source отвечает «где увидели», utm_medium — «каким способом ссылка туда попала».

07

Ответ · продолжение · почему здесь нельзя выдумывать значения

Шесть значений utm_medium, по которым определяется канал

В отличие от utm_source, у utm_medium есть фактически сложившийся список. Google Analytics разбирает заявки по каналам по значению именно этой метки, и узнаёт он ограниченный набор строк:

organicпоиск cpcплатное объявление emailписьмо socialсоцсети referralчужой сайт affiliateпартнёрская программа

Написали rassylka вместо email — переходы попадут в строку Unassigned: канал не определён. Данные не потеряются, но готовый отчёт по каналам будет бесполезен, пока значение не исправят на следующей кампании. Задним числом уже отправленные события не меняются — на занятии 1 мы это разбирали.

Для офлайновых источников подходящего значения в списке нет. Мы будем писать qr для афиш — с пониманием, что такие переходы окажутся в Unassigned. Это осознанное решение справочника, а не ошибка: важнее отличать афишу от рассылки, чем попасть в готовую категорию.

07

Вопрос 7

Зачем нужна
третья метка?

Площадка известна, способ известен — что ещё

08

Ответ · метка 3 из 3

utm_campaign — повод, по которому ссылку опубликовали

Первые две метки описывают дорогу, третья — задачу. Колледж каждый год зовёт на день открытых дверей и каждый год пишет об этом во «ВКонтакте». Без третьей метки переходы сентября 2026 года и марта 2026 года окажутся в одной строке отчёта, и сравнить два набора будет нечем.

sept_open_2026День открытых дверей, сентябрь 2026. Понятно, что за мероприятие и когда — сравнивать можно и через год
dodСокращение, которое через полгода не расшифрует никто, включая того, кто его написал
testНазвание на время проверки, которое остаётся в ссылке навсегда и потом висит в отчёте отдельной строкой
Сентябрь 2026Пробел и кириллица. В адресе превратится в %D0%A1%D0%B5...%202026 — разберём это подробно через несколько экранов

Рабочее правило: в названии кампании должны быть повод и период. Тогда отчёт читается без пояснений.

08

Ответ · продолжение · линейка целиком

Размеченная ссылка целиком

https://kolledzh.ru/kursyадрес страницы ?начало utm_source=vkгде увидели &· utm_medium=socialкаким способом &· utm_campaign=sept_open_2026по какому поводу

Первая часть — адрес той страницы, куда человек должен попасть; она не меняется от канала к каналу. Меняется только довесок: для рассылки в тех же трёх парах будут другие значения, а страница останется той же.

Такую ссылку и публикуют. Человек, который по ней перейдёт, увидит обычную страницу курсов — довесок на её содержимое не влияет. Зато в адресной строке останется запись о том, откуда он пришёл, и её прочитает счётчик.

08

Вопрос 8

Как метка из адреса
попадает в отчёт?

Проследим весь путь, как на занятии 1 прослеживали событие

09

Ответ · пять шагов, ни одного лишнего

Маршрут одного значения: от ссылки до строки отчёта

Шаги 3 и 4 — разные и независимые. Первый ведёт значение в аналитику, второй — в таблицу заявок. Настроить можно один и забыть про другой: тогда в аналитике источник будет, а в заявке останется (not set). Это ровно та точка разрыва «форма → таблица», которую мы отмечали на занятии 1.

09

Ответ · шаг 3 крупным планом · код учебного стенда

Код, читающий метки, и поля запроса, которые он формирует

// читаем метки из адресной строки
const q = new URLSearchParams(location.search);
const c = {
  source:   q.get('utm_source')   || '(not set)',
  medium:   q.get('utm_medium')   || '(not set)',
  campaign: q.get('utm_campaign') || '(not set)'
};

gtag('event', 'generate_lead', {
  form_id: 'lead_main',
  source:   c.source,
  medium:   c.medium,
  campaign: c.campaign
});

stend/analytics.js + stend/form.js

→
en=generate_lead
ep.form_id=lead_main
ep.source=vk
ep.medium=social
ep.campaign=sept_open_2026

вкладка Payload

Вся «магия разметки» — это URLSearchParams и три вызова get. Метода get возвращает значение по имени или null, если такой пары в адресе нет; тогда срабатывает || и подставляется строка (not set). Именно она и приходила в отчёт на прошлом занятии.

09

Вопрос 9

Почему метки надо писать
по одному правилу?

Разберём на числах, что бывает, когда правила нет

10

Ответ · свод разметки · одна кампания, четыре человека

Четверо разметили один день открытых дверей — каждый по-своему

что написали в ссылках

Аняutm_source=vk
utm_medium=social
utm_campaign=sept_open_2026
Борисutm_source=VK
utm_medium=Social
utm_campaign=sept_open_2026
Вераutm_source=vk.com
utm_medium=post
utm_campaign=sept-open-2026
Глебutm_source=vk
utm_medium=social
utm_campaign=Сентябрь ДОД
→

что получилось в отчёте по источникам

vk / social / sept_open_202612
VK / Social / sept_open_20269
vk.com / post / sept-open-202611
vk / social / %D0%A1%D0%B5%D0%BD…8

Переходов было 40, площадка одна, повод один. В отчёте — четыре строки, и самая большая из них — 12. Руководитель, который посмотрит на такой отчёт, увидит четыре слабых источника вместо одного сильного.

10

Ответ · тот же свод после единого справочника

Те же сорок переходов, записанные одинаково

что написали в ссылках

Аняutm_source=vk
utm_medium=social
utm_campaign=sept_open_2026
Борисutm_source=vk
utm_medium=social
utm_campaign=sept_open_2026
Вераutm_source=vk
utm_medium=social
utm_campaign=sept_open_2026
Глебutm_source=vk
utm_medium=social
utm_campaign=sept_open_2026
→

что получилось в отчёте по источникам

vk / social / sept_open_202640

Данные те же самые: ни одного лишнего перехода не появилось и ни один не потерялся. Изменилось только написание — и вместо четырёх строк по 8–12 получилась одна на 40. Справочник меток не улучшает результат кампании, он делает результат видимым.

Отсюда и требование методички: договориться о написании нужно до публикации ссылок. Задним числом уже отправленные события не переписываются.

10

Вопрос 10

Почему «VK» и «vk» —
это два источника?

Человек-то видит одно и то же слово

11

Ответ · ошибка 1 · регистр

Потому что значения сравниваются посимвольно, а не по смыслу

Собирая отчёт, система группирует события по значению поля. Группировка — это сравнение строк: код проверяет, совпадает ли первый символ с первым, второй со вторым. Строки VK и vk различаются в обоих символах, поэтому попадают в разные группы. Никакого «понимания», что это одна и та же социальная сеть, здесь нет и не предполагается.

utm_source=vkстрока 1 отчёта · 12 utm_source=VKстрока 2 отчёта · 9 utm_source=Vkстрока 3 отчёта · 3

Одно сообщество, один повод, три строки. Заметить это в отчёте трудно: строки стоят не рядом, а в разных местах списка, отсортированного по числу переходов.

Лечится это не проверкой отчёта, а правилом на входе: значения меток пишем только строчными латинскими буквами. Регистр — единственная из ошибок разметки, которую можно исключить полностью одним соглашением.

11

Ответ · ошибка 2 · пробел

Пробел в адресе недопустим и заменяется процентным кодом

По стандарту RFC 3986 в адресе допустим ограниченный набор символов, и пробела среди них нет. Когда пробел всё-таки попадает в значение, браузер заменяет его на процентный код — знак процента и шестнадцатеричный номер символа. Пробел получает номер 20, отсюда %20.

написалив ссылке utm_campaign=sept openс пробелом →· utm_campaign=sept%20openв адресной строке

Встречается и второй вариант записи — sept+open: знак «плюс» вместо пробела достался от формата, которым браузер отправляет данные форм. Обе записи попадаются в жизни, и это две разные строки: значения sept%20open и sept+open дадут в отчёте две группы.

Поэтому пробел в значениях не ставят вовсе. Слова разделяют символом подчёркивания: sept_open_2026. Подчёркивание допустимо в адресе как есть, ни во что не превращается и читается человеком без усилий.

11

Ответ · ошибка 3 · кириллица · настоящий кадр со стенда

Ссылка, размеченная кириллицей и пробелами

по справочнику Адресная строка: utm_source=vk, utm_medium=social, utm_campaign=sept_open_2026
Адрес читается целиком. Значение метки видно глазом, ссылку можно проверить, не открывая инструменты разработчика.
кириллица и пробелы Адресная строка: utm_source=VK%20Реклама, utm_campaign=Сентябрь%20День%20открытых%20дверей
Пробелы уже стали %20. Кириллицу браузер показывает по-русски, но в запрос она уйдёт кодами — по три символа %D0%… на каждую букву.

Оба адреса рабочие: обе страницы откроются. Разница проявится в отчёте — посмотрим, чем именно это оборачивается.

11

Ответ · та же испорченная ссылка · вкладка Payload

Кириллица в поле dl занимает восемь строк вместо одной

Вкладка Payload испорченной ссылки: длинное закодированное поле dl и значения ep.source, ep.medium, ep.campaign
настоящий кадр · Payload · та же форма, размеченная по-русски
dlАдрес разбух: каждая русская буква записана тремя символами — %D0%B5, %D0%BA и так далее. Прочитать значение метки в этом виде нельзя
ep.source = VK РекламаВкладка Payload показывает значения раскодированными, поэтому здесь видно исходную строку — с прописными буквами и пробелом внутри
ep.medium = SocialНе social. В отчёте по каналам это значение не совпадёт с ожидаемым и уйдёт в Unassigned
ep.campaign = Сентябрь День открытых дверейСтрока с двумя пробелами и кириллицей. Совпасть с такой же строкой из чужой ссылки она может только при точном посимвольном повторе

Событие ушло, данные не потерялись — и в этом ловушка. Ошибка разметки ничего не ломает заметным образом: она проявится через месяц, когда отчёт по каналам придётся объяснять.

11

Вопрос 11

Какие ещё бывают
ошибки разметки?

Соберём их в один список — по симптому в отчёте

12

Ответ · шесть ошибок · слева симптом, справа причина в ссылке

Что видно в отчёте и что искать в ссылке

vk, VK и Vk — три строкиРегистр не приведён к строчным. Смотреть на значения utm_source в опубликованных ссылках
sept%20open и sept+openВ значении был пробел, а разные системы записали его по-разному. Заменить пробел на _
%D0%A1%D0%B5%D0%BD…Кириллица в значении. Перевести название на латиницу: sept_open_2026
источник у всех заявок — (not set)Метку не поставили вовсе. Проверить саму опубликованную ссылку, а не отчёт
метки нет в отчёте, хотя в ссылке она естьОпечатка в имени: utm_sourse, utm_soure, utm_Source. Счётчик ищет точное имя и не находит его
utm_campaign склеился с utm_mediumВместо & написан второй ?: …utm_medium=social?utm_campaign=sept. Всё после второго ? стало частью значения utm_medium

Первые три — ошибки написания значения, вторые три — ошибки сборки самой ссылки. Первые видно в отчёте, вторые — только в ссылке.

12

Ответ · продолжение · седьмая ошибка, которую не видно нигде

Метка после знака # в разбор не попадает

У адреса есть ещё одна часть, о которой мы не говорили, — фрагмент: всё, что стоит после знака #. Он придуман для перехода к разделу внутри страницы и, в отличие от строки запроса, не отправляется на сервер вовсе: браузер обрабатывает его сам.

https://kolledzh.ru/kursyадрес #фрагмент utm_source=vkсюда никто не смотрит

Код счётчика читает метки из строки запроса — это свойство location.search, то есть часть адреса от ? до #. Всё, что после решётки, лежит в другом свойстве и в разбор не попадает.

Ошибка редкая, но неприятная: ссылка выглядит размеченной, открывается нормально, а источник у всех переходов остаётся (not set). Появляется она обычно при копировании ссылки из адресной строки страницы, у которой уже был якорь: метку дописывают в конец, за решётку, не заметив её.

Правило простое: метки всегда идут после ? и до #. Если в адресе есть якорь, довесок вставляют перед ним.

12

Вопрос 12

Как договориться,
чтобы все писали одинаково?

Памяти на это не хватает — нужен документ

13

Ответ · справочник меток · часть 1 · правила написания

Шесть правил, которые закрывают шесть ошибок

правило 1только строчныеНикаких прописных букв в значениях. Закрывает разбиение vk / VK / Vk на три строки
правило 2только латиницаРусские названия переводим: «сентябрь» → sept. Закрывает превращение значения в %D0%…
правило 3_ вместо пробелаСлова разделяем подчёркиванием, не пробелом и не дефисом. Один разделитель на весь справочник
правило 4medium — из спискаorganic · cpc · email · social · referral · affiliate, плюс согласованный qr. Своих значений не выдумываем
правило 5в campaign — повод и периодsept_open_2026, а не dod и не test. Через год название должно читаться так же
правило 6ссылка собирается из справочникаНе по памяти и не копированием чужой ссылки. Значения берём из таблицы, новую строку в неё вносим до публикации

Правила 1–3 относятся к тому, как записаны символы, правила 4–5 — к тому, какие слова выбраны, правило 6 — к порядку работы. Ни одно из них не следует из технического ограничения: адрес с прописной буквой и кириллицей вполне рабочий. Это соглашение, и держится оно только на том, что его соблюдают все.

13

Ответ · справочник меток · часть 2 · таблица каналов

Справочник группы: четыре канала одной кампании

Каналutm_sourceutm_mediumutm_campaign
Пост в сообществе колледжаvksocialsept_open_2026
Рассылка приёмной комиссииpriem_emailemailsept_open_2026
QR-код на печатной афише в холлеafisha_qrqrsept_open_2026
Ссылка со страницы партнёраpartner_sitereferralsept_open_2026
Столбец utm_campaign одинаков у всех четырёх строк — это одна кампания, доставленная четырьмя способами. Различают каналы первые два столбца.

Такую таблицу заводят один раз и дополняют по мере появления каналов. Она же служит списком, по которому потом проверяют отчёт: если в отчёте появилось значение, которого нет в таблице, — значит, кто-то разметил ссылку мимо справочника.

Эту таблицу вы заполните на практике под свои каналы и сдадите как результат занятия.

13

Вопрос 13

Как проверить ссылку
до того, как её опубликовали?

После публикации исправлять поздно

14

Ответ · две проверки, обе обязательные

Прочитать адрес и убедиться, что счётчик метку прочитал

Адресная строка браузера с тремя метками
проверка первая · адресная строка после перехода по размеченной ссылке
в адресе 1Метки на месте и не пропали при переходе: сайт мог перенаправить посетителя на другой адрес, потеряв довесок
в адресе 2Разделители правильные: один ? в начале довеска, дальше только &. Второй ? — уже ошибка
в адресе 3Нет знаков %20 и последовательностей %D0%…: значит, в значении не осталось пробела или кириллицы
в запросеАдресная строка показывает только то, что метка доехала до браузера. Прочитал ли её код счётчика — видно в Payload: F12 → Network → фильтр collect → строка en=generate_lead

Проверять нужно оба места. Метка в адресе есть, а ep.source пуст — счётчик её не читает: либо опечатка в имени, либо метка стоит после решётки.

14

Ответ · продолжение · границы этой проверки

Три случая, которые проверка на своём компьютере не поймает

сокращатель ссылокДлинную ссылку сокращают, чтобы поместить в пост. Сам сокращатель метки сохраняет, но проверять надо короткий адрес: перенаправление могло быть настроено на страницу без довеска
чужая площадка переписывает адресНекоторые площадки дописывают в ссылку свои пары или обрезают чужие. Проверять нужно ту ссылку, которая уже опубликована, а не ту, что вы отдали на публикацию
переход вглубь сайтаЧеловек пришёл по размеченной ссылке на главную, а форму заполнил на третьей странице. Метки в адресе там уже нет — и если сайт их не сохранил, источник заявки потеряется

Первые два случая — про площадку, третий — про сам сайт, и он самый частый. Разберём его отдельно: это последний участок маршрута, где источник ещё можно потерять.

14

Вопрос 14

Метка есть в адресе —
значит, она будет и в заявке?

Возвращаемся к точке разрыва с занятия 1

15

Ответ

Нет: форма отправляет только содержимое своих полей

Метка живёт в адресе страницы. Форма отправляет содержимое своих полей: имя, контакт, комментарий. Адрес страницы в форму не входит — это два разных набора данных, и сами по себе они не соединяются. Поэтому заявка уезжает в таблицу без источника, даже когда в аналитике он определён правильно.

Соединяют их скрытыми полями. Скрытое поле — это поле формы, которое не показывается посетителю и не заполняется им: значение туда кладёт код страницы. Для человека формы три поля, для сервера — шесть.

Заявка без источника при этом не бракованная: менеджер отработает её точно так же. Потеряна не заявка, а возможность оценить канал — через месяц по такой таблице нельзя будет сказать, что дало результат, а что нет.

<!-- в вёрстке формы -->
<input type="hidden" name="utm_source">
<input type="hidden" name="utm_medium">
<input type="hidden" name="utm_campaign">

stend/index.html

→
// при загрузке страницы
document.getElementById('utm_source')
        .value = c.source;
document.getElementById('utm_medium')
        .value = c.medium;
document.getElementById('utm_campaign')
        .value = c.campaign;

stend/form.js

15

Ответ · продолжение · последний участок, где источник теряется

Переход вглубь сайта: метка исчезает из адреса

Переход внутри сайта делается по обычной ссылке из меню — без довеска. На второй странице location.search уже пуст, и код, читающий метки оттуда, вернёт (not set). Заявка с внутренней страницы потеряет источник, хотя человек пришёл по размеченной ссылке.

Решение — запомнить значение при первом заходе. На стенде это одна строка: метки складываются в sessionStorage — хранилище браузера, которое живёт до закрытия вкладки. Если в адресе меток нет, значения берутся оттуда. Такой способ называют первым касанием: за источник заявки считается та ссылка, по которой человек попал на сайт.

Скрытые поля на посадочной странице: vk, social, sept_open_2026
1. посадочная страница: значения взяты из адреса
Скрытые поля на внутренней странице: те же три значения
2. внутренняя страница: меток в адресе нет, значения те же
15

Демонстрация · преподаватель · 7 минут

Проводим одно значение от ссылки до строки заявки

  1. Открыть стенд без метки → F12 → Network, фильтр collect. Отправить форму → в заявке три (not set).
  2. Открыть стенд по ссылке ?utm_source=vk&utm_medium=social&utm_campaign=sept_open_2026 → показать адресную строку.
  3. Показать блок скрытых полей под формой: значения уже подставлены, до отправки.
  4. Отправить форму → выбрать en=generate_lead → Payload → ep.source, ep.medium, ep.campaign.
  5. Показать сохранённую заявку: те же три значения дошли до строки таблицы.
  6. Открыть ссылку с меткой ?utm_source=VK Реклама → сравнить dl и ep.source с прошлым запросом.
  7. Перейти по меню на «Программу курса» → меток в адресе нет, значения в скрытых полях прежние.
16

Практическая работа · 28 минут · индивидуально или в паре

Собрать четыре ссылки и проследить источник до строки заявки

  1. Заполнить справочник (8 мин). Четыре канала своей учебной кампании: для каждого — utm_source, utm_medium, utm_campaign. Значения по шести правилам, utm_medium из списка.
  2. Собрать ссылки (7 мин). Четыре адреса стенда с довесками из своей таблицы. Записать каждый в файл целиком, а не «как в третьей строке».
  3. Открыть и проверить (8 мин). По каждой ссылке: адресная строка → Payload → три поля ep.*. Отправить форму → снять кадр сохранённой заявки.
  4. Сломать намеренно (5 мин). Взять пятую ссылку и испортить одним способом из реестра. Открыть, зафиксировать, чем именно отличается результат, и как это выглядело бы в отчёте.

Пошаговая инструкция с кадрами, шаблоном отчёта и таблицей «что пошло не так» — файл PRACTICE.md. Данные в форму только тестовые, настоящие персональные не вводить.

17

Контроль · 5 минут

Две из шести ссылок
размечены неправильно

Найдите их и назовите, что именно сломано

18

Контроль · все шесть ведут на одну страницу и все шесть открываются

Одна кампания, шесть каналов

  1. https://kolledzh.ru/kursy?utm_source=vk&utm_medium=social&utm_campaign=sept_open_2026
  2. https://kolledzh.ru/kursy?utm_source=priem_email&utm_medium=email&utm_campaign=sept_open_2026
  3. https://kolledzh.ru/kursy?utm_source=VK&utm_medium=Social&utm_campaign=Сентябрь 2026
  4. https://kolledzh.ru/kursy?utm_source=afisha_qr&utm_medium=qr&utm_campaign=sept_open_2026
  5. https://kolledzh.ru/kursy?utm_source=tg&utm_medium=social?utm_campaign=sept_open_2026
  6. https://kolledzh.ru/kursy?utm_source=partner_site&utm_medium=referral&utm_campaign=sept_open_2026

Подсказка: одна ошибка — в написании значений, другая — в сборке самой ссылки. Вторую глазами заметить труднее.

18

Контроль · разбор

Неправильно размечены ссылки 3 и 5

№ 3 · три ошибки сразуПрописные буквы в VK и Social — отдельные строки отчёта. Кириллица и пробел в Сентябрь 2026 — значение уедет как %D0%A1…%202026. Значение Social не совпадёт с social, и канал попадёт в Unassigned
№ 5 · второй знак «?»Вместо & перед utm_campaign стоит ?. Меток в такой ссылке не три, а две: utm_medium получает значение social?utm_campaign=sept_open_2026, а метки utm_campaign в адресе нет вовсе

Остальные четыре собраны по справочнику. Строка 4 с utm_medium=qr — не ошибка: значение согласовано, и мы заранее знаем, что готовый отчёт по каналам отнесёт эти переходы в Unassigned.

Ошибка в ссылке № 5 не видна в отчёте никак: там просто не будет строки по кампании. Именно поэтому ссылку проверяют до публикации, а не отчёт после.

18

Приёмка · к концу пары

Результат занятия: что сдаётся

  • Справочник меток — четыре канала, для каждого три значения. Все значения проходят по шести правилам.
  • Таблица ссылок — четыре собранных адреса целиком, рядом с каждым название канала.
  • Четыре тестовые заявки — по одной на канал. У каждой в кадре видны utm_source, utm_medium, utm_campaign.
  • Один разбор поломки — что испортили в пятой ссылке, что изменилось в ep.* и как это выглядело бы в отчёте.
  • Контрольный вопрос — показать в Payload собственное событие и назвать, из какой части адреса взялось значение ep.source.
19

Домашнее задание · два, с разными сроками

Максим Николаевич не хочет задавать домашнее задание. Но очень хочет

№ 1 · к занятию 3 Справочник меток на свой проект
  1. Расширить справочник до восьми каналов: добавить платное объявление, партнёрскую ссылку, подпись в письме и один канал на свой выбор.
  2. Собрать восемь ссылок и проверить каждую: адресная строка и три поля ep.* в Payload.
  3. Найти в интернете три реальные размеченные ссылки (рассылка, пост, объявление). Для каждой выписать значения меток и оценить по шести правилам: что сделано верно, что нарушено.

файл homework_02.md · ветка hw-03 · до занятия 3

№ 2 · разбор случая Что ещё дописывают в чужие ссылки
  1. Метки utm_* ставит владелец ссылки. Но в адресах попадаются и чужие пары: fbclid, gclid, yclid, _openstat.
  2. Выбрать одну из них и разобрать: кто её дописывает, в какой момент, что она содержит и кому доступна.
  3. Свой замер: открыть пять ссылок из рассылок и соцсетей и выписать все пары, которые оказались в адресе помимо utm_*.
  4. Источники: не менее трёх, хотя бы один — документация системы или отчёт регулятора.

файл research_02.md · ветка hw-03-research

Порядок сдачи прежний: запрос на слияние в собственную ветку main, бланки — кнопка печати в PDF. Про ИИ: разметку, проверку в Payload и собственный замер делаете сами; модель допускается для формулировок и оформления. Я сам так делаю всегда, поэтому и вам запрещать не буду.

в диалоге печати снять галочку «Колонтитулы», иначе браузер допишет дату и адрес страницы

ДЗ

Итог занятия · и что дальше

Источник перехода доходит от ссылки до строки заявки

было(not set)источник заявки неизвестен
сталоvkв событии и в строке таблицы
цена6правил справочника, которые надо соблюдать всем

Разметка — единственный участок маршрута, где данные создаёт человек, а не программа. Всё остальное на этом пути работает само: браузер отдаёт адрес, счётчик читает метку, форма кладёт значение в скрытое поле, аналитика группирует строки. Поэтому и ошибки здесь человеческие — прописная буква, пробел, лишний знак вопроса, — а последствия у них машинные: строка в отчёте разделится надвое, и никто об этом не сообщит.

На занятии 3 мы возьмём собранные вами заявки и займёмся тем, что происходит с ними дальше: как из потока заявок собирается отчёт, почему число в нём зависит от выбранного периода и что делать с теми переходами, у которых источник всё-таки остался неизвестным.

20