UTM-метки перестают быть хаосом, когда команда относится к ним как к данным, а не как к свободному комментарию в ссылке. Закройте словари source и medium, задайте шаблон campaign, определите роль content и term, храните каждую ссылку в реестре и собирайте URL инструментом с корректным кодированием. Перед запуском выполните реальный переход через все редиректы и убедитесь, что итоговые значения появились в нужном отчёте. Персональные, секретные и клиентские данные в URL не помещают.
Что означает каждое поле
Пять привычных полей не являются пятью местами для произвольного описания. utm_source называет конкретный источник или площадку, utm_medium — согласованный тип канала, utm_campaign — кампанию или инициативу, utm_content различает варианты внутри кампании, utm_term сохраняет условие или ключевое слово, когда оно действительно нужно. Google также поддерживает utm_id и utm_source_platform в соответствующих сценариях. Используйте только поля, которые ваша система читает и команда способна поддерживать.
Параметр | Вопрос | Пример внутреннего значения | Владелец |
|---|---|---|---|
utm_source | Где размещено? | yandex | Владелец словаря площадок |
utm_medium | Какой это тип канала? | cpc | Аналитик |
utm_campaign | К какой инициативе отнести? | retention-spring-2026 | Менеджер кампании |
utm_content | Какой вариант или слот? | banner-a-header | Менеджер кампании |
utm_term | Какое условие показа? | Динамический параметр платформы | Специалист канала |
utm_id | Какой устойчивый ID кампании? | cmp-0247 | Аналитик |
Значения примера — не универсальные правила площадок. Это иллюстрация внутренней конвенции. Если рекламная система автоматически передаёт идентификатор или требует свой синтаксис динамической подстановки, сохраните его без самовольной транслитерации. В реестре рядом должны быть человеческое название, системный ID и версия соглашения. Тогда переименование инициативы не разрушит историческую связь.
Нормализация, которую можно проверить
Для собственных значений используйте нижний регистр и один выбранный алфавит; смену правила оформляйте новой версией.
Пробелы заменяйте одним дефисом, повторные дефисы схлопывайте, крайние дефисы удаляйте.
Не используйте свободные комментарии, ФИО, email, телефон, client_id, номер договора или содержимое формы.
Не кодируйте смысл только порядковым номером: системный ID храните отдельно от читаемого campaign.
Не меняйте старые строки задним числом; создайте mapping для отчёта и применяйте новую норму с даты перехода.
Значения динамических параметров не «очищайте» до подстановки без проверки документации площадки.
Регистр особенно коварен: Spring, spring и SPRING могут стать отдельными значениями в источнике данных или при импорте. То же происходит с social-paid, paid_social и cpc-social. Автоматический отчёт не знает, что авторы имели в виду одно. Закрытый словарь medium должен содержать короткий список допустимых значений с определениями и примерами. Заявка на новое значение проходит через владельца, а не добавляется в день запуска.
Генератор соглашений об именовании
Генератор ниже — логическая схема для таблицы, формы или существующего внутреннего инструмента. Он сначала проверяет значение по словарю, затем нормализует только разрешённые свободные части и в конце собирает URL стандартной библиотекой. Он не конкатенирует строку вручную и не принимает неизвестный source или medium.
Шаг | Ввод | Правило | Результат или ошибка |
|---|---|---|---|
1. База | https://example.ru/guide?lang=ru | Разобрать URL как объект; сохранить существующий query. | Валидный https URL на разрешённом домене. |
2. Source | Яндекс | Выбрать ключ из словаря, а не вводить свободно. | yandex |
3. Medium | Платный поиск | Выбрать единый тип канала. | cpc |
4. Campaign | Retention Spring 2026 | lowercase; пробел → дефис; campaign-id хранить рядом. | retention-spring-2026 |
5. Content | Banner A / Header | Использовать разрешённые tokens variant и placement. | banner-a-header |
6. Privacy | Свободные поля | Отклонить email, телефон, ФИО, CRM id и секреты. | PASS либо блокировка сборки. |
7. Encode | Все пары | Собрать через URLSearchParams или эквивалент. | Корректно percent-encoded query. |
8. Verify | Финальная ссылка | Пройти редирект и проверить landing + отчёт. | Статус VERIFIED с датой и проверяющим. |
base_url=https://example.ru/guide?lang=ru
source=yandex
medium=cpc
campaign=retention-spring-2026
content=banner-a-header
campaign_id=cmp-0247
status=READY_FOR_TESTВ строке результата должны сохраниться существующие параметры базовой страницы. Первый добавляемый параметр отделяется знаком вопроса, последующие — амперсандом, но этот синтаксис лучше доверить стандартному URL API. Русские символы технически могут быть закодированы, однако смешение алфавитов усложняет поиск дублей; внутреннее правило транслитерации выбирают заранее и покрывают тестами. Нельзя дважды кодировать уже закодированное значение.
Реестр важнее отдельной ссылки
Минимальный реестр содержит final_url, source, medium, campaign, campaign_id, content, term, владельца, дату создания, дату запуска, версию стандарта и статус проверки. Добавьте исходный landing URL, чтобы отличить ошибку страницы от ошибки разметки. Для динамических значений храните шаблон и один фактически разрешившийся тестовый URL. Реестр должен быть доступен создателям ссылок и аналитикам, иначе каждый заведёт собственный файл.
Не удаляйте строки завершённых кампаний: они объясняют исторические отчёты. Если в старых данных встречаются facebook, fb и meta, создайте аналитическое отображение к одной группе, но не переписывайте первичные события. Запишите дату, с которой новые ссылки используют выбранный ключ. Так сравнение периодов остаётся проверяемым, а миграция не выдаётся за изменение поведения аудитории.
Проверка до запуска
Открыть финальную ссылку в чистом профиле и записать всю цепочку HTTP-переходов.
Проверить, что landing page загрузилась без ошибки и query-параметры не изменили её содержимое.
Убедиться, что каждый промежуточный редирект сохранил нужные параметры.
Совершить тестовое событие, не имитируя реальную покупку, если процесс этого не допускает.
Найти визит в тестовом или отладочном представлении и сверить source, medium, campaign, content.
Проверить отсутствие персональных и секретных данных в адресной строке, логах и реестре.
Зафиксировать время проверки, браузер, проверяющего и результат; только затем менять статус на READY.
Если сервис коротких ссылок отбрасывает query или подменяет landing, не добавляйте исключение в отчёт. Исправьте цепочку или откажитесь от сервиса для этой кампании. Параметры должны дойти до первого просмотра, на котором аналитика определяет источник. Проверяйте не только видимую строку адреса: серверный редирект может записать событие до того, как браузер покажет конечный URL.
Конфиденциальность — жёсткий gate
URL виден пользователю, попадает в историю браузера, серверные логи, аналитические системы, referrer и инструменты поддержки. Поэтому utm_content не место для email получателя, номера телефона, ФИО менеджера, внутреннего customer_id, названия закрытой сделки или текста персонального оффера. Официальные правила Google Analytics и Яндекс Метрики запрещают передачу идентифицирующей и конфиденциальной информации. Проверка должна блокировать сборку, а не выдавать предупреждение после запуска.
Безопасный content описывает креатив и размещение на уровне кампании: card-a-feed, video-15s-pre-roll или link-footer. Если нужна персональная доставка, идентификатор хранится в защищённой системе рассылки, а не в UTM. Внешний campaign_id также не должен раскрывать коммерческую тайну: используйте непрозрачный рабочий ключ, который раскрывается только через внутренний реестр.
Что измерять после внедрения стандарта
Оцените не «число UTM», а качество классификации: долю ссылок, созданных через генератор; долю неизвестных source и medium; количество дублей после нормализации; долю переходов с заполненным campaign_id; число проваленных privacy-проверок; долю тестов, где метки дошли через редирект. Эти показатели показывают здоровье процесса, но не эффективность рекламы. Результат кампании оценивается отдельно с понятной атрибуцией и, где возможно, экспериментом.
Практический план на один рабочий день
Экспортируйте значения source, medium и campaign за последние 90 дней без попытки объявить их спросом. Сгруппируйте только очевидные варианты написания, пометьте спорные строки и выберите канонические ключи для будущих ссылок. Создайте первую версию реестра, пять правил нормализации и privacy-блокировку. Затем соберите одну реальную ссылку каждого активного канала и пройдите полную проверку. Старые события оставьте неизменными; mapping используйте только в слое отчёта.
Управление изменениями без потери истории
Назначьте владельца стандарта и короткий процесс изменения. Запрос на новый source или medium должен содержать площадку, назначение, ожидаемый срок и проверку на существующий эквивалент. Владелец либо выбирает уже разрешённый ключ, либо выпускает новую версию словаря с датой начала. Рассылка правила без обновления генератора недостаточна: форма, документация, тесты и реестр должны перейти одновременно. Если старый ключ ошибочен, его помечают deprecated, но продолжают распознавать в исторических отчётах.
Добавьте автоматические проверки там, где ссылка создаётся: допустимый домен landing page, обязательные source, medium и campaign, максимальная разумная длина, отсутствие управляющих символов, секретов и шаблонов персональных данных, отсутствие повторного utm_source, корректность динамических placeholders. Проверка не должна обещать, что кампания эффективна; она подтверждает только синтаксис и соответствие соглашению. После генерации остаётся ручной тест реального редиректа и появления визита, потому что статическая валидация не видит поведение внешнего сервиса.
Обсуждение
Комментарии
Обсуждение загрузится при приближении к разделу.