הפעלה מחדש של מנויים שנטשו: קמפיינים להחזרת משתמשים לאפליקציות מובייל
המשתמש ביטל את המנוי—וה-MRR שלך יורד. בממוצע, ניתן להחזיר 20% עד 30% מהביטולים באמצעות קמפיין win-back מוגדר כראוי. במשך 5 שנים, שילבנו תרחישים כאלה עבור 15+ אפליקציות מובייל עם קהל כולל של למעלה ממיליון משתמשים. בממוצע, הטמעת win-back חסכה ללקוחותינו 5,000–20,000 דולר בחודש ב-MRR שהוחזר. מאמר זה מספק קוד מוכן לשימוש, מדדים מרכזיים ומלכודות אמיתיות. לדוגמה, אפליקציית כושר החזירה 15,000 דולר ב-MRR חודשי לאחר הטמעת אסטרטגיית win-back מפולחת. קמפיין win-back מוגדר היטב מחזיר פי 3 יותר הכנסות מאשר קמפיין push כללי.
מקרה טיפוסי: אפליקציית כושר איבדה 40% מהמנויים לאחר החודש הראשון. הטמעת win-back עם התראות push והצעות מפולחות הגדילה את ה-LTV המופעל מחדש ב-35% ברבעון. המפתח היה שילוב של Apple Win-Back Offers (iOS 18+), Promotional Offers וקירות תשלום מותאמים אישית.
ללא win-back, אתה מאבד עד 10% מה-MRR החודשי רק ממנויים שביטלו. גישה שיטתית מחזירה 15–25% מהמשתמשים הללו. עם זאת, תזמון ההצעה הוא קריטי: שליחת push תוך 3–7 ימים מהביטול מכפילה את ההמרה לעומת שבוע של חוסר פעילות. המפתח הוא לא להציק: תדירות של לא יותר מ-push אחד בכל 7 ימים וכיבוד בחירת המשתמש. בואו נצלול ליישום הטכני.
שלושה ערוצי Win-Back
- התראת push עם קישור עמוק להצעה—נשלחת דרך FCM/APNs למשתמשים שביטלו לפני N ימים.
- הצעה בתוך האפליקציה בפתיחה הבאה—לאלה שעדיין פותחים את האפליקציה לאחר הביטול.
- Apple Win-Back Offers—מנגנון Apple מקורי (iOS 18+) שמציג הצעות אוטומטית דרך App Store ללא תשתית שרת.
איך Apple Win-Back Offers עובדות?
הכלי החדש ביותר מוגדר ב-App Store Connect → Subscriptions → Win-Back Offers. Apple עצמה קובעת משתמשים זכאים (מנויים לשעבר של קבוצת מנויים ספציפית) ומציגה את ההצעה בעמוד האפליקציה ב-App Store. פרטים נוספים בתיעוד Win-Back Offers של Apple. בצד הלקוח, עליך לטפל בעסקה שמגיעה בעת ההפעלה:
// Слушаем Transaction.updates при запуске
for await result in Transaction.updates {
if case .verified(let transaction) = result {
if transaction.offerType == .winBackOffer {
// Пользователь вернулся через Win-Back — разблокируем
await restoreSubscriptionAccess(transaction)
await transaction.finish()
// Логируем для аналитики
Analytics.logEvent("win_back_reactivated", parameters: [
"offer_id": transaction.offerID ?? "unknown",
"product_id": transaction.productID
])
}
}
} מידע נוסף על הגדרת Apple Win-Back Offers
ב-App Store Connect, עליך להגדיר לפחות הצעת win-back אחת לכל קבוצת מנויים. ההצעה יכולה להיות ניסיון חינם, הנחה קבועה או אחוז. Apple תציג אותה אוטומטית למשתמש כשהוא חוזר לעמוד האפליקציה. הלקוח מקבל עסקה עם offerType = .winBackOffer. לניפוי באגים, השתמש ב-Transaction.updates עם עסקאות מדומות ב-Xcode.הצעות Promotional ל-Win-Back (iOS 14+)
עבור iOS מתחת לגרסה 18 או ל-win-back בתוך האפליקציה, השתמש ב-Promotional Offers עם חתימה חתומה על ידי השרת:
// Определяем кандидатов для win-back
func isWinBackCandidate() async -> Bool {
// Проверяем: есть ли истёкшая транзакция и нет активной
var hasExpiredSubscription = false
var hasActiveSubscription = false
for await result in Transaction.all {
if case .verified(let tx) = result, tx.productType == .autoRenewableSubscription {
if tx.expirationDate ?? Date() < Date() {
hasExpiredSubscription = true
} else {
hasActiveSubscription = true
}
}
}
return hasExpiredSubscription && !hasActiveSubscription
}
// Показываем win-back paywall при входе в приложение
func showWinBackOfferIfNeeded() async {
guard await isWinBackCandidate() else { return }
guard let offerSignature = try? await apiClient.fetchWinBackSignature() else { return }
await MainActor.run {
presentWinBackPaywall(signature: offerSignature)
}
} התראות Push ל-Win-Back
לוגיקת שרת: בחר משתמשים שבהם // Слушаем Transaction.updates при запуске for await result in Transaction.updates { if case .verified(let transaction) = result { if transaction.offerType == .winBackOffer { // Пользователь вернулся через Win-Back — разблокируем await restoreSubscriptionAccess(transaction) await transaction.finish() // Логируем для аналитики Analytics.logEvent("win_back_reactivated", parameters: [ "offer_id": transaction.offerID ?? "unknown", "product_id": transaction.productID ]) } } } ו-// Определяем кандидатов для win-back func isWinBackCandidate() async -> Bool { // Проверяем: есть ли истёкшая транзакция и нет активной var hasExpiredSubscription = false var hasActiveSubscription = false for await result in Transaction.all { if case .verified(let tx) = result, tx.productType == .autoRenewableSubscription { if tx.expirationDate ?? Date() < Date() { hasExpiredSubscription = true } else { hasActiveSubscription = true } } } return hasExpiredSubscription && !hasActiveSubscription } // Показываем win-back paywall при входе в приложение func showWinBackOfferIfNeeded() async { guard await isWinBackCandidate() else { return } guard let offerSignature = try? await apiClient.fetchWinBackSignature() else { return } await MainActor.run { presentWinBackPaywall(signature: offerSignature) } } . שלח push דרך APNs:
{
"aps": {
"alert": {
"title": "Вернитесь к Premium",
"body": "Специальное предложение: первый месяц за полцены"
},
"badge": 1,
"sound": "default"
},
"deep_link": "app://paywall?offer=win_back_50&utm_source=push&utm_campaign=winback_d7"
}הקישור העמוק פותח את קיר התשלום ישירות עם הצעה שנבחרה מראש. פרמטרי UTM לניתוח המרות.
למה פילוח הוא קריטי ל-Win-Back?
הצעות פועלות טוב יותר כשהן מפולחות:
| פלח | טריגר | הצעה |
|---|---|---|
| ביטל < לפני 7 ימים | פתיחת האפליקציה הבאה | השהיה במקום ביטול (Google Play) |
| ביטל לפני 7–30 ימים | Push ביום 7 | 30% הנחה על החודש הראשון |
| ביטל לפני 30–90 ימים | Push ביום 30 | ניסיון חינם לשבועיים |
| ביטל > לפני 90 ימים | קמפיינים עונתיים | הנחה מקסימלית |
ככל שהמשתמש לא חזר יותר זמן, כך ההצעה אגרסיבית יותר—מודל סטנדרטי להחזרת משתמשים שנטשו.
השוואת ערוצים:
| ערוץ | יתרונות | חסרונות |
|---|---|---|
| Apple Win-Back Offers | ללא לוגיקת שרת, בחירה אוטומטית | רק iOS 18+, ללא גמישות בהצעות |
| Promotional Offers | עובד על iOS 14+, תנאים גמישים | דורש חתימת שרת |
| Push + קישור עמוק | חוצה פלטפורמות | תלוי בהרשאת התראות |
השוואה: Apple Win-Back Offers קלות פי 3 ליישום מאשר Promotional Offers, אבל האחרונות מציעות פי 2 יותר גמישות בתמחור. להתראות push יש המרה גבוהה פי 1.5 מאשר קירות תשלום בתוך האפליקציה לניצחונות מיידיים.
יישום שלב אחר שלב
- בדוק את תשתית המנויים הנוכחית—זהה מנויים שפגו והגדר ניטור עסקאות.
- הגדר Apple Win-Back Offers ב-App Store Connect למשתמשי iOS 18+.
- הטמע Promotional Offers עבור iOS 14–17 כגיבוי.
- הגדר פילוח בצד השרת לפי ימים מאז הביטול.
- צור מטעני התראות push עם קישורים עמוקים לקירות תשלום של win-back.
- שלב אנליטיקה למעקב אחר משפך (חשיפה → לחיצה → רכישה).
- בדוק עם משתמשי sandbox ועקוב אחר שיעור ה-win-back.
מדידת אפקטיביות
מדדים חובה:
- שיעור win-back: (הופעלו מחדש / מועמדים ל-win-back) × 100
- זמן עד להפעלה מחדש: חציון ימים בין ביטול לחזרה
- LTV של מופעלים מחדש: השווה עם LTV של משתמשים שמעולם לא ביטלו
- המרת הצעות לפי פלח: איזו הצעה עובדת הכי טוב לאיזה פלח
// Логируем показ win-back оффера
Analytics.logEvent("win_back_offer_shown", parameters: [
"days_since_cancellation": daysSinceCancellation,
"offer_type": offerType,
"segment": userSegment
]) מה כלול בעבודה
- זיהוי מועמדים ל-win-back (לקוח + שרת)
- Apple Win-Back Offers (iOS 18+) או Promotional Offers כגיבוי
- קיר תשלום בתוך האפליקציה עם הצעת win-back בפתיחה הבאה
- התראת push עם קישור עמוק להצעה
- פילוח לפי זמן מאז הביטול
- אנליטיקה: משפך חשיפה → לחיצה → רכישה
לוחות זמנים ועלות
תהליך בסיסי בתוך האפליקציה עם Promotional Offers אורך 3–5 ימים. עם תשתית push ופילוח בצד השרת—5–10 ימים. העלות מתחילה ב-2,500 דולר ליישום בסיסי. עם 5 שנות ניסיון ו-15+ אפליקציות משולבות, החזרנו למעלה ממיליון דולר בהכנסות אבודות ללקוחות. צור קשר—נעריך את הפרויקט שלך ונמליץ על הסט האופטימלי. אנו מבטיחים אינטגרציה ללא אובדן מנויים קיימים.
צור קשר לייעוץ על קמפיין ה-win-back שלך—קבל הערכה והמלצות לאפליקציה שלך.







