# Retention Messaging API: iptal öncesi abonelik mesajı

> Apple'ın Retention Messaging API'si, abone Cancel Subscription'a dokunduğunda senin mesajını gösterir. Formatlar, koşullar, erişim ve kurulum.

Orijinal sayfa: [Retention Messaging API: iptal öncesi abonelik mesajı](https://devoria.fr/tr/blog/retention-messaging-api-abonelik-iptal-mesaji)
Yazar: [Mehdi Azizi](https://devoria.fr/tr/mehdi-azizi)
Yayın: 2026-11-04
İçeriğin son gözden geçirilmesi: 2026-11-04


Retention Messaging API, Apple'ın sunucudan sunucuya çalışan bir hizmeti. Bir abone Cancel Subscription'a dokunduğu anda ona senin mesajını gösteriyor. Mesaj, iptal onaylanmadan önce bir onay sayfasında çıkıyor. **Aboneliğinin değerini hatırlatabilir, başka bir plan ya da promosyon teklifi önerebilir, ama iptal butonu her zaman orada kalır.** API Temmuz 2025'ten beri önizleme aşamasında, erişim talep üzerine veriliyor. Apple ayrıca 2026 sonbaharı için App Store Connect içinde daha basit bir sürüm duyurdu.

Bu rehber API'nin neyi gösterdiğini, ne zamandan beri var olduğunu, kimlerin kullanabileceğini, koşullarını ve kurulumunu anlatıyor. Her şey Apple'ın dokümantasyonundan ve bu konuya ayrılmış WWDC26 oturumundan geliyor. Hepsini 3 Kasım 2026'da tekrar okudum.

iOS uygulamalarımda abonelik satıyorum: sosyal medya engelleyici Solys, trading simülatörü TradaZen, yapay zekayla kıyafet deneme uygulaması Nolera ve Vigie. 25 Ekim 2026'da dördü için de API erişimi istedim ve mesajlarını tüm dillerde hazırladım. 28 Ekim itibarıyla Apple'ın onayı henüz gelmemişti. Yani bu rehber kuralı ve benim hazırlığımı anlatıyor, henüz sonuçları değil.

## Retention Messaging API ne yapar

[Apple'ın dokümantasyonuna](https://developer.apple.com/documentation/retentionmessaging) göre API, bir müşteri aboneliğin detay sayfasına baktığında ve belki iptal etmek üzereyken sistemin göstereceği mesajı seçmene izin veriyor. Mesajlarını önceden, her ürün ve her dil için hazırlıyorsun.

Akış hep aynı:

1. Abone aboneliğini açar, örneğin Apple Account, Subscriptions yolundan ya da App Store'dan.
2. Cancel Subscription'a dokunur.
3. Sistem, senin mesajını içeren bir onay sayfası (Confirm Cancellation) gösterir.
4. Yine de iptal edebilir, aboneliğini koruyabilir ya da mesajının önerdiğini kabul edebilir.

Mesaj iOS 15.1 ve iPadOS 15.1 ya da daha yenisinde, visionOS 1'de ve macOS 14 ya da daha yenisinde görünür.

## Ne zamandan beri ve kimin için

| Tarih        | Apple'a göre neler değişti                                        |
| ------------ | ----------------------------------------------------------------- |
| 16 Tem. 2025 | Sürüm 1.0: API'nin ilk önizlemesi                                 |
| 9 Ara. 2025  | Gerçek zamanlı kullanım için sunucu performans testi              |
| 31 Mart 2026 | Mesajlarda madde işaretleri, gerçek zamanlı adresin API ile ayarı |
| 27 Nis. 2026 | 12 ay taahhütlü aylık abonelik desteği                            |
| Haziran 2026 | WWDC26: App Store Connect içinde bir modül duyurusu               |

Tarihler [API sürüm günlüğünden](https://developer.apple.com/documentation/retentionmessaging/retention-messaging-changelog) geliyor, sonuncusu hariç: o WWDC26 oturumundan. API hâlâ önizleme aşamasında. Dokümantasyon seni bir [erişim talep formuna](https://developer.apple.com/contact/request/retention-messaging-api/) yönlendiriyor, bunun için geliştirici hesabınla giriş yapman gerekiyor.

WWDC26'da [Explore Retention Messaging in App Store Connect](https://developer.apple.com/videos/play/wwdc2026/309/) oturumu, App Store Connect içinde kod yazmadan ayarlanabilen bir modül tanıttı. Apple bunu "herkese açık" diye niteliyor. Gerçek zamanlı sürüm ise talep üzerine kalıyor. [App Store yenilikler sayfası](https://developer.apple.com/app-store/whats-new/) modülü "bu sonbahar" için duyuruyor. **3 Kasım 2026 itibarıyla App Store Connect yardımında ona ayrılmış bir sayfa hâlâ yok, 28 Ekim'de de modül hesabımda görünmüyordu.**

API, otomatik yenilenen abonelik satan uygulamaları ilgilendiriyor. Sadece büyük yayıncılara özel değil: RevenueCat, [22 milyon mesaj üzerine yaptığı çalışmada](https://www.revenuecat.com/blog/growth/apple-retention-messaging-benchmarks) küçük uygulamaların da erişim isteyebileceğini belirtiyor.

## 4 mesaj türü

| Tür               | Abonenin gördüğü                                  | Varsayılan mesaj | Gerçek zamanlı |
| ----------------- | ------------------------------------------------- | ---------------- | -------------- |
| Metin             | Bir başlık, bir metin, en fazla beş madde işareti | Evet             | Evet           |
| Görselli metin    | Aynısı, bir görselle birlikte                     | Evet             | Evet           |
| Plan değişikliği  | Bir metin ve aynı gruptan başka bir abonelik      | Hayır            | Evet           |
| Promosyon teklifi | Bir metin ve indirimli fiyatla devam etme teklifi | Hayır            | Evet           |

[Mesajların hazırlanması](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messages) sayfasına göre varsayılan mesaj yalnızca görselli ya da görselsiz bir metin olabilir. **API ile bir teklif ya da başka bir plan önermek, gerçek zamanlı yanıt vermeyi gerektiriyor.** App Store Connect'te duyurulan modül ise sunucu olmadan teklifli bir mesaj sunacak.

Promosyon teklifi, App Store Connect'te oluşturduğun tekliftir. [Promosyon teklifleri yardım sayfasına](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions) göre mevcut ve eski aboneleri hedefler. Mesajların hazırlanması sayfasına göre, bir elde tutma mesajında onu imzalayan senin sunucundur. Plan değişikliği aynı gruptan bir abonelik önerir. Bu tekliflere yeniysen önce [teklif kodları ve promosyon teklifleri](https://devoria.fr/tr/blog/app-store-connect-offer-code-promosyon-kodu) rehberimi oku.

## Neler gösterebilirsin: kesin sınırlar

| Öğe                    | Apple'ın sınırı                                             |
| ---------------------- | ----------------------------------------------------------- |
| Başlık                 | En fazla 66 karakter                                        |
| Metin                  | En fazla 144 karakter                                       |
| Madde işaretleri       | En fazla 5                                                  |
| Tam genişlik görsel    | Şeffaflıksız PNG, 3.840 px genişlik, 160-2.160 px yükseklik |
| Madde işareti görseli  | 1.024 × 1.024 px                                            |
| Uygulama başına görsel | En fazla 2.000                                              |

Uzunluklar [mesaj gönderme isteğinin gövdesi](https://developer.apple.com/documentation/retentionmessaging/uploadmessagerequestbody) açıklamasından, formatlar ise [görsel gönderme](https://developer.apple.com/documentation/retentionmessaging/upload-image) sayfasından geliyor. Apple ayrıca hem açık hem koyu modda iyi görünen görseller istiyor.

Her mesaj ve her görsel Apple tarafından inceleniyor. Durumları `PENDING`'den `APPROVED`'a geçiyor ve sistem yalnızca onaylananları gösteriyor. Sandbox'ta onay otomatik. Dokümantasyon net bir içerik kuralı koyuyor: yanıltıcı ya da yanlış hiçbir şey gönderme.

## Karşılaman gereken koşullar

- **Her ürün için, her dilde bir varsayılan mesaj.** O olmadan o dilde hiçbir şey görünmez. Sunucun yanıt vermezse yedek de odur.
- **Onaylanmış mesajlar ve görseller**, yayına almadan önce.
- **Gerçek zamanlı için hızlı bir sunucu.** [Gerçek zamanlı adresin kurulumu](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messaging-endpoint) sayfası geçerli bir SSL sertifikası, TLS 1.2 ve production'da 700 ms'nin altında yanıt istiyor. Bunu aşarsa istek başarısız olur ve varsayılan mesaj gösterilir.
- **Sandbox'ta başarılı bir performans testi**, production adresini bildirmeden önce.
- **Uygulama doğrulaması.** Apple'ın her isteği uygulamanın kimliğini, `appAppleId`'yi içerir. Seninkiyle eşleşmiyorsa Apple yanıt vermemeni istiyor.

Gerçek zamanlı istek sana orijinal işlemin kimliğini, ürünü ve cihazın dilini verir. Mesajı kendi kurallarına göre seçmek sana kalmış.

## Retention Messaging'i kurmak: üç yol

| Yol                      | Kimin için                            | Ne gerekiyor                                  |
| ------------------------ | ------------------------------------- | --------------------------------------------- |
| App Store Connect modülü | Herkes, çıktığında                    | Kod yok; metin, görsel ya da teklif           |
| API, kendi sunucunla     | Back-end'i olanlar                    | Apple erişimi, HTTPS adresi, performans testi |
| API, RevenueCat ile      | Zaten RevenueCat kullanan uygulamalar | Apple erişimi, panelde ayarlar                |

Birden fazla ayar bir arada olduğunda Apple, WWDC26 oturumunda izlenen sırayı açıklıyor: önce gerçek zamanlı yanıt. O yoksa ya da hatalıysa App Store Connect ayarı. O da yoksa API ile yapılandırılmış varsayılan mesaj.

### Kendi sunucunla

1. Apple'ın formuyla erişim iste.
2. Önce görsellerini, sonra her biri için bir başlık ve metinle mesajlarını gönder.
3. Onaylanmalarını bekle, sonra her abonelik ve her dil için bir varsayılan mesaj bildir.
4. Gerçek zamanlı için sunucunda `Get Retention Message` adresini oluştur ve sandbox'ta bildir.
5. Sandbox'ta, bir test işlemiyle [performans testini](https://developer.apple.com/documentation/retentionmessaging/initiate-performance-test) başlat.
6. Test başarılı olunca production adresini bildir.

### RevenueCat ile

Benim seçtiğim yol bu: yazılacak sunucu yok ve uygulamalarım zaten RevenueCat'ten geçiyor, bunu [RevenueCat ve iOS uygulama içi abonelik](https://devoria.fr/tr/blog/revenuecat-ios-uygulama-ici-abonelik-kurulumu) yazımda anlatıyorum. [RevenueCat dokümantasyonuna](https://www.revenuecat.com/docs/platform-resources/apple-platform-resources/apple-retention-messaging-api) göre:

1. Apple'ın formunda vermen gereken adres, RevenueCat'in App Store uygulamanın ayarlarında gösterdiği adres.
2. Onaydan sonra Lifecycle'ı, ardından Retention'ı aç ve sandbox adresini bağla.
3. Aktif bir sandbox ya da TestFlight aboneliğiyle performans testini başlat. Bir saate kadar sürebilir.
4. Önce dil dil bir varsayılan mesaj oluştur.
5. Sonra kurallarla gerçek zamanlı mesajlar ekle. Bunlardan biri, "Is in free trial", ücretsiz denemedeki kişileri hedefliyor.
6. Production'a geç: sandbox ayarları aktarılmıyor, mesajları yeniden oluşturman gerekiyor.

## Tuzak kurmadan elde tutan bir mesaj yazmak

Metin sabit ve gösterilmeden önce Apple tarafından inceleniyor. Yani okuyan kişiden de, okuduğu günden de bahsedemez. TradaZen için hazırladığım varsayılan mesajın Türkçe hali şöyle:

```text
Başlık (59 karakter):
Trade öğrenmek istiyordun, şimdi körlemesine mi gidiyorsun?

Metin (125 karakter):
Antrenman olmadan her hatayı gerçek paran öder. Burada hatalar hiçbir şeye mal olmaz. Günlük serin, ligin ve derslerin durur.
```

Dört uygulamam için kendime koyduğum kurallar:

- **Başlık kişiyi hedefine geri götürür**, soru şeklinde. Onu utandırmaz.
- **Metin tam olarak neyin durduğunu söyler.** Veriler kaldığında erişimin "kilitlendiğini" yazarım, asla "silineceğini" değil.
- **Zaman kelimesi yok**, "yarın" ya da "bugün" gibi: aynı metin dönemin herhangi bir anında gösteriliyor.
- **Kazanç vaadi yok**, sahte aciliyet yok. Trading sayesinde hayatını değiştirmeyi vaat eden ilk bir başlık, gönderilmeden önce elendi. [Guideline 5.6](https://developer.apple.com/app-store/review/guidelines/#5.6) her türlü manipülatif uygulamayı yasaklıyor ve TradaZen'in paywall'u bu gerekçeyle zaten reddedilmişti, bunu [guideline 5.6 ve paywall](https://devoria.fr/tr/blog/guideline-5-6-paywall-red-app-store) yazımda anlatıyorum.
- **Her dilin kendi metni var**, çevrilmiş uygulamanın kelime dağarcığıyla ve karakterine kadar sayılmış.

TradaZen için yıllık abonelikte denemede olan kişilere yönelik gerçek zamanlı bir mesaj da planlıyorum. Aynı gruptan daha ucuz bir yıllık plan önerecek, çünkü rakamlarım bu kişilerin uygulamayı ödeme yapanlar kadar kullandığını gösteriyor: reddettikleri şey fiyat. Bu ayar Apple'ın onayını bekliyor.

## Ne bekleyebilirsin

Mucize bekleme. Apple, onay sayfasına geldikten sonra aboneliğini koruyan abonelerin oranına kurtarma oranı diyor. WWDC26 oturumunda Apple, Retention Messaging'i benimseyen aboneliklerin bu oranda ortalama 1,4 puan kazandığını açıklıyor. Promosyon teklifli mesajlar gözlemlenen en iyi kazancı, 5,5 puanı sağlıyor ve sonuçlar geliştiriciden geliştiriciye değişiyor. RevenueCat'in çalışması ise abonelerin promosyon tekliflerinin yalnızca yaklaşık %1,1'ini, plan değişikliklerinin de %0,6'sını kabul ettiğini tespit ediyor.

Yani mesaj, öncesindeki işin yerini tutmuyor. Bir dakika içinde iptal edilen ücretsiz deneme, paywall'da ve ilk oturumlarda belirleniyor: nedenler ve çözümler [iptal edilen ücretsiz deneme](https://devoria.fr/tr/blog/ucretsiz-deneme-hemen-iptal-ediliyor-neden-ne-yapmali) rehberimde, denemenin oluşturulması da [tanıtım teklifi](https://devoria.fr/tr/blog/app-store-connect-introductory-offer-ios-ucretsiz-deneme) yazımda.

## Mesajdan önce aboneliğini hazırlamak

[iOS & Android Kit](https://devoria.fr/tr/kits/ios), uygulamalarımın başlangıç kodundan yola çıkıyor: onboarding, paywall ve abonelikler zaten kodlanmış durumda ve dört adımlı yol seni kendi temponda App Store'a kadar götürüyor. App Store Connect'teki ürünlerden paywall'a kadar tüm zincir [iOS uygulama içi abonelik](https://devoria.fr/tr/expertise/ios-uygulama-ici-abonelik) sayfasında anlatılıyor.

İlk yayınına hazırlanıyorsan [ücretsiz teşhisini yap](https://devoria.fr/tr/diagnostic): projeni gerçekte neyin tıkadığını söyler ve sana Apple redlerine karşı kontrol listemi gönderir.

## Sık sorulan sorular

### Apple'ın Retention Messaging API'si nedir?

Bir abone Cancel Subscription'a dokunduğunda ona gösterilecek mesajı seçen, sunucudan sunucuya çalışan bir hizmet. Mesaj, iptalden önce bir onay sayfasında görünür. Aboneliğin değerini hatırlatabilir, başka bir plan ya da promosyon teklifi önerebilir.

### Retention Messaging tüm geliştiricilere açık mı?

API bir önizleme ve erişim Apple'dan talep üzerine veriliyor. WWDC26'da Apple, App Store Connect içinde herkese açık, 2026 sonbaharı için planlanan bir modül duyurdu. 3 Kasım 2026 itibarıyla App Store Connect yardımı onu henüz anlatmıyor.

### Mesaj hangi iOS sürümlerinde görünüyor?

iOS 15.1 ve iPadOS 15.1 ya da daha yenisinde, visionOS 1'de ve macOS 14 ya da daha yenisinde. Daha eski bir cihazda iptal mesajsız gerçekleşir.

### Mesaj abonenin iptal etmesini engelliyor mu?

Hayır. Onay sayfasında iptal butonu kalıyor. Abone aboneliğini koruyabilir ya da önerilen teklifi veya planı da kabul edebilir.

### İptal anında indirim önerilebilir mi?

Evet. API ile bu bir promosyon teklifi mesajı, yalnızca gerçek zamanlı: teklif App Store Connect'te oluşturulur ve senin sunucun tarafından imzalanır. App Store Connect'te duyurulan modül de teklifli mesaja izin veriyor. Plan değişikliği ise aynı gruptan başka bir abonelik önerir.

### Bir elde tutma mesajı kaç karakter olabilir?

Başlık en fazla 66 karakter, metin en fazla 144. En fazla beş madde işareti ve şeffaflıksız bir PNG görsel ekleyebilirsin. Her dilin kendi varsayılan mesajına ihtiyacı var.

### Retention Messaging için sunucu gerekiyor mu?

Varsayılan mesajlar için barındırman gereken bir adres yok: onları göndermek ve bildirmek için API'yi çağırman yeterli. RevenueCat ile sunucu rolünü o üstleniyor. Gerçek zamanlı kullanım, 700 ms'nin altında yanıt veren bir HTTPS adresi istiyor. App Store Connect'te duyurulan modül ise kod yazmadan ayarlanıyor.


## Projen

[iOS & Android Kit](https://devoria.fr/tr/kits/ios): Claude Code ile iPhone ve Android uygulamanı yap: uygulamalarımın başlangıç kodu, mağazalara kadar giden yol ve tüm kitler. ₺5.499.

[Analiz: Seni iPhone uygulamandan ayıran ne?](https://devoria.fr/tr/diagnostic): 7 soru, 60 saniye: iPhone uygulamanı yayınlamanı asıl neyin engellediğini, 4 adımlık yolunu ve sana uygun kiti öğren.
