인트로덕터리 오퍼: iOS 구독 무료 체험 설정
글: Mehdi Azizi
게시, 8분
iOS 구독 초반의 무료 체험이나 할인가로, 구독 그룹마다 Apple 계정당 한 번만 받을 수 있어요.
인트로덕터리 오퍼(introductory offer)는 자동 갱신 구독을 시작할 때 적용되는 첫 가격이에요. 무료 체험, 선불 결제, 기간별 결제 중 하나로 설정해요. 고객 한 명은 구독 그룹마다 딱 한 번만 받을 수 있어요. 그래서 앱에서 "무료 체험"이라고 쓰기 전에 자격부터 확인해야 해요. 오퍼는 구독 가격 페이지에서 만들고, 페이월에는 오퍼 기간과 그 뒤에 청구될 가격을 분명하게 보여 줘야 해요.
Solys와 TradaZen에서는 7일 무료 체험을 연간 구독에만 달았어요. 주간 플랜에는 체험이 없어요. 이 글에서는 오퍼의 세 가지 유형, 누가 받을 수 있는지, 만드는 방법을 정리하고, 화면 표시에서 제가 저지른 실수 두 가지도 알려 드릴게요. "출시 기념 오퍼"라는 말도 대개 같은 걸 가리켜요. 페이월 실수를 다룬 제 가이드에서도 그렇게 썼어요.
인트로덕터리 오퍼란?
App Store Connect 도움말은 이걸 구독 첫 기간에 적용되는 기간 한정 할인가나 무료 체험이라고 정의해요. 자동 갱신 구독에만 해당해요. 오퍼가 끝나면 사용자가 그 전에 해지하지 않는 한 정가로 갱신돼요.
오퍼는 자격이 있는 사람에게 App Store 페이지에서 보여요. 구매할 때 자격이 있으면 Apple이 자동으로 적용해요. 여러분이 할 일은 Apple이 주지 않을 오퍼를 화면에서 약속하지 않는 거예요.
인트로덕터리 오퍼의 세 가지 유형
StoreKit 문서는 결제 방식 세 가지를 설명해요. 가상의 예로 하나씩 볼게요. 연간 39,99유로, 월간 6,99유로로 잡았고, 제 앱의 실제 가격은 아니에요.
| 유형 | 가상 예시 | 처음에 내는 금액 | 그 이후 |
|---|---|---|---|
| 무료 체험 | 7일 무료 | 0유로 | 연 39,99유로 |
| 선불 결제 | 3개월 9,99유로 | 9,99유로 1회 | 연 39,99유로 |
| 기간별 결제 | 월 2,99유로, 3개월 | 매달 2,99유로 | 월 6,99유로 |
같은 가상 가격으로, 화면에 써야 할 문구는 이래요.
- 무료 체험: "7일 무료, 이후 연 39,99유로." 체험 중에도 구독은 이미 시작된 상태지만, 체험이 끝나기 전에는 아무것도 청구되지 않아요.
- 선불 결제: "첫 3개월 9,99유로, 이후 연 39,99유로." 할인 기간 전체를 한 번에 결제해요.
- 기간별 결제: "3개월 동안 월 2,99유로, 이후 월 6,99유로." 기간마다 할인가가 청구돼요.
세 경우 모두 오퍼가 끝난 뒤 청구될 가격이 문구에 들어가야 해요.
인트로덕터리 오퍼는 누가 받을 수 있나요?
Apple 도움말은 명확해요. 구독마다 오퍼를 하나 둘 수 있지만, 인트로덕터리 오퍼는 구독 그룹마다 한 사람당 한 번이에요. StoreKit 문서는 세 가지 경우를 구분해요.
- 신규 구독자는 항상 받을 수 있어요.
- 다시 돌아온 이전 구독자는 이 그룹에서 인트로덕터리 오퍼를 한 번도 쓴 적이 없으면 받을 수 있어요.
- 현재 구독자는 같은 그룹에서 플랜을 바꾸더라도 받을 수 없어요.
자격은 결제하는 Apple 계정을 따라가요. iPhone이나 앱 안에서 만든 계정이 기준이 아니에요. 체험을 쓰고 해지한 뒤 앱을 다시 설치한 사람은 더 이상 자격이 없어요. 그런데도 상품은 계속 오퍼를 내걸고 있어요. 오해를 부르는 표시가 여기서 생겨요.
바로 이어지는 결과가 있어요. 주간 플랜에 체험을 달면 연간 플랜의 체험 자격까지 써 버리게 돼요. 둘이 같은 그룹에 있으니까요. 그래서 저는 연간에만 체험을 둬요.
제한이 하나 더 있어요. 국가마다 진행 중인 인트로덕터리 오퍼 하나와 예정된 오퍼 하나를 둘 수 있어요. 두 오퍼 기간이 겹치면 나중에 만든 쪽이 기존 오퍼를 대체해요. 2026년 7월, TradaZen 연간 구독에 할인가와 무료 체험을 둘 다 넣고 싶었어요. 오퍼는 한 번에 하나라서 둘 중 하나만 고를 수 있었죠. 결국 더 저렴한 두 번째 연간 구독을 만들어 거기에 체험을 달았어요.
App Store Connect에서 오퍼 만들기
Account Holder, Admin, App Manager, Marketing 중 하나의 역할이 필요해요. 메뉴 이름은 Apple 도움말 기준이에요.
- Apps에서 앱을 열고 사이드바에서 Subscriptions를 선택해요.
- 그룹을 고른 다음 구독을 골라요.
- Subscription Prices 섹션에서 View all Subscription Pricing을 누르고, Set up Introductory Offer를 눌러요.
- 국가 또는 지역을 고르고 시작일과 종료일을 정해요. 오늘 시작하면 오퍼가 바로 적용돼요.
- Free, Pay up front, Pay as you go 중 하나를 고르고 기간과 가격을 정해요.
- App Store Connect가 175개 국가의 환산 가격을 제안해요. 필요하면 조정하고 확인해요.
만든 오퍼는 수정할 수 없어요. 기간이나 가격을 바꾸려면 Introductory Offers 탭에서 삭제하고 다시 만들어야 해요. 변경 사항이 샌드박스에 반영되기까지 최대 1시간이 걸릴 수 있어요. RevenueCat 문서도 오퍼가 적용되지 않는다고 판단하기 전에 최대 24시간을 기다리라고 권해요.
설정할 수 있는 기간
무료 체험은 구독 기간과 상관없이 3일, 1주나 2주, 1개월, 2개월, 3개월, 6개월, 1년으로 정할 수 있어요. 선불 결제는 1개월, 2개월, 3개월, 6개월, 1년이에요. 기간별 결제는 구독 기간에 따라 달라요.
| 구독 | 기간별 결제 |
|---|---|
| 1주 | 1-12주 |
| 1개월 | 1-12개월 |
| 2개월 | 2-12개월, 2개월 단위 |
| 3개월 | 3, 6, 9, 12개월 |
| 6개월 | 6개월 또는 12개월 |
| 1년 | 1년 |
제 앱에서는 연간 구독에 7일을 골랐어요. Apple 규칙이 아니라 제품상의 선택이니, 여러분의 데이터를 보고 다시 판단하세요.
자격이 있는 사람에게만 체험 보여 주기
Apple은 같은 도움말 페이지에서 이렇게 말해요. 앱 안에서 오퍼를 보여 준다면 그 사람이 정말 받을 수 있는지 확인하라고요. 코드에서 두 가지를 물어보세요. 이 상품에 무료 체험이 있는가, 그리고 이 사람에게 아직 자격이 있는가.
첫 번째는 상품 정보에서 읽을 수 있어요. 주의할 점은 인트로덕터리 오퍼가 꼭 무료는 아니라는 거예요. TradaZen에서는 기본 연간 구독에 선불 결제(첫해 할인)가 걸려 있었고, 체험은 다른 연간 구독에 있었어요. 둘 다 "인트로덕터리 오퍼"로 넘어와요. 그래서 제 코드는 오퍼 가격을 읽어요. 0이면 체험, 그보다 크면 유료 오퍼예요.
두 번째는 스토어에 물어봐요. Swift에서는 StoreKit 2가 iOS 15부터 isEligibleForIntroOffer를 제공해요. Apple은 오퍼가 설정되지 않아도 이 값이 true일 수 있다고 밝혀요. 그래서 첫 번째 질문이 필요한 거예요. Expo 앱에서 RevenueCat을 쓴다면 checkTrialOrIntroductoryPriceEligibility를 써요. 자격 있음, 자격 없음, 오퍼 없음, 알 수 없음 중 하나를 돌려줘요. TypeScript로 원리를 보면 이래요.
import Purchases, {
INTRO_ELIGIBILITY_STATUS as S,
type PurchasesStoreProduct,
} from "react-native-purchases";
type Essai = "oui" | "non" | "doute";
export async function essaiGratuit(p: PurchasesStoreProduct): Promise<Essai> {
if (!p.introPrice || p.introPrice.price > 0) return "non";
try {
const r = await Purchases.checkTrialOrIntroductoryPriceEligibility([
p.identifier,
]);
const statut = r[p.identifier]?.status;
if (statut === S.INTRO_ELIGIBILITY_STATUS_ELIGIBLE) return "oui";
if (statut === S.INTRO_ELIGIBILITY_STATUS_INELIGIBLE) return "non";
if (statut === S.INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS)
return "non";
return "doute";
} catch {
return "doute";
}
}
진짜 문제는 "doute"(불확실) 경우예요. RevenueCat은 자기들 확인 기능을 최선의 추정이라고 설명해요. 어차피 Apple 결제 시트는 확정 전에 실제 조건을 보여 줘요. RevenueCat은 상태를 알 수 없을 때 아무도 오해하지 않도록 정가를 보여 주라고 권해요.
반대쪽 문제는 TradaZen에서 배웠어요. 첫 버전은 읽기 오류를 거절로 처리했어요. 그래서 체험 자격이 있는 사람들이 체험을 보지 못했죠. 지금 제 앱은 스토어가 분명하게 거절할 때만, 즉 자격 없음이나 오퍼 없음일 때만 체험을 숨겨요. 불확실하면 상품 표시를 그대로 둬요. 이건 제가 내린 판단이지 RevenueCat의 권장이 아니에요. 신중한 쪽이 좋다면 그들의 권장을 따르세요. 어느 쪽이든 "모르겠다"를 "아니다"와 헷갈리면 안 돼요.
RevenueCat 페이월을 쓴다면, 그들의 오퍼 페이지에 따르면 문구마다 오퍼 자격자용 버전을 따로 둘 수 있어요. 나머지 설정은 제 iOS 구독용 RevenueCat 가이드에 있어요.
3.1.2가 화면에 요구하는 것
가이드라인 3.1.2(a)는 App Store Connect가 요구하는 정보를 제공한다는 조건으로 구독에 무료 체험을 허용해요. Apple 구독 안내 페이지는 더 구체적이에요. 체험 구매 흐름에서는 체험 기간과 종료 후 청구 가격을 분명히 표시하라고 해요. 청구 금액은 화면에서 가장 눈에 띄는 가격 요소여야 해요.
2026년 10월 10일 Solys가 받은 리젝 사유도 그 내용이었어요. 무료 체험, 출시 가격, 계산된 가격은 청구 금액보다 덜 눈에 띄어야 한다는 거였죠. 체험을 알리는 건 괜찮지만, 이후 청구될 가격이 화면에서 가장 잘 읽히는 가격이어야 해요. 두 번의 리젝과 그 수정 방법은 가이드라인 3.1.2 가이드에 정리했어요.
반대 실수도 있어요. 체험을 주면서 말하지 않는 거예요. 한때 제 페이월 버튼에는 "계속"이라고만 써 있었어요. Solys에서는 "7일 무료"가 VoiceOver 레이블에만 있고 화면에 보이는 텍스트로는 아예 없었어요.
샌드박스에서 오퍼 테스트하기
샌드박스 계정으로 구독을 구매해 보세요. Apple 결제 시트에 체험이 나와야 해요. 신규 구독자 흐름을 다시 해 보려면 iPhone의 샌드박스 계정 설정에서 Clear Purchase History를 선택하세요. Apple 샌드박스 문서에 따르면 그러면 계정이 다시 인트로덕터리 오퍼 자격을 얻어요.
이미 체험을 쓴 계정으로도 테스트하세요. 페이월에 무료라는 말이 더 이상 나오면 안 돼요. 상품이 아예 불러와지지 않는다면 Missing Metadata 상태에 관한 제 가이드를 읽어 보세요.
실수 없이 무료 체험 연결하기
iOS & Android Kit는 제 앱의 시작 코드에서 출발해요. 온보딩, 페이월, 구독이 이미 코딩돼 있고, 세 번째 단계인 "수익 연결"에서 상품과 체험 설정을 안내해요. 전체 흐름은 iOS 인앱 구독 페이지에 있어요. 아직 수익 모델을 고민 중이라면 구독 vs 일회성 구매부터 보세요.
첫 출시를 준비 중이라면 무료 진단을 받아 보세요. 단계를 순서대로 정리해 주고 Apple 리젝 방지 체크리스트도 보내 드려요. 한 달을 무료로 주거나 이전 구독자를 다시 불러오고 싶다면 오퍼 코드 가이드를 이어서 읽어 보세요.
자주 묻는 질문
App Store의 인트로덕터리 오퍼란 무엇인가요?
자동 갱신 구독의 첫 가격이에요. 무료 체험, 선불 결제, 기간별 결제 중 하나예요. App Store Connect에서 만들고, 자격이 있는 사람이 구매하면 Apple이 자동으로 적용해요. 그 뒤에는 정가로 바뀌어요.
한 사용자가 무료 체험을 두 번 받을 수 있나요?
같은 구독 그룹에서는 안 돼요. 그룹마다 Apple 계정당 인트로덕터리 오퍼는 한 번이에요. 앱을 다시 설치해도 자격이 돌아오지 않아요. 다만 앱의 다른 그룹에서 구독하면 그 그룹의 오퍼는 받을 수 있어요.
무료 체험과 할인을 함께 줄 수 있나요?
같은 구독에 동시에는 안 돼요. 국가마다 진행 중인 인트로덕터리 오퍼는 하나예요. 다른 오퍼를 담은 두 번째 구독을 만들거나, 오퍼 코드를 쓰면 돼요. 오퍼 코드는 설정에 따라 인트로덕터리 오퍼 뒤에 이어서 적용될 수 있어요.
체험을 추가하려면 앱 새 버전이 필요한가요?
오퍼 자체는 필요 없어요. App Store Connect에서 설정하고 구매 시점에 적용되니까요. 하지만 페이월 코드에 "7일"을 하드코딩했다면 업데이트해야 해요. 스토어가 돌려주는 상품에서 기간을 읽으면 화면도 알아서 맞춰져요.
이전 구독자도 무료 체험을 받을 수 있나요?
네, 그 구독 그룹에서 인트로덕터리 오퍼를 한 번도 쓴 적이 없다면요. 이미 썼다면 몇 달이 지나도 자격이 없어요. 다시 불러오고 싶다면 Apple의 win-back 오퍼와 프로모션 오퍼를 쓰면 돼요.

