Реализация User Journey Mapping в аналитике мобильного приложения
User Journey Mapping в аналитике — это не UX-диаграмма на стикерах. Это реальные данные о том, какими путями пользователи движутся по приложению, где теряются, какие незапланированные маршруты используют чаще запланированных.
Типичная ситуация: дизайнер нарисовал онбординг из 4 шагов, разработчики реализовали. По аналитике выясняется, что 40% пользователей на третьем шаге уходят в настройки, возвращаются, и только потом завершают онбординг. Никто не тестировал этот edge case, потому что не знал о нём. Journey mapping его обнаруживает.
Инструменты и подходы
Есть два уровня реализации:
Уровень 1 — воронки и фаннелы. Sequenced event funnels в Firebase/Amplitude/Mixpanel. Показывают, сколько пользователей прошли заданную последовательность событий.
Уровень 2 — Sankey-диаграммы и path analysis. Показывают все возможные переходы от одного экрана к другому без заданного пути. Доступно в Amplitude через Path Analysis, в Mixpanel через Flows, в GA4 через User Explorer.
Инструментация для Journey Mapping
Чтобы journey mapping работал точно, каждый экран и каждый значимый переход должен быть зафиксирован с контекстом:
// Android — трекинг перехода с контекстом
fun navigateToProduct(product: Product, source: ScreenSource) {
analytics.track("screen_viewed") {
put("screen_name", "ProductDetail")
put("product_id", product.id)
put("source_screen", source.screenName) // откуда пришли
put("source_element", source.element) // с какого элемента
}
navigator.navigate(R.id.productDetailFragment, Bundle().apply {
putString("product_id", product.id)
})
}
Свойство source_screen + source_element — ключ к построению реальных путей. Без него вы знаете, что пользователь был на ProductDetail, но не знаете откуда.
// iOS — навигационный трекинг с источником
enum NavigationSource {
case searchResults(query: String, position: Int)
case recommendations(algorithm: String)
case pushNotification(campaignId: String)
case deepLink(url: URL)
}
func openProduct(_ product: Product, from source: NavigationSource) {
var properties: [String: Any] = [
"screen_name": "ProductDetail",
"product_id": product.id
]
switch source {
case .searchResults(let query, let position):
properties["source"] = "search"
properties["search_query"] = query
properties["search_position"] = position
case .recommendations(let algorithm):
properties["source"] = "recommendations"
properties["rec_algorithm"] = algorithm
default:
break
}
amplitude.track(eventType: "screen_viewed", eventProperties: properties)
}
Path Analysis в Amplitude
Amplitude Pathfinder строит граф реальных переходов. Для запуска нужно:
- Выбрать стартовое событие (например,
app_openedилиonboarding_started) - Выбрать конечное (например,
subscription_started) - Amplitude показывает все пути и процент пользователей на каждом
Проблема: путей слишком много, граф нечитаем. Решение — сворачивать экраны в группы через event property filters:
// Amplitude Chart config (через UI или API)
{
"chart_type": "PATHFINDER_USERS",
"start_prop": { "event": "app_opened" },
"end_prop": { "event": "checkout_completed" },
"merge_events_by": "screen_name", // группируем по экрану, а не по событию
"max_steps": 8,
"include_user_paths": true
}
Сегментация маршрутов
Journey mapping без сегментации показывает усреднённый путь, который не существует ни для одного реального пользователя. Важные срезы:
- По источнику установки — organic vs paid пользователи ведут себя по-разному
- По типу устройства — пользователи планшетов могут иметь другой flow
- По когорте — новые пользователи vs вернувшиеся
- По плану — free vs premium
# Amplitude API — получить User Paths с сегментацией
import requests
response = requests.post(
"https://amplitude.com/api/2/path",
auth=("API_KEY", "SECRET_KEY"),
json={
"start": {"event_type": "onboarding_started"},
"end": {"event_type": "subscription_started"},
"segment_definitions": [
{
"name": "New Users",
"filters": [
{"subprop_type": "user", "subprop_key": "new_user", "subprop_op": "is", "subprop_value": ["true"]}
]
}
],
"e": {
"event_type": "any",
"filters": []
},
"n": 8 # max steps
}
)
Обнаружение узких мест
После построения карты путей ищем:
Drop-off points — экраны с аномально высоким оттоком. Если на экране AddressInput уходит 35% пользователей — это проблема формы, а не самого flow.
Unexpected paths — переходы, которых не должно быть. Пользователи уходят из Checkout обратно в ProductDetail? Значит, у них есть вопрос, на который экран оформления не отвечает.
Dead ends — экраны, с которых пользователи в основном закрывают приложение, а не уходят на другой экран. Часто это экраны ошибок или пустых состояний без CTA.
Что делаем
- Проектируем трекинг навигационных событий с
source_screenиsource_element - Настраиваем Path Analysis в Amplitude или Flows в Mixpanel
- Конфигурируем сегментацию под ключевые когорты
- Строим карту основных user journeys: онбординг, конверсия, retention
- Выявляем top-3 drop-off точки и формируем гипотезы для A/B тестов
Сроки
Инструментация навигации и базовые journey reports: 2–3 дня. Полный анализ с сегментацией и гипотезами: 3–5 дней. Стоимость рассчитывается индивидуально.







