Собесов

Elfsight — CJM и event tracking plan для оформления первой подписки

Продуктовая аналитикаCJM / Event trackingСредняяMiddle

Условие

Elfsight — конструктор виджетов для сайтов. Ключевой бизнес-процесс — оформление первой платной подписки: регистрация → создание виджета → выбор тарифного плана → оплата.

Задача: построить (1) подробный CJM для сценария «оформление первой платной подписки до момента оплаты» и (2) event-tracking plan, который команда разработки может однозначно внедрить, плюс приоритизация событий.

Решение

1. Скелет CJM (этапы)

Этап User-action Touchpoint Painpoints KPI этапа
Awareness Поиск/реклама → Landing Web Невнятный value-prop Visitors → Sign-up CR
Sign-up Регистрация (email / SSO Google) Web Verification required, OAuth-fail Sign-up CR
Onboarding Knowing «как сделать виджет» App Слишком много опций; не нашёл нужный widget Time-to-first-action
Widget creation Выбор типа → конфигурация → preview App Сложный конструктор; preview ломается Widget save rate
Embed Получение кода → вставка на сайт App + Site владельца Не понятно как вставить Embed rate
Plan selection Видит лимит free-плана → открывает upgrade page App Плата кажется завышенной Pricing page CR
Checkout Email → Card → Confirm Stripe page Card declined, 3DS Checkout CR
Activation (paid) Возврат после оплаты App Не пришло подтверждение Activation rate

2. Event-tracking plan

Принципы:

  • Один event = одно действие пользователя + контекст в properties.
  • Согласованный naming: noun_verb (e.g., widget_created).
  • Identify-call с user_id сразу после sign-up (объединяет анонимный путь).
# Event Trigger Properties Priority
1 page_view загрузка страницы url, referrer, utm_* P1
2 signup_started клик «Sign up» source (organic/paid), method (email/google) P0
3 signup_completed успешная регистрация user_id, method P0
4 email_verified подтверждение email user_id P1
5 widget_template_viewed открытие галереи шаблонов user_id P2
6 widget_template_selected клик по шаблону user_id, widget_type P0
7 widget_config_changed изменение настройки в редакторе user_id, widget_type, field_changed P2
8 widget_preview_viewed открытие preview user_id, widget_type P2
9 widget_saved сохранение виджета (FREE plan ok) user_id, widget_id, widget_type P0
10 embed_code_copied копирование embed-кода user_id, widget_id P1
11 pricing_page_viewed открыта страница тарифов user_id, source P0
12 plan_selected клик по плану user_id, plan, billing_period P0
13 checkout_started открытие модалки оплаты user_id, plan, price P0
14 checkout_payment_method_added добавлена карта user_id P1
15 checkout_completed оплата прошла user_id, plan, price, currency, transaction_id P0
16 checkout_failed ошибка оплаты user_id, plan, error_code P1
17 subscription_active подписка активирована (server-side) user_id, plan P0

Приоритизация (логика)

P0 = без них нельзя посчитать основную воронку «sign-up → paid». Если выпустить релиз без P0, аналитика слепа.

P1 = атрибуция, источники, ошибки — нужны для оптимизации, но не для базового measurement.

P2 = детализация (что именно настроил пользователь) — нужны позже, для понимания «глубины» использования.

Порядок мышления

  1. Воронку «от регистрации до paid» — обязательно мериется → P0.
  2. Что должны видеть стейкхолдеры (sales/growth)? Источники, partner attribution, ошибки → P1.
  3. Что нужно продакту через 3 месяца для гипотез? Глубокая телеметрия → P2.

Подводные камни

  1. Anonymous → identified: до signup_completed пользователь — анон. Объединение через anonymous_id/distinct_id обязательно (иначе воронка «split user»).
  2. Server-side vs client-side для денежных событий: subscription_active и checkout_completed дублировать на сервере — иначе AdBlock/race-condition теряет деньги.
  3. checkout_failed без user_id (если оплата на отдельном Stripe-домене): нужен сквозной session_id.
  4. PII в properties: не передавать email/phone в analytics — GDPR.
  5. Перегруз событиями: widget_config_changed на каждый keystroke = миллионы строк. Дебаунс или агрегация в начале/конце редактирования.
  6. Документация = source of truth: tracking plan живёт в Notion/Mixpanel Lexicon, не в head у аналитика.

Эталонный ответ

CJM — 8 этапов от awareness до activation. Tracking plan — 17 ключевых событий, P0 (воронка-минимум: sign-up, widget_saved, plan_selected, checkout_completed, subscription_active), P1 (атрибуция, ошибки), P2 (глубокая UX-телеметрия).

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти