מעקב והטמעה של משפך המרות לאפליקציות מובייל

האם משתמשים נושרים בדרך לרכישה מבלי שתבינו היכן ומדוע? אנו מיישמים מעקב אירועים מקצה לקצה ומנתחים כל שלב במשפך כדי לזהות נקודות נשירה. הצוות שלנו מספק את הפרויקט במפתח מלא—מהגדרת האנליטיקה ועד אופטימיזציית המרות—תוך הבטחת פעילות אמינה ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מעקב והטמעה של משפך המרות לאפליקציות מובייל
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    868
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1288
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

לקוחות רבים פונים אלינו עם בעיה: משפך המוצר נראה כמו קופסה שחורה. אנו רואים שאחרי שלב add_to_cart, 40% מהמשתמשים אובדים, אבל הסיבה לא ידועה. כסף הולך לפרסום במקום לשיפורים. אנו פותרים זאת על ידי הטמעת מעקב מקצה לקצה מאפס. במשך 5 שנים, הטמענו מעקב עבור יותר מ-50 פרויקטים ניידים — מ-MVP ועד אפליקציות ארגוניות עם מיליוני משתמשים.

משפך המרות ללא מעקב תקין הוא דיאגרמה שצוירה מהזיכרון על ידי מנהל מוצר. עם מעקב, זה מספרים שמראים בדיוק היכן ועבור איזה פלח משתמשים כסף מחליק בין האצבעות. טעות נפוצה: לעקוב רק אחרי התחלה וסוף המשפך (checkout_started → payment_succeeded) ואז לתהות למה 60% נשירה לא ברורה. הגישה הנכונה היא לעקוב אחרי כל שלב עם מספיק הקשר כדי להסביר את סיבת הנשירה.

למה משפכים סטנדרטיים לא מספיקים

לעתים קרובות, משפכים בנויים מאירועים כלליים מדי: screen_viewed במקום checkout_payment_opened. ללא גרנולריות, אי אפשר לדעת איזה מסך או פעולה גורמים לנשירה. לדוגמה, אם 30% מהמשתמשים נושרים ב-payment_opened, זה יכול להיות בגלל טעינה איטית, היעדר Apple Pay, או שגיאת 3DS. בניסיון שלנו, אחרי הוספת 3ds_required למאפייני האירוע, הנשירה ב-onCleared() הצטמצמה בחצי — פשוט כי ראינו ש-80% מהנשירות עברו דרך 3DS וייצבנו את התהליך הזה.

איך אנחנו פותרים את זה: הטמעת Wrapper בטיחותי לטיפוסים

אנחנו מתכננים wrapper בטיחותי לטיפוסים עבור אירועי משפך, ומבטיחים שלכל שלב יש הקשר חובה. לדוגמה, בפרויקט פינטק, שמנו לב שלשלב התשלום יש נשירה של 50%. על ידי הוספת מאפיינים כמו product_viewed ו-add_to_cart, זיהינו שמשתמשים עם רק אמצעי תשלום אחד נוטים לנטוש פי 3 יותר. הפתרון היה הוספת אפשרות חלופית, שהפחיתה את הנשירה ב-25%.

עיצוב המשפך

לפני ההטמעה, אנו מגדירים:

  • שלבי משפך — אירועים אטומיים שמתאימים באופן חד-משמעי להתקדמות המשתמש
  • מאפיינים לכל שלב — מה צריך לדעת על המשתמש וההקשר באותו שלב
  • נקודות נשירה — מה קורה כשמשתמש לא ממשיך לשלב הבא

דוגמה למשפך מסחר אלקטרוני:

שלב אירוע מאפיינים מרכזיים
1 checkout_started product_id, category, source
2 checkout_address_completed product_id, quantity, cart_size
3 checkout_payment_opened cart_total, item_count, has_promo
4 payment_method_selected address_type (new/saved)
5 payment_initiated payment_methods_available
6 payment_succeeded method (card/paypal/apple_pay)
7 // 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 ) ) } method, 3ds_required
8 // 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 ]) // ... } } } order_id, total, method

שלב 7 → 8 עם // 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"]}] } ] } נותן ענף נפרד במשפך. ללא מאפיין זה, לא ברור למה יש יותר נשירה בשלב זה.

פרטי הטמעה

// 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

// 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 10M אירועים/חודש גבוהה: קבוצות, פלחים התנהגותיים לא
Firebase Analytics ללא הגבלה (GA4) בינונית: רק פלחי משתמשים לא
Mixpanel 20M אירועים/חודש גבוהה: דוחות מותאמים אישית, מקרנים לא

Amplitude מאפשר בניית משפכים מהירה יותר מאשר Firebase, במיוחד עם פילוח מורכב. Firebase מנצח במחיר — הוא חינמי כמעט לכל נפח נתונים.

ניתוח סיבות נשירה

נתוני משפך גולמיים אומרים "אנחנו מאבדים 40% כאן." הם לא אומרים למה. כדי להבין את הסיבות:

  • הקלטות סשן בשלב הנשירה (UXCam/Smartlook): מה המשתמשים עשו לפני שעזבו
  • מאפייני משתמש באנליטיקה: מי עוזב — חדש או חוזר, iOS או Android, איזה תוכנית
  • בדיקת A/B בשלב עם נשירה גבוהה: לבדוק השערה לשיפור
// Трекинг причины отвала при 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's Funnel Analysis: מאפייני אירוע וחלון המרה קובעים את דיוק הניתוח.

מה כלול בשירות שלנו

  1. ביקורת אירועים וטקסונומיה נוכחית.
  2. עיצוב מפת משפך מלאה: אירועים אטומיים עם הקשר.
  3. הטמעת wrappers בטיחותיים לטיפוסים ב-Kotlin/Swift.
  4. אינטגרציה עם Amplitude/Firebase, הגדרת דוח משפך עם פילוח.
  5. חיבור הקלטות סשן בשלבים קריטיים.
  6. תיעוד טקסונומיה והדרכת צוות באנליטיקה.
  7. תמיכה שוטפת — התאמת אירועים כשההיגיון משתנה.

לוח זמנים ומחיר

עיצוב טקסונומיה והטמעה: 2–3 ימים. דשבורדים וניתוח ראשוני: עוד 1–2 ימים. המחיר נקבע באופן אישי לאחר ביקורת. נבחן את הפרויקט שלך תוך יום אחד — צור קשר.

למה לבחור בנו

יש לנו 5 שנות ניסיון באנליטיקה ניידת — הטמענו מעקב בפינטק, מסחר אלקטרוני ו-SaaS. אנו מבטיחים שכל שלב במשפך יגיע עם הקשר ברור, לא רק שם אירוע. אחרי ההטמעה, אתה מקבל לא רק מספרים אלא כלי לאופטימיזציה יומיומית. הזמן ביקורת של המשפך הנוכחי שלך — נפרק את הטקסונומיה שלך ונציע תוכנית פעולה.

צור קשר איתנו לייעוץ — ננתח את המשפך שלך ונציע תוכנית פעולה.