Спроектируй таксономию событий для {{product}}.
Принципы именования
-
Object-Action:
object.actionилиobject_actionsignup.completed,payment.succeeded,project.created- НЕ
completed_signup(action_object) — менее читаемо - НЕ
signed_upбез объекта
-
Прошедшее время для action:
created, неcreate- "Что произошло" — естественно в past tense
-
Без пробелов и регистра в смысле
- snake_case или dot.case
- НЕ
Page Viewed(Mixpanel-style — устарело)
-
Один глагол на событие
payment.succeeded✓payment.created_and_succeeded✗
Структура события
event: object.action
properties:
# Контекст
page_url: ...
page_title: ...
source: ...
# Объект
object_id: ...
object_type: ...
# Действие
action_method: ... # клик / клавиатура / API
action_duration_ms: ...
# Пользователь
user_id: ... # анонимный или авторизованный
user_role: ...
# А/Б эксперименты
experiments: { name: variant }
Что трекать (минимум)
-
Лайфцикл сессии
session.startedpage.viewed(с URL, referrer, utm)session.ended
-
Конверсии
signup.started/signup.completedpayment.started/payment.succeeded/payment.failedtrial.started/trial.converted/trial.cancelled
-
Ключевые действия
feature.used(с feature_name)item.created/item.deletedsearch.performed(с query, results_count)
-
Воронки Для каждой основной воронки трекать каждый шаг отдельно
-
Ошибки и frustration
error.occurredform.validation_failed(с field)rage_click(несколько кликов в одну точку)
Анти-паттерны
✗ button_clicked — какая кнопка?
✗ form_submitted — какая форма?
✗ Разные команды называют одно и то же по-разному (user_signed_up vs signup_completed)
✗ Изменение значений старого события без миграции аналитики
✗ Высоко-кардинальные свойства (URL c query-string как property) — взрыв уникальных значений
Версионирование схемы
event: signup.completed
version: 2
properties:
method: email | google | github # v2
referral_source: ... # v2 - new
При breaking change — новое имя или версия. Не молча менять.
Документация
Веди источник истины — Notion/spreadsheet с:
- Имя события
- Когда вызывается
- Обязательные / опциональные свойства
- Тип каждого
- Дата добавления
- Owner
Перед добавлением события в код — добавь в документацию. Иначе через год: "что это за btn_3 и кто его поставил?"
Тестирование
- Debug mode в production
- Browser extension для просмотра событий
- Тест что событие отправлено:
expect(track).toHaveBeenCalledWith('signup.completed', {...})
Аудит воронки конверсии
Где сливаются пользователи: каждый шаг воронки, причины отвала, гипотезы для тестов.
Измерение воронок: настройка
Какие воронки строить, как считать, на каких сегментах смотреть.
North-Star метрика и input-метрики
Одна главная метрика которая отражает успех продукта + 3-5 драйверов под неё.