メインコンテンツへスキップ

iOSサブスクリプションの導入オファーを作成

GitHub

Introductory offers(初回限定特典)を利用すると、対象ユーザーに無料トライアルや割引価格を提供できます。これにより、導入のハードルを下げ、サブスクリプションのコンバージョン率を向上させることが可能です。

Introductory offersは、購読者数を増やすための最も効果的なツールの一つです。ユーザーに以下の体験を提供できます:

  • リスクなしでプレミアム機能を試す
  • 契約前に価値を実感する
  • より低い価格帯から開始する
  • 製品への信頼を高める

iOSでは3種類の導入特典(Introductory Offers)が利用可能です:

ユーザーは指定された期間、無料でサービスを利用できます。トライアル期間終了後に解約しない場合、通常の料金が請求されます。

例:

  • 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)を受け取っていないこと
  • 対象製品の有効なサブスクリプションを保持していないこと

まず以下の手順を行う必要があります: 自動更新サブスクリプションを作成し、 その後に初回特典を追加してください。

初回特典(Introductory Offer)の作成

「初回特典の作成」セクション
  1. Subscriptionへ移動

    App Store Connectで、アプリの 収益化 > サブスクリプション セクションに移動し、特典を追加したいサブスクリプションを選択します。

  2. サブスクリプション価格の追加

    次をクリックします: + アイコンを「Subscription Prices」の横でクリックして、価格設定モーダルを開きます。

  3. 初回特典の作成

    オプションから 「Create introductory offer」 を選択します。

    初回特典を作成

  4. 国と開始日の設定

    国と地域: オファーの対象となる場所を選択してください

    • リーチを最大化するにはすべての国を選択
    • テスト用に特定の市場に限定することも可能

    開始日: オファーが利用可能になるタイミング

    • 即時適用、または将来の日時を指定可能
    • マーケティングキャンペーンとの連携に便利です

    終了日 (任意): オファーの有効期限

    • 継続的に提供する場合は空欄のままにします
    • 期間限定プロモーションの開始日を設定
  5. オファータイプを選択

    以下の3つのオファータイプから1つ選択してください:

    無料 (無料トライアル)

    • 期間を選択 (日、週、月)
    • 例: 7日間、2週間、1ヶ月

    前払い

    • 一括支払額を設定
    • 支払いが適用される期間を設定
    • 例: 2ヶ月間で$1.99

    従量課金

    • 期間ごとの割引価格を設定
    • 期間の回数を設定
    • 例: $2.99/月を3ヶ月間
  6. 内容を確認して確定

    以下のサマリーを確認してください:

    • オファーの種類と期間
    • 価格の詳細
    • 導入期間終了後の通常価格
    • 利用開始日と対象国
  7. 保存

    クリック 保存 初回限定特典(Introductory Offer)を作成します。サンドボックスモードですぐにテスト可能です。

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を請求
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 プラグインは、初回限定特典(Introductory Offer)の表示と適用条件の判定を自動的に処理します:

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% OFF:高い価値を感じさせやすい
  • 初月無料:一般的で馴染みのあるパターン

コミュニケーションのタイミング

「通知のタイミング」セクション
  • トライアル終了前: 次回の課金予定を通知
  • 価値を強調: 利用統計や実績を表示
  • 簡単な解約手続き: 透明性の高いプロセスで信頼を構築

sandboxテストを使用して動作を確認します:

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ユーザー1回まで(生涯)
  • 新規サブスクライバーのみに適用
  • 解約後の再利用は不可
  • アップグレードおよびクロスグレードには適用不可
  • introductoryPrice 初回特典の詳細を表示
  • eligibility ユーザーの適用資格を確認するメソッド
  • 購入時に自動的に適用
  • 特別な購入フローは不要
  • 1つのサブスクリプションにつき、有効な初回特典は1つのみ
  • 他の割引タイプとの併用は不可
  • 適用条件の変更は不可
  • 適用条件の判定はAppleが制御

初回特典が表示されない場合:

  • App Store Connectで特典が有効か確認してください
  • ユーザーが過去に初回特典を利用していないか確認してください
  • ユーザーが同じグループ内で既に購読していないか確認してください
  • 新しいSandboxアカウントでテストしてください

適格性チェックに失敗する場合:

  • App Storeの同期を待機(2〜3時間かかる場合があります)
  • 製品IDが正しいか確認してください
  • サブスクリプショングループの設定を確認してください
  • 新規テストアカウントを使用してSandboxでテストしてください

価格が正しく表示されない場合:

  • リージョンごとの価格設定を確認してください
  • 通貨換算を確認してください
  • オファーの期間が現在有効であることを確認してください
  • 製品情報をリフレッシュしてください

Sandboxテストにおける注意点:

  • 加速された期間を使用 (3分 = 1週間)
  • テストごとに新しいテストアカウントを作成
  • トライアルが自然に終了するまで待機
  • 更新回数を確認 (Sandboxでは最大6回)
  • 初回特典の承諾率
  • トライアルから有料への転換率
  • トライアル中の解約率
  • 初回課金後の継続率
  • 収益への影響
  • 無料トライアル 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,
});
}
});
  • Sandboxテストの設定 初回限定オファーのテスト
  • 休眠ユーザー向けキャンペーンのプロモーション設定
  • サブスクリプション分析の実装
  • ターゲットを絞ったマーケティングキャンペーンの作成

詳細については、以下の Apple公式ドキュメント(初回限定オファー).

「iOSサブスクリプション初回限定オファーの作成」へ進む

「iOSサブスクリプション初回限定オファーの作成」セクション

使用している場合 iOSサブスクリプションの導入オファーを作成 支払いや購入を計画するには、これを以下と連携させます @capgo/native-purchases の使用 @capgo/native-purchases を使用したネイティブ機能について、 Capgo の料金 Capgo の料金ページのプロダクトワークフローについては、 決済システム 決済システムの、実装の詳細について、 @capgo/native-purchases @capgo/native-purchases の、実装の詳細について、 スタートガイド 実装の詳細については、Getting Started を参照してください。