イントロダクトリーオファーの設定方法:iOS無料トライアル
著者:Mehdi Azizi
公開・8 分
イントロダクトリーオファーはiOSサブスクの無料トライアルや割引価格で、1つのグループにつきApple アカウントごとに1回だけ使えます。
イントロダクトリーオファー(introductory offer)は、自動更新サブスクリプションの最初の期間に適用される価格です。種類は無料トライアル、前払い(Pay up front)、都度払い(Pay as you go)の3つです。利用できるのは、ユーザー1人につきサブスクリプショングループごとに1回だけです。そのため、アプリで「無料トライアル」と表示する前に、そのユーザーが対象かどうかを確認する必要があります。オファーはサブスクリプションの価格ページで作成します。ペイウォールには、オファーの期間とその後に請求される価格をはっきり表示してください。
Solys と TradaZen では、7日間の無料トライアルを年額プランに付けています。週額プランには付けていません。この記事では、3種類のオファー、対象になるユーザー、作成手順、そして僕が表示でやらかした2つのミスを紹介します。「ローンチオファー」という言葉もたいてい同じものを指していて、僕のペイウォールのミスの記事でもそう呼んでいます。
イントロダクトリーオファーとは?
App Store Connect のヘルプでは、サブスクリプションの最初の期間に適用される、期間限定の割引価格または無料トライアルと定義されています。対象は自動更新サブスクリプションだけです。オファーが終わると、ユーザーがその前に解約しない限り、通常価格で更新されます。
オファーは、対象ユーザーには App Store のページに表示されます。購入時には、対象ユーザーであれば Apple が自動で適用します。あなたがやるべきことは、Apple が適用しないオファーを画面で約束しないことです。
イントロダクトリーオファーの3つの種類
StoreKit のドキュメントでは、3つの支払いモードが説明されています。架空の例として、年額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ユーロ。」割引期間の分を1回でまとめて支払います。
- 都度払い:「3か月間は月額2.99ユーロ、その後月額6.99ユーロ。」割引価格が期間ごとに請求されます。
3つとも、オファー終了後に請求される価格を文言に含めます。
イントロダクトリーオファーの対象は誰?
Apple のヘルプでははっきり書かれています。オファーはサブスクリプションごとに1つ設定できますが、イントロダクトリーオファーを使えるのは、1人につきサブスクリプショングループごとに1回だけです。StoreKit のドキュメントでは3つのケースが示されています。
- 新規の登録者は常に対象です。
- 戻ってきた元登録者は、そのグループでイントロダクトリーオファーを一度も使っていなければ対象です。
- 現在の登録者は、同じグループ内でプランを変更しても対象外です。
対象かどうかは、支払いをする Apple アカウントで決まります。iPhone やアプリ内で作ったアカウントでは決まりません。トライアルを使って解約し、アプリを再インストールした人はもう対象外です。それでもプロダクト側はオファーを告知し続けます。誤解を招く表示はここから生まれます。
ここから直接言えることがあります。週額プランにトライアルを付けると、年額プランのトライアルを使う権利まで消費されてしまいます。2つは同じグループにあるからです。だから僕は、トライアルを年額プランだけに付けています。
もう1つ制限があります。イントロダクトリーオファーは、国ごとに進行中のもの1つと予定のもの1つまでしか持てません。2つの期間が重なると、後から作ったほうが前のものを置き換えます。2026年7月、TradaZen で年額プランに割引価格と無料トライアルの両方を付けたかったのですが、オファーは一度に1つだけ。どちらかを選ぶしかありませんでした。最終的に、もっと安い年額サブスクリプションをもう1つ作って、そちらにトライアルを付けました。
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 タブで削除して作り直します。変更が sandbox に反映されるまで最大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 は同じヘルプページでこう書いています。アプリ内でオファーを表示するなら、そのユーザーが本当に利用できるか確認すること。コードには2つの質問を投げてください。そのプロダクトに無料トライアルが付いているか。そして、そのユーザーはまだ対象か。
1つ目はプロダクトから読み取れます。注意点として、イントロダクトリーオファーが無料とは限りません。TradaZen では、標準の年額プランに前払い(初年度が割安)を付け、トライアルはもう1つの年額プランに付けていました。どちらも「イントロダクトリーオファー」として返ってきます。そこで僕のコードはオファーの価格を見ています。ゼロならトライアル、それより上なら有料オファーです。
2つ目はストアに問い合わせます。Swift なら、StoreKit 2 に iOS 15 以降で使える isEligibleForIntroOffer があります。Apple によると、この値はオファーが設定されていなくても true になることがあります。だから1つ目の質問が必要なんです。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 の推奨に従ってください。どちらにしても、「わからない」と「対象外」を混同しないことです。
RevenueCat のペイウォールを使う場合、オファーに関するページによると、各テキストにオファー対象ユーザー向けのバージョンを用意できます。それ以外の組み込み方は、僕のRevenueCat で iOS サブスクリプションの記事にまとめています。
3.1.2 が画面に求めること
ガイドライン 3.1.2(a) では、App Store Connect で定められた情報を提示することを条件に、サブスクリプションへの無料トライアルが認められています。Apple のサブスクリプションのページにはさらに、トライアルの購入フローではその期間と終了時に請求される価格を明示するよう書かれています。また、請求額は画面の中で最も目立つ価格要素でなければなりません。
2026年10月10日に Solys が受けたリジェクトにも、そう書かれていました。無料トライアル、ローンチ価格、計算上の価格は、請求額よりも目立たない扱いにする必要があります。トライアルを告知するのは構いませんが、その後に請求される価格を画面で一番読みやすい価格にしておく必要があります。 2回のリジェクトとその修正内容は、ガイドライン 3.1.2の記事にまとめています。
逆のミスもあります。トライアルを付けているのに、それを伝えていないケースです。以前、僕のペイウォールのボタンは「続ける」としか書いていませんでした。Solys に至っては、「7日間無料」が VoiceOver のラベルにしか存在せず、目に見えるテキストになっていませんでした。
sandbox でオファーをテストする
sandbox アカウントでサブスクリプションを購入してみてください。Apple の支払いシートにトライアルが表示されるはずです。新規登録者のフローをもう一度試すには、iPhone の sandbox アカウント設定で Clear Purchase History を選びます。Apple の sandbox のドキュメントによると、これでアカウントが再びイントロダクトリーオファーの対象になります。
すでにトライアルを使ったアカウントでもテストしましょう。ペイウォールに無料の告知が一切出ないのが正解です。プロダクトがまったく読み込まれない場合は、Missing Metadata ステータスの記事を読んでください。
無料トライアルをミスなく組み込む
iOS & Android Kit は、僕のアプリのスターターコードがベースです。オンボーディング、ペイウォール、サブスクリプションはすでに実装済みで、3つ目のステップ「収益化をつなぐ」でプロダクトとトライアルの設定を案内しています。全体の流れはiOS アプリ内サブスクリプションのページで説明しています。収益モデルにまだ迷っているなら、まずはサブスクリプションか買い切りかから読んでください。
初リリースの準備中なら、無料の診断を受けてみてください。やるべきステップを正しい順番に並べ直して、僕の Apple リジェクト対策チェックリストを送ります。1か月分をプレゼントしたり、元登録者に再アプローチしたりする方法は、オファーコードの記事で続きを解説しています。
よくある質問
App Store のイントロダクトリーオファーとは?
自動更新サブスクリプションの最初の価格で、無料トライアル、前払い、都度払いの3種類があります。App Store Connect で作成し、購入時に対象ユーザーへ Apple が自動で適用します。その後、サブスクリプションは通常価格に切り替わります。
1人のユーザーが無料トライアルを2回使えますか?
同じサブスクリプショングループ内では使えません。イントロダクトリーオファーは、グループごと、Apple アカウントごとに1回だけです。アプリを再インストールしても権利は戻りません。ただし、アプリ内の別のグループに登録する場合は、そのグループのオファーを利用できます。
無料トライアルと割引を併用できますか?
同じサブスクリプションで同時には使えません。進行中のイントロダクトリーオファーは国ごとに1つだけです。もう一方のオファーを付けた2つ目のサブスクリプションを作るか、オファーコードを使う方法があります。オファーコードは、設定次第でイントロダクトリーオファーの後に続けて適用できます。
トライアルを追加するにはアプリの新バージョンが必要ですか?
オファー自体には必要ありません。App Store Connect で設定でき、購入時に適用されます。ただし、ペイウォールのコードに「7日間」と直接書いている場合は、アップデートが必要です。ストアから返ってくるプロダクトから期間を読み取れば、画面も自動で追従します。
元登録者は無料トライアルを使えますか?
そのサブスクリプショングループでイントロダクトリーオファーを一度も使っていなければ使えます。すでに使ったことがあれば、何か月経っても対象外です。戻ってきてもらうには、Apple の Win-back オファーやプロモーションオファーを使えます。

