СтатьяАналитикаРеклама

Как нормализовать UTM-метки и не исказить отчёт

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

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

Если одна кампания встречается в отчёте как google, Google и google , её визиты и лиды распадутся на несколько строк. Соберите рядом с исходными полями нормализованные, а затем группируйте данные по ним. Так вы объедините технические варианты записи и сможете проверить, что строки и суммы не изменились.

Сначала сохраните сырой слой

Не исправляйте UTM прямо в единственной выгрузке. Оставьте utm_source_raw, utm_medium_raw и utm_campaign_raw, а результат записывайте в новые поля с суффиксом _norm.

Это нужно по двум причинам. Во-первых, можно объяснить, почему конкретная строка попала в группу. Во-вторых, ошибочное правило легко откатить без повторной выгрузки из аналитики.

Яндекс Метрика различает регистр UTM-значений: Vkontakte и vkontakte влияют на отображение данных в отчётах как разные записи. Метрика получает сведения о метках из первого просмотра страницы в визите и строит для UTM отдельные отчёты. Подробности есть в документации Яндекс Метрики.

Разделите техническую очистку и смысловое объединение

К технической очистке относятся операции, которые не меняют смысл значения:

  1. убрать пробелы в начале и конце;
  2. привести регистр по правилу команды — например, к нижнему для utm_source и utm_medium;
  3. обозначить пустые значения единым служебным маркером, не смешивая их с реальной строкой none;
  4. сохранить журнал правила и дату применения.

Замена fb на facebook уже требует словаря соответствий. То же относится к paid_social и cpc, spring-sale и spring_sale: похожее написание ещё не доказывает одинаковый смысл. Такие пары подтверждает владелец разметки, после чего правило попадает в отдельную таблицу.

Если исходником служит полный URL, сначала разбирайте его стандартным URL-парсером. Не заменяйте %, + и амперсанды вручную: они участвуют в кодировании строки запроса. В Python для этого есть urllib.parse; правила процентного кодирования описаны в RFC 3986. Если аналитическая система уже выгрузила UTM в отдельных колонках, повторно декодировать их не нужно.

Три слоя нормализации UTM: исходные значения, безопасная очистка и словарь соответствий команды.

Автоматически очищайте только форму записи; смысловые соответствия храните в отдельном словаре.

Проверьте на маленьком примере

Учебная выгрузка содержит шесть строк:

row_idutm_sourceutm_mediumutm_campaignВизитыЛиды
R01googlecpcspring_sale1208
R02GoogleCPCspring_sale704
R03 google cpc spring_sale 302
R04fbpaid_socialspring_sale555
R05facebookpaid_socialspring_sale453
R06telegrammessengerspring_sale401

До обработки в таблице 360 визитов и 23 лида. После удаления внешних пробелов и приведения регистра три строки Google объединяются: 220 визитов и 14 лидов. Значения fb и facebook остаются раздельными, пока в словаре команды не появится подтверждённое соответствие fb → facebook; после него группа Facebook содержит 100 визитов и 8 лидов.

Минимальная логика на Python выглядит так:

def safe_text(value: str) -> str:
    return value.strip().casefold()

source_safe = safe_text(row["utm_source"])
source_norm = source_map.get(source_safe, source_safe)

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

Примите результат по четырём проверкам

1. Число исходных строк не изменилось

Нормализация добавляет поля, но не удаляет наблюдения. Если строки нужно объединить для отчёта, агрегацию делайте отдельным шагом и сохраняйте исходную таблицу.

2. Аддитивные показатели совпали

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

3. Каждое смысловое правило объяснимо

Для словаря достаточно четырёх колонок: поле, исходное значение, нормализованное значение, основание. Если основания нет, оставьте варианты раздельными и вынесите их в список на проверку.

4. Новые значения не проходят незаметно

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

Что делать дальше

Если проблема начинается раньше — метки теряются после редиректа или визит не находится в системе, пройдите короткую проверку UTM в Яндекс Метрике. Для новых ссылок заведите единый словарь и правила именования по гайду WiseLab по UTM-разметке. После нормализации пересчитайте показатели по объединённым группам и сравнивайте их только при одинаковом определении визита, лида и периода.

Источники

Материал подготовлен редакцией WiseLab с помощью AI. Источники и фактические утверждения проверены при подготовке.

Загружаем рейтинг…

Насколько полезен материал?

Выберите оценкуСлева — меньше пользы, справа — больше

Загружаем вашу оценку…

Что думаете?

Загружаем комментарии…

СЛЕДУЮЩИЙ ШАГ

Что ещё поможет в этой задаче

СтатьяАналитикаРеклама10 октября · 6 минут
Три бумажные карточки веб-страниц соединены оранжевой нитью; на среднем переходе одна метка отделилась перед посадочной страницей.

Как найти редирект, который удаляет UTM-метки

Проверяем каждый переход от рекламной ссылки до посадочной страницы, находим первую потерю UTM, gclid или yclid и ставим разработчику воспроизводимую задачу.

Читать разборЗагрузка просмотров
СтатьяАналитикаРеклама17 октября · 7 минут
Бумажный рекламный отчёт: три округлённые строки дают 99,99, а итог по исходной точности — 100,00

Почему сумма расходов по строкам не совпадает с итогом отчёта

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

Читать разборЗагрузка просмотров
СтатьяАналитикаРеклама9 октября · 8 минут
Два бумажных отчёта за один месяц соединены временной линией; на втором снимке стало больше отметок конверсий.

Почему конверсии прошлого месяца продолжают меняться

Как закрыть рекламный период: разделить дату клика и конверсии, сохранить снимки отчёта и объяснить изменение CPL из-за задержки результата.

Читать разборЗагрузка просмотров