본문 바로가기

iOS 구독 초기 혜택 생성

GitHub

Introductory offer를 사용하면 적격 사용자에게 무료 체험이나 할인된 가격을 제공하여 진입 장벽을 낮추고 구독 전환율을 높일 수 있습니다.

Introductory offer는 구독자 수를 늘리는 데 가장 효과적인 도구 중 하나입니다. 사용자는 이를 통해 다음과 같은 경험을 할 수 있습니다:

  • 프리미엄 기능을 리스크 없이 체험
  • 결제 전 서비스 가치 확인
  • 더 낮은 가격으로 시작
  • 제품에 대한 신뢰 구축

iOS는 세 가지 유형의 introductory offer를 지원합니다:

고객은 지정된 기간 동안 무료로 서비스를 이용할 수 있습니다. 체험 기간 종료 후 취소하지 않으면 표준 요금이 청구됩니다.

예시:

  • 7일 무료
  • 14일 무료
  • 1개월 무료

추천 대상:

  • 고가 구독 모델
  • 기능이 풍부한 앱
  • 사용자 습관 형성

고객은 초기 할인 기간 동안 적용되는 단일 할인 가격을 지불합니다.

예시:

  • 2개월 동안 $1.99 (이후 월 $9.99)
  • 3개월 동안 $9.99 (이후 월 $19.99)

추천 대상:

  • 약정 신호
  • 현금 흐름 요구사항
  • 가격 민감도 테스트

고객은 여러 결제 주기 동안 할인된 가격을 지불합니다.

예시:

  • 3개월 동안 월 $1.99 (이후 월 $9.99)
  • 6개월 동안 월 $4.99 (이후 월 $14.99)

추천 대상:

  • 점진적 약정
  • 장기적 가치 입증
  • 지각된 위험 감소

다음 조건을 충족하는 사용자만 소개 오퍼를 받을 수 있습니다:

  • 해당 제품의 소개 오퍼를 이전에 받은 적이 없음
  • 동일한 구독 그룹 내의 어떤 제품에서도 introductory offer를 받은 적이 없음
  • 해당 제품에 대한 활성 구독 이력이 없음

먼저 다음 단계를 수행해야 합니다: auto-renewable subscription을 생성한 후에 introductory offer를 추가할 수 있습니다.

  1. 구독 메뉴로 이동

    App Store Connect에서 앱의 수익화 > 구독 섹션으로 이동하여 혜택을 추가할 구독 항목을 선택하세요.

  2. 구독 가격 추가

    Members 섹션에서 + “Subscription Prices” 옆의 아이콘을 클릭하여 가격 설정 모달을 엽니다.

  3. Introductory Offer 생성

    선택 “Create introductory offer”를 옵션에서 선택하세요.

    Introductory Offer 생성

  4. 국가 및 시작일 설정

    국가 및 지역: 혜택을 제공할 지역을 선택하세요

    • 최대한 많은 사용자에게 노출하려면 모든 국가를 선택하세요
    • 테스트를 위해 특정 시장으로 제한할 수도 있습니다

    시작일: 혜택이 적용되는 시점

    • 즉시 적용하거나 미래의 특정 날짜로 예약할 수 있습니다
    • 마케팅 캠페인 일정과 맞출 때 유용합니다

    종료일 (선택 사항): 혜택이 만료되는 시점

    • 계속 제공하려면 빈칸으로 두세요
    • 한정 프로모션 기간 설정
  5. 오퍼 유형 선택

    다음 세 가지 오퍼 유형 중 하나를 선택하세요:

    무료 (무료 체험)

    • 기간 선택 (일, 주, 월)
    • 예시: 7일, 2주, 1개월

    선불 결제

    • 단일 결제 금액 설정
    • 결제 적용 기간 설정
    • 예시: 2개월에 $1.99

    정기 결제

    • 기간별 할인 가격 설정
    • 기간 수 설정
    • 예시: 3개월 동안 월 $2.99
  6. 검토 및 확인

    다음 요약 내용을 검토하세요:

    • 혜택 유형 및 기간
    • 가격 상세 정보
    • 도입 기간 종료 후 정가
    • 사용 가능 날짜 및 국가
  7. 저장

    클릭 저장 introductory offer를 생성합니다. 샌드박스 모드에서 즉시 테스트할 수 있습니다.

예시 1: 표준 무료 체험

“Example 1: Standard Free Trial” 섹션
Type: Free
Duration: 7 days
Then: $9.99/month

사용자 여정:

  • 1~7일 차: 무료 이용
  • 8일 차: $9.99 첫 결제
  • 이후 매월 정기 결제
Type: Pay Up Front
Price: $4.99
Duration: 3 months
Then: $9.99/month

사용자 여정:

  • 1일 차: $4.99 결제됨
  • 90일간 이용 가능
  • 91일 차: 월 $9.99 결제됨

예시 3: 단계적 도입

“예시 3: 단계적 도입” 섹션
Type: Pay As You Go
Price: $2.99/month
Periods: 6 months
Then: $9.99/month

사용자 여정:

  • 1~6개월 차: 월 $2.99
  • 7개월 차 이후: 월 $9.99

native-purchases 플러그인은 인트로 오퍼 노출과 자격 확인을 자동으로 처리합니다:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch products with intro offer information
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['com.yourapp.premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
const product = products[0];
// Display intro offer details (StoreKit sends localized metadata)
if (product.introductoryPrice) {
console.log('Intro price:', product.introductoryPriceString);
console.log('Intro period:', product.introductoryPricePeriod);
console.log('Intro cycles:', product.introductoryPriceCycles);
console.log('Regular price:', product.priceString);
} else {
console.log('No intro offer configured');
}
// Purchase (StoreKit automatically applies intro pricing if eligible)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Subscription active, receipt length:', transaction.receipt?.length);
await validateReceiptOnServer(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}

사용자에게 소개 오퍼 표시하기

“사용자에게 인트로 오퍼 표시하기” 섹션

명확한 가치 제안:

Try Premium Free for 7 Days
Then $9.99/month. Cancel anytime.

할인 혜택 강조:

Start at Just $1.99
Get 3 months of Premium for only $1.99
Then $9.99/month

투명한 정보 전달:

Your Free Trial
• Access all premium features
• No charge for 7 days
• $9.99/month after trial
• Cancel anytime, even during trial
function formatIntroOffer(product: any): string {
if (!product.introductoryPrice) {
return `${product.priceString} per ${product.subscriptionPeriod}`;
}
const intro = product.introductoryPrice;
const regular = product.priceString;
if (intro.price === 0) {
// Free trial
return `Try free for ${intro.periodString}, then ${regular}`;
} else if (intro.cycles === 1) {
// Pay up front
return `${intro.priceString} for ${intro.periodString}, then ${regular}`;
} else {
// Enterprise
return `${intro.priceString} for ${intro.cycles} ${intro.periodString}s, then ${regular}`;
}
}

마케팅 베스트 프랙티스

“마케팅 베스트 프랙티스” 섹션
  • 3~7일: 빠른 결정이 필요한 앱, 게임
  • 7~14일: 대부분의 앱에 권장되는 표준
  • 14-30일: 복잡한 도구, 전문 앱
  • 30일 이상: 고가치 B2B 또는 엔터프라이즈
  • $0.99-$1.99: 진입 장벽이 매우 낮아 테스트에 적합
  • 50% 할인: 높은 체감 가치
  • 첫 달 무료: 흔하고 익숙한 패턴

커뮤니케이션 타이밍

“Communication Timing” 섹션
  • 체험 기간 종료 전: 결제 예정 알림
  • 가치 강조: 사용 통계 및 업적 표시
  • 간편한 해지: 투명한 프로세스로 신뢰 구축

샌드박스 테스트를 통해 동작을 확인하세요:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// In sandbox mode, accelerated subscription durations apply:
// - 3 days free trial = 3 minutes
// - 1 week free trial = 3 minutes
// - 1 month free trial = 5 minutes
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
// Purchase with intro offer
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Intro purchase transaction:', transaction.transactionId);
// Wait for accelerated renewal
setTimeout(async () => {
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find((purchase) => purchase.productIdentifier === 'premium_monthly');
console.log('After trial state:', premium?.subscriptionState);
}, 180000); // 3 minutes for weekly trial
  • 구독 그룹당 사용자별 1회 제공 (평생)
  • 신규 구독자에게만 적용
  • 구독 취소 후 재사용 불가
  • 구독 업그레이드/변경 시 적용 불가
  • introductoryPrice intro offer 상세 정보 표시
  • eligibility 사용자 자격 여부 확인 메서드
  • 구매 시 자동으로 적용됨
  • 별도의 결제 방식이 필요하지 않습니다
  • 구독당 한 번에 하나의 도입 오퍼만 활성화 가능
  • 다른 할인 유형과 중복 적용 불가
  • 자격 요건 규칙 변경 불가
  • 자격 확인은 Apple에서 제어함

도입 오퍼가 표시되지 않는 경우:

  • App Store Connect에서 오퍼가 활성화되었는지 확인
  • 사용자가 이전에 도입 오퍼를 사용했는지 확인
  • 사용자가 해당 그룹 내 다른 구독을 이용 중인지 확인
  • 새로운 sandbox 계정으로 테스트

자격 요건 확인 실패:

  • App Store 동기화 대기 (2~3시간 소요 가능)
  • product ID가 정확한지 확인
  • 구독 그룹 설정 확인
  • 새로운 테스트 계정으로 sandbox에서 테스트

잘못된 가격 표시:

  • 지역별 가격 설정 확인
  • 통화 변환 확인
  • 오퍼 기간이 현재 날짜에 맞는지 확인
  • 제품 정보 새로고침

Sandbox 테스트 시 주의사항:

  • 가속된 기간 사용 (3분 = 1주일)
  • 테스트마다 새로운 테스트 계정 생성
  • 무료 체험 기간이 자연스럽게 종료될 때까지 대기
  • 갱신 횟수 확인 (Sandbox 최대 6회)
  • 첫 구매 혜택 수락률
  • 무료 체험 후 유료 전환율
  • 무료 체험 중 구독 취소율
  • 첫 결제 후 리텐션
  • 매출 영향

A/B 테스트 아이디어

“A/B 테스트 아이디어” 섹션
  • 무료 체험 vs 유료 인트로 요금
  • 체험 기간 변형
  • 할인율
  • 일회성 결제 vs 반복 할인
// Track offer performance
analytics.track('intro_offer_displayed', {
product_id: product.identifier,
offer_type: product.introductoryPriceType,
offer_duration: product.introductoryPricePeriod
});
analytics.track('intro_offer_accepted', {
product_id: product.identifier
});
// Monitor conversion
NativePurchases.addListener('transactionUpdated', (transaction) => {
if (transaction.productIdentifier === product.identifier && transaction.isActive) {
analytics.track('trial_converted', {
transactionId: transaction.transactionId,
productId: transaction.productIdentifier,
});
}
});
  • 샌드박스 테스트 설정 인트로 오퍼 테스트하기
  • 윈백 캠페인용 프로모션 오퍼 설정
  • 구독 분석 구현
  • 타겟 마케팅 캠페인 생성

자세한 내용은 인트로 오퍼 관련 Apple 공식 문서.

iOS 구독 인트로 오퍼 생성에서 계속하기

“iOS 구독 인트로 오퍼 생성에서 계속하기” 섹션

사용 중이라면 iOS 구독 시작 프로모션 생성하기 결제와 구매를 계획하려면 다음을 연결하세요 @capgo/native-purchases 사용하기 @capgo/native-purchases 사용 시 네이티브 기능을 위해, Capgo 가격 Capgo 가격 페이지의 제품 워크플로우, 결제 시스템 결제 시스템의 구현 상세 내용, @capgo/native-purchases @capgo/native-purchases의 구현 상세 내용, 그리고 시작하기 시작하기 페이지의 구현 상세 내용.