Трекінг та оптимізація воронки конверсії мобільного застосунку

Багато клієнтів приходять до нас з проблемою: воронка продукту виглядає як чорна скринька. Ми бачимо, що після кроку `add_to_cart` втрачається 40% користувачів, але чому — невідомо. У підсумку гроші йдуть на рекламу, а не на доопрацювання. Ми вирішуємо це впровадженням наскрізного трекінгу з нуля. З

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Трекінг та оптимізація воронки конверсії мобільного застосунку
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Багато клієнтів приходять до нас з проблемою: воронка продукту виглядає як чорна скринька. Ми бачимо, що після кроку add_to_cart втрачається 40% користувачів, але чому — невідомо. У підсумку гроші йдуть на рекламу, а не на доопрацювання. Ми вирішуємо це впровадженням наскрізного трекінгу з нуля. За 5 років ми реалізували трекінг для 50+ мобільних проектів — від MVP до enterprise-застосунків з мільйонами користувачів. Якщо ви хочете отримати консультацію з налаштування трекінгу у вашому застосунку, напишіть нам.

Воронка конверсії без правильного трекінгу — це діаграма, яку продакт малює по пам'яті. З трекінгом — це цифри, які показують, де саме і у якого сегменту користувачів гроші йдуть крізь пальці. Стандартна помилка: трекати тільки початок і кінець воронки (checkout_startedpayment_succeeded) і потім дивуватися, що 60% drop-off незрозумілі. Правильний підхід — трекати кожен крок з контекстом, достатнім для пояснення причини відвалу.

Чому стандартна воронка не працює?

Часто воронку будують із занадто загальних подій: screen_viewed замість checkout_payment_opened. Без деталізації неможливо зрозуміти, який саме екран або дія викликає відтік. Наприклад, якщо на кроці payment_opened втрачається 30% користувачів — це може бути пов'язано з довгим завантаженням, відсутністю Apple Pay або помилкою 3DS. У нашій практиці був випадок: після додавання 3ds_required у властивості події drop-off на кроці payment_initiated скоротився вдвічі — просто тому, що ми побачили, що 80% тих, хто відвалився, проходили 3DS, і оптимізували цей процес.

Як налаштувати трекінг abandonment?

Abandonment — ключова подія, яку часто упускають. Коли користувач іде, не завершивши воронку, потрібно зафіксувати останній крок, час на ньому та можливі помилки. Ми реалізуємо це через onCleared() у ViewModel або аналог у SwiftUI. Це дає повну картину: хто пішов, на якому етапі і чому.

Проектування воронки

Перед реалізацією потрібно визначити:

  • Кроки воронки — атомарні події, що однозначно відповідають прогресу користувача
  • Властивості кожного кроку — що потрібно знати про користувача та контекст на цьому кроці
  • Точки відвалу — що відбувається з користувачем, який не перейшов до наступного кроку

Приклад воронки e-commerce:

Крок Подія Ключові властивості
1 product_viewed product_id, category, source
2 add_to_cart product_id, quantity, cart_size
3 checkout_started cart_total, item_count, has_promo
4 checkout_address_completed address_type (new/saved)
5 checkout_payment_opened payment_methods_available
6 payment_method_selected method (card/paypal/apple_pay)
7 payment_initiated method, 3ds_required
8 payment_succeeded order_id, total, method

Крок 7 → 8 з 3ds_required = true дасть окрему гілку воронки. Без цієї властивості незрозуміло, чому на цьому кроці більше drop-off.

Реалізація трекінгу

// Android — типобезпечний wrapper для воронки object CheckoutFunnel { fun trackStepCompleted(step: CheckoutStep, props: Map<String, Any> = emptyMap()) { val eventName = when (step) { CheckoutStep.ADDRESS -> "checkout_address_completed" CheckoutStep.PAYMENT_OPENED -> "checkout_payment_opened" CheckoutStep.PAYMENT_METHOD_SELECTED -> "checkout_payment_method_selected" CheckoutStep.PAYMENT_INITIATED -> "payment_initiated" CheckoutStep.PAYMENT_SUCCEEDED -> "payment_succeeded" CheckoutStep.PAYMENT_FAILED -> "payment_failed" } val baseProps = mapOf( "session_id" to sessionManager.currentSessionId, "cart_id" to cartManager.currentCartId, "user_id" to authManager.currentUserId, "timestamp" to System.currentTimeMillis() ) analyticsClient.track(eventName, baseProps + props) } } // Використання в ViewModel checkoutViewModel.onAddressConfirmed.observe(this) { address -> CheckoutFunnel.trackStepCompleted( CheckoutStep.ADDRESS, mapOf( "address_type" to if (address.isNew) "new" else "saved", "country" to address.country ) ) } 
// iOS — аналогічний підхід enum CheckoutStep { case addressCompleted(isNew: Bool, country: String) case paymentOpened(availableMethods: [String]) case paymentMethodSelected(method: String, requires3DS: Bool) case paymentSucceeded(orderId: String, total: Double, method: String) case paymentFailed(errorCode: String, method: String) } extension AnalyticsService { func track(checkoutStep: CheckoutStep) { let (eventName, props) = checkoutStep.analyticsPayload amplitude.track(eventType: eventName, eventProperties: props) } } extension CheckoutStep { var analyticsPayload: (String, [String: Any]) { switch self { case .paymentMethodSelected(let method, let requires3DS): return ("checkout_payment_method_selected", [ "payment_method": method, "requires_3ds": requires3DS, "cart_id": CartManager.shared.currentCartId ]) // ... } } } 

Побудова воронки в Amplitude

В Amplitude Funnel Analysis:

// Amplitude Chart — налаштування через UI або API { "chart_type": "FUNNEL", "steps": [ { "event_type": "product_viewed" }, { "event_type": "add_to_cart" }, { "event_type": "checkout_started" }, { "event_type": "payment_succeeded" } ], "funnel_type": "ordered", // строгий порядок "conversion_window": 7, // 7 днів на проходження воронки "conversion_window_unit": "days", "segment_definitions": [ { "name": "iOS users", "filters": [{"subprop_key": "platform", "subprop_value": ["iOS"]}] }, { "name": "Android users", "filters": [{"subprop_key": "platform", "subprop_value": ["Android"]}] } ] } 

conversion_window — критичний параметр. Для покупки товару 7 днів — розумно. Для підписки SaaS може бути і 30 днів. Занадто коротке вікно занижує конверсію.

Firebase Analytics Funnels

// Firebase funnel через Google Analytics // Налаштовується в GA4 → Explore → Funnel Exploration // Через API: const { BetaAnalyticsDataClient } = require('@google-analytics/data'); const client = new BetaAnalyticsDataClient(); const [response] = await client.runFunnelReport({ property: 'properties/YOUR_PROPERTY_ID', funnelSteps: [ { name: 'Product Viewed', filterExpression: { filter: { fieldName: 'eventName', stringFilter: { value: 'product_viewed' } } } }, { name: 'Add to Cart', filterExpression: { filter: { fieldName: 'eventName', stringFilter: { value: 'add_to_cart' } } } }, { name: 'Purchase', filterExpression: { filter: { fieldName: 'eventName', stringFilter: { value: 'purchase' } } } } ], dateRanges: [{ startDate: '30daysAgo', endDate: 'today' }] }); 

Порівняння інструментів для трекінгу

Інструмент Безкоштовний ліміт Гнучкість сегментів Сесійні записи
Amplitude 10 млн подій/міс Висока: когорти, поведінкові сегменти Ні
Firebase Analytics Безліміт (GA4) Середня: лише користувацькі сегменти Ні
Mixpanel 20 млн подій/міс Висока: кастомні звіти, прожектори Ні

Amplitude дозволяє будувати воронки швидше, ніж Firebase, особливо при складній сегментації. Firebase виграє в ціні — він безкоштовний для практично будь-яких обсягів даних.

Аналіз причин drop-off

Чисті дані воронки кажуть «тут втрачаємо 40%». Вони не кажуть чому. Для розуміння причин:

  • Сесійні записи на кроці drop-off (UXCam/Smartlook): що робили користувачі перед виходом
  • Властивості користувачів в аналітиці: хто йде — нові чи повернені, iOS чи Android, який план
  • A/B тест на кроці з високим drop-off: перевірити гіпотезу про покращення
// Трекінг причини відвалу при abandonment class PaymentViewModel : ViewModel() { override fun onCleared() { super.onCleared() if (!paymentCompleted) { CheckoutFunnel.trackStepCompleted( CheckoutStep.ABANDONED, mapOf( "last_step" to currentStep.name, "time_on_step_seconds" to stepTimer.elapsed(), "error_shown" to lastErrorShown ) ) } } } 
Як інтерпретувати результати воронки

Після налаштування трекінгу важливо не тільки дивитися на відсотки, але й порівнювати сегменти. Наприклад, конверсія на iOS може бути 15%, а на Android — 10%. Це привід перевірити, чи немає відмінностей в UI/UX на різних платформах. Також дивіться на час між кроками: різке збільшення часу на кроці може вказувати на роздратування користувача.

Підхід опису воронки базується на документації Amplitude по Funnel Analysis: атрибути подій та вікно конверсії визначають точність аналізу.

Що входить в роботу

  1. Аудит поточних подій та таксономії.
  2. Проектування повної карти воронки: атомарні події з контекстом.
  3. Реалізація типобезпечного wrapper'а на Kotlin/Swift.
  4. Інтеграція з Amplitude/Firebase, налаштування Funnel Report з сегментацією.
  5. Підключення Session Replay на критичних кроках.
  6. Документація таксономії та навчання команди аналітиці.
  7. Постійна підтримка — коригування подій при зміні логіки.

Строки та вартість

Проектування таксономії та реалізація трекінгу: 2–3 дні. Дашборди та первинний аналіз: ще 1–2 дні. Вартість розраховується індивідуально після аудиту. Оцінимо проект за 1 день — напишіть нам.

Чому обирають нас

У нас 5 років досвіду в мобільній аналітиці — ми впроваджували трекінг у fintech, e-commerce, SaaS. Гарантуємо, що кожен крок воронки супроводжуватиметься зрозумілим контекстом, а не просто ім'ям події. Після впровадження ви отримуєте не тільки цифри, але й інструмент для щоденної оптимізації. Замовте аудит поточної воронки — розберемо вашу таксономію і запропонуємо план дій.

Зв'яжіться з нами для консультації — розберемо вашу воронку і запропонуємо план дій.