16 июн. 2025 г.·7 мин чтения

Именование событий аналитики, которому команда доверит через 6 месяцев

Хорошее именование событий в аналитике сохраняет отчёты стабильными по мере роста команд. Узнайте простые правила для имён, владельцев, ревью и безопасных изменений.

Именование событий аналитики, которому команда доверит через 6 месяцев

Почему команды перестают доверять данным

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

Частая причина — дублирование под разными именами. Продукт добавляет signup_started, инженеры шлют begin_signup, а маркетинг просит register_click. Все три могут отражать один и тот же момент, но отчёты считают их по‑разному. После этого никто уже не уверен, какое число правильное.

Поспешные релизы усугубляют ситуацию. Команда меняет текст кнопки, переставляет шаг или сокращает поток и в спешке обновляет трекинг. Код уходит в прод, но имя события больше не совпадает с первоначальным смыслом. Через месяц кто‑то сравнивает эту неделю с прошлым кварталом и получает чистый график, построенный на смешанных определениях. Тогда названия перестают выглядеть как задача по ведению порядка и начинают ломать отчёты.

Старые отчёты добавляют ещё один уровень путаницы. Команды держат еженедельные дашборды долгое время после того, как события за ними изменились или устарели. Отчёт по-прежнему загружается, поэтому люди думают, что всё в порядке. Но возможно, никто не проверял, означает ли payment_completed успешное списание, отправленную форму или просмотр страницы старой корзины.

Доверие падает ещё быстрее, когда никто не отвечает за решение. Если кто‑то хочет переименовать событие, удалить свойство или разделить одно событие на два — кто это утверждает? Когда никто не знает, изменения проскальзывают через пул‑реквесты, сообщения в чате или правки в последнюю минуту. Модель данных тихо дрейфует.

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

Решите, что действительно заслуживает события

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

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

Отсюда начинается хорошее именование. Меньше событий, выбранных целенаправленно, легче именовать, сопровождать и доверять им.

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

Быстрый тест:

  • Может ли это событие ответить на реальный бизнес‑ или продуктовый вопрос?
  • Будет ли кто‑то проверять его в отчёте хотя бы раз в месяц?
  • Отмечает ли оно прогресс, ошибку или отток в пользовательском потоке?
  • Сделает ли потеря этого события принятие решения сложнее?

Если на все пункты ответ «нет», пропустите его.

Команды также попадают в беду, когда смешивают продуктовые события с техническими логами. Держите их отдельно. Продуктовые события описывают, что сделал или пытался сделать пользователь, например account_created или checkout_started. Технические логи описывают, что сделала система: ошибки API, ретраи или промахи кэша. Инженерам нужны оба типа, но отчёты становятся грязными, когда всё складывается в одну корзину.

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

Установите правило именования, которому будут следовать

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

Надёжный дефолт — один глагол и один объект. Сначала напишите, что произошло, затем — над чем. Имена вроде signup_started, signup_completed, payment_failed и invoice_sent оставляют гораздо меньше места для споров, чем расплывчатые метки вроде user_action или checkout_step.

Выберите один формат и придерживайтесь его для всех событий. Большинству команд удобно использовать lowercase snake_case — его легко читать в коде, дашбордах и CSV. Сам формат менее важен, чем согласованность. Если половина команды пишет PaymentCompleted, а другая — payment_completed, отчёты быстро запутаются.

Держите детали вне названия события. Помещайте их в свойства. Событие должно описывать действие один раз, а свойства — нести контекст.

Например, используйте payment_completed со свойствами plan: pro, billing_cycle: annual или method: card. Не создавайте отдельные события вроде pro_plan_payment_completed и annual_card_payment_completed — это превратит одно действие в кучу почти дубликатов.

Примеры, которые можно копировать

Короткое правило используется. Правило с примерами соблюдается.

  • Хорошо: signup_started
  • Хорошо: signup_completed
  • Хорошо: trial_canceled
  • Плохо: user_did_thing
  • Плохо: CheckoutFlowStepTwo

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

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

Назначьте владельца для каждого события

Когда у события нет владельца, его смысл дрейфует. signup_completed начинается с одного определения, потом продукт меняет поток, инженер добавляет ретрай, а дашборд продолжает считать по‑старому. Через несколько месяцев люди спорят о числе, а не используют его.

Назначайте одного человека на семейство событий, а не на каждое событие в отдельности. Это проще и ближе к реальности того, как продукты меняются. Хорошие семейства обычно соответствуют частям пути пользователя: signup, onboarding, billing, retention.

Продукт должен определять смысл события. Инженерия — проверять, что приложение отправляет его так, как в документе. Такое разделение сохраняет бизнес‑смысл и раньше ловит проблемы реализации: дубли срабатываний, отсутствующие свойства или события, отправленные на неверном шаге.

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

Имя в документе меняет поведение. Если отчёт выглядит неверно, команда знает, к кому обращаться. Если поток целенаправленно изменился, владелец может быстро это подтвердить. Если трекинг сломался, инженеры знают, где искать в первую очередь.

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

В качестве простого примера по биллингу: если один человек владеет всеми событиями биллинга, он может держать trial_started, payment_failed и subscription_renewed консистентными в отчётах. Чистые имена важны, но именно владение сохраняет определение от дрейфа.

Как добавить новое событие

Give Event Families Owners
Определите, кто утверждает смысл, реализацию и обновления отчётов для signup, onboarding и billing.

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

Напишите один простой вопрос в задаче до того, как кто‑то тронет код. Хорошие вопросы узкие: "Где пользователи останавливаются при регистрации?" или "Сколько триал‑пользователей открывают биллинг перед оплатой?" Этот вопрос держит событие честным. Он также подсказывает, какие свойства важны, а какие — шум.

Практичный рабочий процесс:

  1. Поискать в текущем плане трекинга событие, которое уже отвечает на вопрос.
  2. Если такого нет — набросайте имя события и короткое описание на простом языке.
  3. Добавляйте только те свойства, которые нужны отчёту, и помечайте, какие из них обязательны.
  4. Попросите продукт, инженеров и тех, кто читает отчёты, утвердить смысл до релиза.

Второй шаг важнее, чем кажется. signup_completed — понятное имя. user_action становится бесполезным уже через пару недель. Держите глагол и объект очевидными, а имена свойств — также простыми. Если отчёт требует типа плана, используйте plan_type. Если нужен размер оплаты — amount. Не прячьте смысл за сокращениями, понятными только одному разработчику.

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

Отправляйте событие в прод только после согласования определения всеми участниками. Запишите это определение в общем плане, а не в чьей‑то памяти. Если команда не может согласовать смысл — не релизьте. Несогласие до запуска дешёвое; путаница после — дорогая.

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

Большинство проблем с отчётностью начинаются с небольшого изменения, которое выглядело безобидно. Разработчик переименовал signup_started в signup_begin ради консистентности. PM поменял событие так, что теперь оно срабатывает после подтверждения почты, а не при отправке формы. Дашборд по-прежнему показывает тренд, но линия теперь смешивает два разных смысла.

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

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

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

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

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

Простой пример от регистрации до оплаты

Fix Event Drift Early
Получите практическую проверку именований, владельцев и изменений трекинга до того, как отчёты сломаются.

Начните с одного вопроса: где замирают регистрации? Если команда не может ответить на это одним воронковым отчётом и общим определением, данные уже дрейфуют.

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

Для пути от регистрации до первой оплаты план трекинга может быть маленьким:

  • account_created — когда система создаёт аккаунт
  • onboarding_started — когда пользователь начинает онбординг
  • plan_selected — когда пользователь подтверждает план
  • payment_completed — когда оплата проходит успешно

Каждое событие должно иметь именованного владельца. Продукт может владеть onboarding_started, если этот поток часто меняется. Инженерия или владелец биллинга могут владеть payment_completed, потому что логика оплаты меняется часто и с риском.

Владение — это не бумажная волокита. Владелец определяет смысл события, проверяет, что приложение всё ещё отправляет его одинаково, и утверждает любые изменения до продакшна.

Некоторые свойства должны оставаться одинаковыми во всех отчётах. Для этой воронки держите user_id, plan_id, plan_price, currency и signup_source согласованными. Если одна команда отправляет plan_id, а другая — selected_plan, отчёт превращается в работу по очистке.

Самый лёгкий способ подорвать доверие — переименование, которое выглядит безобидно. Допустим, команда приложений поменяла plan_selected на pricing_selected, потому что новый экран называется Pricing, но никто не обновил воронку.

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

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

Ошибки, которые команды повторяют

Команды редко теряют доверие из‑за одного большого провала. Обычно это происходит через мелкие правки, которые тогда казались безобидными. Через шесть месяцев никто уже не может сказать, означают ли signup_started, begin_signup и register_tap одно и то же или три разных вещи.

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

Ещё одна ошибка — переименовывать события при смене копирайта в интерфейсе. Если текст кнопки сменился с "Start trial" на "Create workspace", название события не должно меняться только ради соответствия UI. Отчёты нужны стабильные метки. UI может меняться каждую спринт‑неделю. Имена событий меняются только тогда, когда само действие пользователя меняется.

Некоторые команды пытаются вложить в одно событие слишком много смысла. Они отправляют широкое событие user_interaction и кладут реальный смысл в кучу свойств. Это кажется гибким неделю. Позже никто не может договориться, что именно означает событие.

Та же проблема возникает со свойствами без определения. Если никто не описал, что значит plan, source или status, команды будут заполнять их по‑разному. В одном отчёте — pro, в другом — Pro, в третьем — annual_pro. Событие есть, а отчёт всё равно неверен.

Быстрый тест на запах:

  • Одно действие появляется под двумя именами в одном дашборде.
  • Имя события отражает текст на экране больше, чем поведение пользователя.
  • Свойство принимает свободный текст там, где нужно фиксированное множество значений.
  • Дашборд всё ещё использует устаревшие события после изменения трекинга.

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

Исправление скучное, поэтому оно работает. Когда команда меняет трекинг, нужно обновить план трекинга, проверить каждый дашборд, который зависит от события, и пометить старые события как архивные. Немного уборки сейчас экономит массу споров позже.

Быстрая проверка перед релизом

Separate Events From Logs
Разделите пользовательские события и логи системы — уберите повторы, ошибки и системный шум из отчётов.

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

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

Владение так же важно, как и именование. Один человек должен владеть определением, даже если несколько человек помогали его создать. Этот владелец позже отвечает на одни и те же вопросы: что значит событие? Когда оно должно срабатывать? Какие отчёты его используют?

Перед релизом пройдитесь по этому короткому списку:

  • Убедитесь, что событие означает одну конкретную вещь и только одну.
  • Подтвердите, что рядом с определением указано имя владельца.
  • Просмотрите каждое свойство, используемое в отчётах, и спросите, не уберёт ли его продукт при следующем изменении.
  • Зафиксируйте изменение в одном общем месте, а не в чате или старом тикете.
  • Отметьте, новое это событие, переименование или изменение поведения.

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

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

Храните запись в одном общем месте, которым команда уже пользуется. Таблица, документ или внутренний каталог — всё подойдёт. Формат менее важен, чем последовательность. Люди доверяют данным, когда определения стабильны, а изменения оставляют чёткий след.

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

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

Большинству команд не нужно перестраивать трекинг с нуля. Нужно исправить имена, которые вызывают больше всего споров. Если одна команда говорит signup_complete, а другая — user_registered про одно и то же действие, выберите одно имя, напишите простое определение и обновите план трекинга. Когда самые оспариваемые термины перестанут меняться, остальное пойдёт легче.

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

Сделайте это до следующего релиза, а не после. Быстрая проверка в планировании или QA предотвратит недели некорректных сравнений позже. Когда кто‑то просит новое событие, спросите, кто им будет пользоваться, на какой вопрос оно отвечает и покрывает ли существующее событие уже это действие.

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

Если вашей команде нужна внешняя помощь с настройкой процесса, Oleg Sotnikov at oleg.is работает со стартапами и малыми бизнесами в роли внештатного CTO и советника. Такая чистка аналитики часто идёт рядом с архитектурой продукта, инженерными процессами и более широкими задачами по AI‑ориентированным операциям.

Часто задаваемые вопросы

What makes a good analytics event name?

Используйте один понятный глагол и один объект, например signup_started или payment_completed. Держите единый формат для всей команды, а дополнительные детали помещайте в свойства, а не в название события.

Should we track every click and page action?

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

When should I use a property instead of a new event?

Название события должно однозначно описывать действие. Свойства добавляют контекст, например plan_type, billing_cycle или method. Это делает отчёты аккуратнее и предотвращает появление множества почти одинаковых событий.

Who should own analytics events?

Назначьте одному владельцу каждое семейство событий, например signup, onboarding или billing. Продукт определяет значение события, инженеры проверяют, что приложение отправляет его так, как описано, а владелец утверждает изменения перед релизом.

When should I create a new event instead of renaming one?

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

Can web and mobile teams use different names for the same action?

Используйте одни и те же имена событий для одного и того же действия на всех платформах. Если веб отправляет signup_started, а мобильное приложение — begin_signup, отчёты разнесут одно действие по разным корзинам. Платформу можно указывать в свойстве.

Which properties should stay consistent across reports?

Начните с тех свойств, на которые отчёты опираются в разных шагах воронки, например user_id, plan_id, currency или signup_source. Определите разрешённые значения и придерживайтесь их, чтобы одна команда не отправляла pro, а другая — Pro или annual_pro.

What should we do with dashboards after tracking changes?

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

What is a quick test before shipping a new event?

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

How do we clean up a messy tracking plan without starting over?

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