Apple Retention Messaging API: 구독 해지 직전 메시지
글: Mehdi Azizi
게시, 10분
Apple Retention Messaging API는 구독자가 Cancel Subscription을 누르면 내 메시지를 보여 줘요. 형식, 조건, 접근 방법, 설정까지 정리했어요.
Retention Messaging API는 Apple의 서버 간 서비스예요. 구독자가 Cancel Subscription을 누르는 순간 내 메시지를 보여 줘요. 메시지는 해지가 확정되기 전, 확인 페이지에 나타나요. 구독의 가치를 다시 알려 주거나 다른 요금제, 프로모션 오퍼를 제안할 수 있지만, 해지 버튼은 항상 그대로 남아 있어요. 이 API는 2025년 7월부터 접근 신청제 프리뷰로 제공되고 있고, Apple은 2026년 가을에 App Store Connect 안에서 쓸 수 있는 더 간단한 버전을 발표했어요.
이 가이드에서는 API가 무엇을 보여 주는지, 언제부터 있었는지, 누가 쓸 수 있는지, 조건과 설정 방법을 설명해요. 모든 내용은 Apple 문서와 이 주제를 다룬 WWDC26 세션에서 가져왔고, 2026년 11월 3일에 다시 확인했어요.
저는 제 iOS 앱들에서 구독을 판매해요. SNS 차단 앱 Solys, 트레이딩 시뮬레이터 TradaZen, AI 코디 피팅 앱 Nolera, 그리고 Vigie예요. 2026년 10월 25일에 네 앱 모두 API 접근을 신청했고, 지원하는 모든 언어로 메시지를 준비했어요. 10월 28일까지 Apple의 승인은 아직 오지 않았어요. 그래서 이 가이드는 아직 결과가 아니라 규칙과 제 준비 과정을 다뤄요.
Retention Messaging API가 하는 일
Apple 문서에 따르면, 이 API로 고객이 구독 상세 페이지를 보며 해지하려 할 때 시스템이 보여 줄 메시지를 직접 고를 수 있어요. 메시지는 제품별, 언어별로 미리 준비해 둬요.
흐름은 항상 같아요.
- 구독자가 구독을 열어요. 예를 들어 Apple Account, Subscriptions에서, 또는 App Store에서요.
- Cancel Subscription을 눌러요.
- 시스템이 내 메시지가 담긴 확인 페이지(Confirm Cancellation)를 보여 줘요.
- 구독자는 그래도 해지하거나, 구독을 유지하거나, 메시지가 제안하는 것을 받아들일 수 있어요.
메시지는 iOS 15.1 및 iPadOS 15.1 이상, visionOS 1, macOS 14 이상에서 보여요.
언제부터, 누구를 위해
| 날짜 | Apple에 따른 변경 사항 |
|---|---|
| 2025년 7월 16일 | 버전 1.0: API 첫 프리뷰 |
| 2025년 12월 9일 | 실시간용 서버 성능 테스트 |
| 2026년 3월 31일 | 메시지 내 글머리 기호, API로 실시간 주소 설정 |
| 2026년 4월 27일 | 12개월 약정 월간 구독 지원 |
| 2026년 6월 | WWDC26: App Store Connect 모듈 발표 |
날짜는 API 변경 기록에서 가져왔고, 마지막 항목만 WWDC26 세션에서 가져왔어요. API는 여전히 프리뷰예요. 문서는 접근 신청 양식으로 안내하고, 이 양식은 개발자 계정 로그인이 필요해요.
WWDC26의 Explore Retention Messaging in App Store Connect 세션은 App Store Connect 안에서 코드 없이 설정하는 모듈을 소개해요. Apple은 이걸 "모두에게 열려 있다"고 해요. 반면 실시간 버전은 계속 신청제예요. App Store 새 소식 페이지는 이 모듈을 "올가을"로 예고하고 있어요. 2026년 11월 3일 기준으로 App Store Connect 도움말에는 아직 이 모듈을 다룬 페이지가 없고, 10월 28일에 제 계정에도 모듈이 보이지 않았어요.
이 API는 자동 갱신 구독을 판매하는 앱이 대상이에요. 대형 퍼블리셔 전용이 아니에요. RevenueCat은 2,200만 건의 메시지 분석에서 작은 앱도 접근을 신청할 수 있다고 밝혔어요.
메시지 유형 4가지
| 유형 | 구독자가 보는 것 | 기본 메시지 | 실시간 |
|---|---|---|---|
| 텍스트 | 제목, 본문, 최대 5개의 글머리 기호 | 가능 | 가능 |
| 이미지 포함 텍스트 | 위와 같고 이미지 추가 | 가능 | 가능 |
| 요금제 변경 | 본문과 같은 그룹의 다른 구독 | 불가 | 가능 |
| 프로모션 오퍼 | 본문과 할인된 가격으로 계속 쓰는 오퍼 | 불가 | 가능 |
메시지 준비 페이지에 따르면 기본 메시지는 이미지가 있든 없든 텍스트만 가능해요. API로 오퍼나 다른 요금제를 제안하려면 실시간으로 응답해야 해요. 반면 App Store Connect에 예고된 모듈은 서버 없이 오퍼가 담긴 메시지를 제공할 예정이에요.
프로모션 오퍼는 App Store Connect에서 직접 만드는 오퍼예요. 프로모션 오퍼 도움말에 따르면 현재 구독자와 과거 구독자를 대상으로 해요. 메시지 준비 페이지에 따르면 리텐션 메시지에서는 내 서버가 오퍼에 서명해요. 요금제 변경은 같은 그룹의 구독을 제안해요. 이런 오퍼가 처음이라면 먼저 오퍼 코드와 프로모션 오퍼 가이드를 읽어 보세요.
표시할 수 있는 것: 정확한 제한
| 요소 | Apple 제한 |
|---|---|
| 제목 | 최대 66자 |
| 본문 | 최대 144자 |
| 글머리 기호 | 최대 5개 |
| 전체 너비 이미지 | 투명도 없는 PNG, 가로 3,840px, 세로 160-2,160px |
| 글머리 기호 이미지 | 1,024 × 1,024px |
| 앱당 이미지 | 최대 2,000개 |
길이는 메시지 업로드 요청 본문 설명에서, 형식은 이미지 업로드 페이지에서 가져왔어요. Apple은 라이트 모드와 다크 모드 모두에서 잘 보이는 이미지도 요구해요.
모든 메시지와 이미지는 Apple이 검토해요. 상태가 PENDING에서 APPROVED로 바뀌고, 시스템은 승인된 것만 보여 줘요. 샌드박스에서는 자동으로 승인돼요. 문서에는 명확한 콘텐츠 규칙이 있어요. 오해를 일으키거나 부정확한 내용은 보내지 말 것.
충족해야 할 조건
- 제품마다, 언어마다 기본 메시지 하나. 없으면 그 언어에서는 아무것도 표시되지 않아요. 서버가 응답하지 않을 때의 대비책이기도 해요.
- 승인된 메시지와 이미지가 출시 전에 있어야 해요.
- 실시간을 쓰려면 빠른 서버. 실시간 주소 설정 페이지는 유효한 SSL 인증서, TLS 1.2, 프로덕션에서 700ms 이내 응답을 요구해요. 이를 넘으면 요청이 실패하고 기본 메시지가 표시돼요.
- 샌드박스 성능 테스트 통과가 프로덕션 주소 등록 전에 필요해요.
- 앱 확인. Apple의 모든 요청에는 앱 식별자
appAppleId가 들어 있어요. 내 앱과 일치하지 않으면 응답하지 말라고 Apple은 안내해요.
실시간 요청은 원래 트랜잭션 ID, 제품, 기기 언어를 알려 줘요. 어떤 메시지를 보여 줄지는 내 규칙에 따라 직접 정하면 돼요.
Retention Messaging 설정하기: 세 가지 방법
| 방법 | 대상 | 필요한 것 |
|---|---|---|
| App Store Connect 모듈 | 출시 후 모든 개발자 | 코드 불필요, 텍스트·이미지·오퍼 |
| API, 내 서버로 | 백엔드가 있는 개발자 | Apple 접근 승인, HTTPS 주소, 성능 테스트 |
| API, RevenueCat으로 | 이미 RevenueCat을 쓰는 앱 | Apple 접근 승인, 대시보드 설정 |
여러 설정이 함께 있을 때의 우선순위를 Apple은 WWDC26 세션에서 설명해요. 먼저 실시간 응답이에요. 응답이 없거나 형식이 잘못되면 App Store Connect 설정이 쓰여요. 그것도 없으면 API로 설정한 기본 메시지가 쓰여요.
내 서버로
- Apple 양식으로 접근을 신청해요.
- 이미지를 올린 다음, 각각 제목과 본문을 담은 메시지를 올려요.
- 승인을 기다린 뒤, 구독마다 언어마다 기본 메시지를 지정해요.
- 실시간을 쓰려면 서버에
Get Retention Message주소를 만들고 샌드박스에 등록해요. - 샌드박스에서 테스트 트랜잭션으로 성능 테스트를 실행해요.
- 테스트를 통과하면 프로덕션 주소를 등록해요.
RevenueCat으로
제가 고른 방법이에요. 서버를 직접 만들 필요가 없고, 제 앱들은 이미 RevenueCat을 쓰고 있어요. 이건 RevenueCat과 iOS 인앱 구독에서 설명했어요. RevenueCat 문서에 따르면:
- Apple 양식에는 RevenueCat이 내 App Store 앱 설정에 보여 주는 주소를 입력해요.
- 승인 후 Lifecycle, Retention을 열고 샌드박스 주소를 연결해요.
- 활성 상태인 샌드박스 또는 TestFlight 구독으로 성능 테스트를 실행해요. 최대 1시간까지 걸릴 수 있어요.
- 먼저 언어별로 기본 메시지를 만들어요.
- 그다음 규칙을 붙여 실시간 메시지를 추가해요. 그중 "Is in free trial" 규칙은 무료 체험 중인 사람을 대상으로 해요.
- 프로덕션으로 전환해요. 샌드박스 설정은 넘어오지 않으니 메시지를 다시 만들어야 해요.
속이지 않고 붙잡는 메시지 쓰기
텍스트는 고정되어 있고, 표시되기 전에 Apple이 검토해요. 그래서 읽는 사람이 누구인지, 언제 읽는지를 언급할 수 없어요. 아래는 제가 TradaZen용으로 프랑스어로 준비한 기본 메시지예요(글자 수는 프랑스어 원문 기준이고, 여기서는 번역해서 보여 드려요).
제목 (57자):
트레이딩을 배우고 싶었는데, 이제 감으로만 하실 건가요?
본문 (127자):
연습 없이는 실제 돈이 모든 실수의 대가를 치러요. 여기서는 실수해도 비용이 없어요. 연속 기록, 리그, 레슨이 멈춰요.
제가 네 앱 모두에 정한 규칙이에요.
- 제목은 그 사람의 목표를 질문 형태로 다시 떠올리게 해요. 부끄럽게 만들지 않아요.
- 본문은 정확히 무엇이 멈추는지 말해요. 데이터가 남아 있으면 접근이 "잠긴다"고 쓰고, "삭제된다"고는 절대 쓰지 않아요.
- "내일", "오늘" 같은 시간 표현은 쓰지 않아요. 같은 텍스트가 구독 기간 중 아무 때나 표시되니까요.
- 수익 약속도, 가짜 긴박감도 없어요. 트레이딩으로 인생이 바뀐다고 약속하던 첫 제목은 보내기 전에 뺐어요. 가이드라인 5.6은 조작적인 관행을 금지하고, TradaZen의 페이월은 이미 이 이유로 리젝된 적이 있어요. 그 이야기는 가이드라인 5.6과 페이월에 썼어요.
- 언어마다 자체 텍스트를 써요. 번역된 앱의 용어를 그대로 쓰고, 글자 수까지 정확히 세요.
TradaZen에는 연간 구독 체험 중인 사람을 위한 실시간 메시지도 준비하고 있어요. 같은 그룹의 더 저렴한 연간 요금제를 제안할 거예요. 제 데이터를 보면 이 사람들은 결제한 사람만큼 앱을 쓰거든요. 거부하는 건 가격이에요. 이 설정은 Apple의 승인을 기다리고 있어요.
기대할 수 있는 것
기적을 기대하지는 마세요. Apple은 확인 페이지까지 온 구독자 중 구독을 유지하는 비율을 구제율(save rate)이라고 불러요. WWDC26 세션에서 Apple은 Retention Messaging을 도입한 구독이 이 비율에서 평균 1.4%p 올랐다고 발표했어요. 프로모션 오퍼가 담긴 메시지가 5.5%p로 가장 큰 상승을 보였고, 결과는 개발자마다 달라요. 한편 RevenueCat 분석에 따르면 구독자가 프로모션 오퍼를 받아들이는 비율은 약 1.1%, 요금제 변경은 0.6%에 불과해요.
그러니 이 메시지가 앞단의 작업을 대신하지는 않아요. 1분 만에 취소되는 무료 체험은 페이월과 첫 세션에서 승부가 나요. 원인과 해결책은 무료 체험 취소 가이드에, 체험 만들기는 도입 오퍼 가이드에 있어요.
메시지 전에 구독부터 준비하기
iOS & Android Kit는 제 앱들의 Starter Code에서 출발해요. 온보딩, 페이월, 구독이 이미 코딩되어 있고, 4단계 과정을 따라 내 속도로 App Store까지 갈 수 있어요. App Store Connect의 제품부터 페이월까지 전체 흐름은 iOS 인앱 구독 페이지에 정리되어 있어요.
첫 출시를 준비 중이라면 무료 진단을 받아 보세요. 프로젝트를 실제로 막고 있는 게 무엇인지 알려 주고, 제 Apple 리젝 방지 체크리스트도 보내 드려요.
자주 묻는 질문
Apple Retention Messaging API란 무엇인가요?
구독자가 Cancel Subscription을 눌렀을 때 표시할 메시지를 고르는 서버 간 서비스예요. 메시지는 해지 전 확인 페이지에 표시돼요. 구독의 가치를 다시 알려 주거나, 다른 요금제나 프로모션 오퍼를 제안할 수 있어요.
Retention Messaging은 모든 개발자가 쓸 수 있나요?
API는 Apple에 접근을 신청해야 하는 프리뷰예요. WWDC26에서 Apple은 모두에게 열린 App Store Connect 모듈을 2026년 가을 출시로 발표했어요. 2026년 11월 3일 기준으로 App Store Connect 도움말에는 아직 설명이 없어요.
어떤 iOS 버전에서 메시지가 표시되나요?
iOS 15.1 및 iPadOS 15.1 이상, visionOS 1, macOS 14 이상이에요. 더 오래된 기기에서는 메시지 없이 해지돼요.
메시지가 구독자의 해지를 막나요?
아니요. 확인 페이지에는 해지 버튼이 그대로 있어요. 구독자는 구독을 유지하거나, 제안된 오퍼나 요금제를 받아들일 수도 있어요.
해지 순간에 할인을 제안할 수 있나요?
네. API에서는 실시간으로만 가능한 프로모션 오퍼 메시지예요. 오퍼는 App Store Connect에서 만들고 내 서버가 서명해요. App Store Connect에 예고된 모듈로도 오퍼가 담긴 메시지를 쓸 수 있어요. 요금제 변경은 같은 그룹의 다른 구독을 제안해요.
리텐션 메시지는 몇 자까지 쓸 수 있나요?
제목은 최대 66자, 본문은 최대 144자예요. 글머리 기호는 최대 5개, 투명도 없는 PNG 이미지 하나를 추가할 수 있어요. 언어마다 기본 메시지가 따로 필요해요.
Retention Messaging을 쓰려면 서버가 필요한가요?
기본 메시지만 쓴다면 호스팅할 주소는 필요 없어요. API를 호출해 메시지를 올리고 지정하면 돼요. RevenueCat을 쓰면 RevenueCat이 서버 역할을 해요. 실시간 메시지는 700ms 이내에 응답하는 HTTPS 주소가 필요해요. App Store Connect에 예고된 모듈은 코드 없이 설정해요.

