mcpField
P
paywall-upgrade-cro

paywall-upgrade-cro

github.com/borgheiマーケティング・グロース1.0k80 回インストール1 週間前に更新
リポジトリ

paywall-upgrade-cro について

paywall-upgrade-croは、製品の価値を体験したユーザー向けのアプリ内アップグレードを最適化するフレームワークです。機能制限、利用上限、トライアル終了、アップグレード手順、ダークパターン回避を扱います。

主な機能

  1. 01価値体験と行動に合わせた表示時期
  2. 02機能制限と利用上限の通知設計
  3. 03トライアル終了前後の通知計画
  4. 04表示頻度とアップグレード手順の設定
  5. 05ダークパターンの特定と回避
  6. 06プラットフォーム別の決済制約への対応

活用シーン

  1. 01無料枠の上限に達した際のアップグレード提示
  2. 02トライアル終了前後の案内計画
  3. 03ペイウォールの表示時期と頻度の調整
  4. 04アップグレード選択から支払いまでの最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/borghei/claude-skills --skill paywall-upgrade-cro

インストール後、Claude Code で/paywall-upgrade-croを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
paywall_copy_scorer.py
paywall_trigger_auditor.py
upgrade_funnel_analyzer.py

詳細

ペイウォールとアップグレード画面のCRO

アプリ内アップグレードフローのための、本番環境向けフレームワークです。機能ゲートの設計、利用上限のUX、トライアル終了シーケンス、アップグレードを促すタイミング、ダークパターンの回避、倫理的な収益化を網羅します。一般公開されている料金ページとは異なります(そちらには page-cro を使用してください)。このガイドでは、ユーザーがすでに価値を実感している場面でのアプリ内の体験に焦点を当てます。


目次


まず確認すること

ペイウォールを設計する前に、以下の情報を確認してください。不明確な項目があれば、推測せずに質問してください。

  • アップグレードモデル — フリーミアムから有料への移行、トライアルから有料への移行、またはプランのアップグレード(ペイウォールの種類とトリガー設計が決まります)
  • 無料と有料の境界 — どの機能を制限するか(ペイウォールで伝える価値の差が決まります)
  • アハ・モーメント — トリガーが価値を実感した後にだけ作動するようにするために確認します(価値を優先する原則)
  • プラットフォーム — Web、iOS、Androidのいずれか(IAPのルールと手数料により、Webとアプリのフローが制約されます)

停止ルール:出力に最も影響する2〜3項目だけを質問してください。ユーザーが「とにかく草案を作って」と言った場合は、そのまま進め、成果物の冒頭に前提条件を記載してください。

最初の評価

必要なコンテキスト
質問重要な理由
アップグレードモデルは何ですか?(フリーミアムから有料への移行、トライアルから有料への移行、プランのアップグレード)ペイウォールの種類が決まります
無料と有料の違いは何ですか?伝えるべき価値の差が明確になります
現在、何がアップグレードの案内を表示するトリガーになっていますか?現在のトリガーポイントを特定できます
現在の無料から有料へのコンバージョン率はどのくらいですか?改善の基準値になります
ユーザーにとってのアハ・モーメントは何ですか?ペイウォールを表示するタイミングが決まります
料金モデルは何ですか?(シート単位、従量制、定額制)ペイウォールのメッセージに影響します
モバイルアプリ、Webアプリ、または両方ですか?プラットフォーム固有の要件が決まります

価値を優先する原則

ペイウォール設計で最も重要なルールは、アップグレードを促す案内を表示する前に、ユーザーが実際に価値を実感していることです。

価値優先チェックリスト
  • ユーザーがアクティベーションイベントを完了している(アハ・モーメントに到達している)
  • ユーザーが製品を少なくとも2〜3回利用している
  • ユーザーが失いたくないデータを作成または保存している
  • アップグレードが自然な次のステップに感じられ、罠のように感じられない
表示するタイミングと表示しないタイミング
表示する表示しない
アハ・モーメントに到達した後オンボーディング中
ユーザーが実際の利用上限に達したとき初回ログイン時
ユーザーが有料機能をクリックしたときユーザーがタスクの途中にいるとき
マイルストーンを達成した後不満を感じる体験の直後
セッション開始時(控えめなリマインダー)操作のたび

ペイウォールのトリガー設計

トリガーの種類
トリガー作動するタイミング最適な用途
機能ゲートユーザーがロックされた機能をクリックしたとき機能ごとにプランが分かれている場合
利用上限ユーザーが割り当て上限に達したとき利用量ベースの料金設定
トライアル終了トライアル期間の終了時期間限定トライアルモデル
時間ベースアクティブな利用を開始してからN日後フリーミアムの継続的な案内
マイルストーンベースユーザーがXを達成した後成功したタイミングでのアップセル
チームベースチームが無料プランのシート数上限を超えたときシート単位の料金モデル
トリガーの優先度マップ
ユーザーの状態主なトリガータイミング
有効化済み、上限未満機能ゲート(有料機能を使おうとしたとき)クリック時
上限に近づいているソフト警告(上限の80%)事前通知
上限に到達使用上限のペイウォール上限を超える操作時
14日間のトライアルの7日目トライアル終了のリマインダーセッション開始時
14日間のトライアルの13日目トライアル終了の緊急通知セッション開始時+メール
トライアルの14日目トライアル終了ログイン時
30日以上利用している無料ユーザー価値に基づくアップグレードの案内セッション開始時、週に1回

ペイウォール画面の設計

画面の構成
┌─────────────────────────────────────┐
│ [X Close / "Not now"]               │  Escape hatch (always visible)
│                                     │
│ HEADLINE: Value-focused             │  "Unlock [feature] to [benefit]"
│                                     │
│ [Feature preview / screenshot]      │  Show what they are missing
│                                     │
│ KEY BENEFITS:                       │
│ - Benefit 1                        │
│ - Benefit 2                        │
│ - Benefit 3                        │
│                                     │
│ PRICE: $X/month                    │  Clear, simple pricing
│ (or plan comparison)               │
│                                     │
│ [UPGRADE CTA - Primary]           │  "Start Pro Plan"
│ [Maybe Later - Secondary]          │  Clear secondary action
│                                     │
│ "Join 5,000+ teams on Pro"        │  Social proof
└─────────────────────────────────────┘
トリガーの種類ごとのコピーのパターン
トリガー見出しのパターンCTAのパターン
機能ゲート「[Feature]を利用して[Benefit]を実現」「[Plan]にアップグレード」
使用上限「[N]件の[resources]をすべて使用しました」「無制限の[Resources]を利用」
トライアル終了間近「トライアルは残り[N]日で終了します」「[Plan]で継続」
マイルストーン「[milestone]を達成しました!Proでさらに成長しましょう」「アップグレードして、さらに成長」
経過時間「[Product] Proなら、お客様のようなチームが[benefit]を実現できます」「Proの機能を見る」

機能ゲートのパターン

ソフトゲート(プレビュー+ロック)

ユーザーは機能の動作を確認できますが、十分に利用することはできません。

┌──────────────────────────────┐
│  [Feature Preview]           │  Blurred screenshot or partial result
│                              │
│  [Lock Icon] Pro Feature     │
│                              │
│  [Feature name] lets you:    │
│  - Capability 1              │
│  - Capability 2              │
│                              │
│  [Upgrade to Pro - $X/mo]   │
│  [Maybe Later]              │
└──────────────────────────────┘
ハードゲート(ブロック+説明)

ユーザーは機能にまったくアクセスできません。価値を明確に示してください。

┌──────────────────────────────┐
│  [Lock Icon]                 │
│                              │
│  This feature is available   │
│  on the Pro plan             │
│                              │
│  What you get:               │
│  - Benefit 1                 │
│  - Benefit 2                 │
│  - Benefit 3                 │
│                              │
│  [Upgrade to Pro]            │
│  [Compare Plans]             │
└──────────────────────────────┘
機能ゲートの設計ルール
  • 機能がロックされていることだけでなく、なぜ価値があるのかを必ず説明します
  • 可能であれば、その機能が生成するもの(出力のプレビュー)を表示します
  • 詳細を知りたいユーザー向けに「プランを比較」リンクを含めます
  • トライアル中にすでに利用していた機能にはゲートを設けないでください

使用上限のUX

上限に近づいたとき(80%の警告)
┌──────────────────────────────────┐
│  [Progress Bar: 80%]            │
│  You've used 80 of 100 credits  │
│                                  │
│  [Get More Credits]  [Dismiss]  │
└──────────────────────────────────┘
上限到達時(100%)
┌──────────────────────────────────────┐
│  [Progress Bar: 100%]               │
│  You've reached your monthly limit  │
│                                      │
│  Free: 100 credits | Pro: Unlimited │
│                                      │
│  [Upgrade to Pro]                   │
│  [Delete items to free space]       │  Alternative action
└──────────────────────────────────────┘
使用上限のルール
  • 上限に達する前に使用状況を表示します(UI内の進捗インジケーター)
  • 可能であれば、代替操作(削除、アーカイブ、エクスポート)を用意します
  • 上限に達しても、ユーザーデータは決して削除しません
  • 猶予期間を設けます(作業の途中で利用を停止しません)

トライアル終了時のフロー

トライアルのカウントダウンの流れ
日チャネルメッセージトーン
7日目(14日間のうち)アプリ内バナー「トライアルは残り7日です」情報提供
10日目メール「残り4日です――これまでの成果をご紹介します」価値のまとめ
12日目アプリ内モーダル「残り2日です――[feature]を引き続き利用しましょう」軽い緊急感
13日目メール「明日が最終日です」緊急感+特典
14日目アプリ内全画面「トライアルは終了しました」明確な選択肢
15日目メール「データは安全に保管されています――いつでも再開できます」安心感
トライアル終了画面の設計
┌─────────────────────────────────────────┐
│  Your trial has ended                    │
│                                          │
│  What you accomplished during trial:     │
│  - Created [N] projects                 │  Personalized data
│  - Invited [N] team members             │
│  - Saved an estimated [X] hours         │
│                                          │
│  What happens now:                       │
│  - Your data is saved for 30 days       │
│  - Read-only access to existing work    │
│  - Full access resumes when you upgrade │
│                                          │
│  [Continue with Pro - $X/mo]            │
│  [Remind Me Later]  [Downgrade to Free] │
└─────────────────────────────────────────┘

タイミングと頻度のルール

表示頻度の上限
ルール実装
セッションあたり最大1回のペイウォール1回の訪問中に2度割り込まない
閉じた後3~7日間は再表示しない「今はしない」をクリックした場合、少なくとも3日間は待ちます
作業中には表示しないユーザーが作成中、編集作業中、またはワークフローの途中の場合は、割り込みません
月あたり最大3回1か月の間に3回閉じられたら、翌月まで表示を停止します
不快感を示す兆候を追跡ユーザーがペイウォールを繰り返し1秒以内に閉じた場合、再表示までの間隔を延ばします
段階的なアプローチ
試行回数アプローチ押しつけがましさ
1控えめなバナーまたはサイドバーウィジェット低
2価値提案を含むモーダル中
3特別オファー(割引/トライアル延長)付きモーダル中~高
4回以上表示頻度を減らし、メールでの継続的な案内に切り替える低(チャネルを変更)

アップグレードフローの最適化

ペイウォールのクリックから支払いまで
ステップ最適化
1. アップグレードの CTA をクリックアップグレードのフローを開きます(可能であれば外部ページにリダイレクトしないでください)
2. プランの選択推奨プランをあらかじめ選択し、比較を表示します
3. 支払い既知の情報(メールアドレス、名前)をあらかじめ入力し、すべての支払い方法に対応します
4. 確認有料機能をすぐに利用できるようにし、確認メールを送信します
5. アップグレード後新たに利用可能になった機能を案内し、お祝いの演出をします
摩擦の軽減
  • アップグレードのフローを現在の画面内にとどめます(全面的なページ遷移ではなく、モーダルまたはスライドアウトを使用します)
  • 既知の情報をすべてあらかじめ入力します
  • 保存済みの支払い方法に対応し、再度アップグレードするユーザーにはワンクリックでアップグレードできるようにします
  • 支払いのステップに進む前に価格を明確に表示します(予期しない請求を避けます)

ダークパターンを避ける

絶対に使用しないパターン
ダークパターン失敗する理由倫理的な代替案
閉じるボタンを隠す信頼を損ない、サポートへの問い合わせが増えます右上に明確な X を配置します
罪悪感をあおる文言(「いいえ、ビジネスを成長させたくありません」)操作的で、ブランドへの信頼を損ないます「後で」または「今はしない」
カウントダウンタイマー(偽の緊急性)リセットされることにユーザーが気づき、信頼性を損ないます実際に期限が切れるオファーに限って使用します
分かりにくいプラン選択ユーザーがだまされたと感じ、返金率が高まります正直な比較と分かりやすいプラン名を使用します
重要な操作をブロックするユーザーが閉じ込められたと感じ、解約が増えます既存の機能を引き続き使えるようにします
ダウングレードを難しくする規制上のリスクがあります(特に EU/CA)ワンクリックでダウングレードできるオプションを用意します

プラットフォーム固有の考慮事項

iOS App Store
  • Apple はデジタル商品/サービスにアプリ内課金(IAP)を必須としています
  • Apple の手数料は 30%です(中小企業向けプログラムでは 15%)
  • App Store 審査ガイドライン 3.1 に準拠する必要があります
  • アプリ内から外部の支払いページへのリンクは設定できません
  • サブスクリプションの条件と更新について明確に伝える必要があります
Google Play
  • iOS と同様の IAP 要件があります
  • デジタル商品には Google Play の課金が必要です
  • 年間収益の最初の 100 万ドルには 15%の手数料がかかり、それ以降は 30%です
  • 明確なサブスクリプション管理機能を提供する必要があります
Web アプリ
  • 支払いフローと表示を完全に制御できます
  • 任意の支払い方法を提供できます
  • プラットフォーム手数料はありません
  • アプリ審査による遅延を気にせず、自由に A/B テストを実施できます

指標とベンチマーク

主要な指標
指標計算式ベンチマーク
ペイウォール表示率ペイウォールを見たユーザー数 / アクティブユーザー数計測対象。共通のベンチマークはありません
ペイウォールの CTRアップグレードのクリック数 / ペイウォールの表示回数5~15%
アップグレード完了率アップグレード完了数 / アップグレードのクリック数30~60%
無料から有料へのコンバージョン率有料ユーザー数 / 無料ユーザー総数フリーミアムでは 2~5%、トライアルでは 15~30%
ユーザーあたりの収益(ARPU)総収益 / アクティブユーザー数セグメントによって異なります
アップグレード後の解約率(30 日間)30 日以内に解約したユーザー数 / 新規有料ユーザー数< 10%
警告サイン
サイン診断対応
CTR < 3%ペイウォールの文言または表示タイミングが適切ではありません別のトリガーやメッセージをテストします
完了率 < 20%アップグレードのフローに摩擦が多すぎます支払いフローを簡素化します
アップグレード後の解約率 > 15%提供価値が期待に見合っていません機能へのアクセスとオンボーディングを見直します
無料から有料へのコンバージョン率 < 1%価値を提供する前にペイウォールが表示されていますアクティベーション後までトリガーを遅らせます

A/B テストのフレームワーク

効果の大きいテスト
テスト仮説指標
トリガーのタイミング(早めと遅め)トリガーを遅らせるとコンバージョン率が高くなります無料から有料へのコンバージョン率
ソフトゲートとハードゲートソフトゲート(プレビュー)のほうがコンバージョンにつながります機能ゲートの CTR
文言のバリエーション価値重視と緊急性重視ペイウォールの CTR
価格の表示方法月額と年額のデフォルト表示ARPU
テスト計測
  • 最低2週間、または各バリアントで100件のコンバージョンが発生するまで実施します
  • アップグレード率とアップグレード後30日間の継続率を追跡します
  • アップグレードが増えても、解約が増えるテストは全体としてマイナスです

成果物

成果物形式説明
ペイウォールトリガーマップトリガー x タイミング x 頻度の表ルールとクールダウンを含むすべてのトリガーポイント
画面コピーセット画面デザイン一式ペイウォールの各タイプについて、見出し、メリット、CTA、回避手段
アップグレードフロー図ステップごとのフローペイウォールのクリックからアップグレード後の確認まで
ダークパターン監査チェックリスト既存のペイウォールに操作的なパターンがないか確認します
トライアル終了シーケンス日ごとの計画トライアル終了までのアプリ内通知とメールのシーケンス
A/Bテストのバックログ優先順位付きの表期待される効果順に並べたテスト案

ツールリファレンス

1. paywall_trigger_auditor.py

ペイウォールのトリガー設定について、タイミング、頻度、網羅性の問題を監査します。トリガールールとユーザーイベントデータを含むJSONファイルを読み込み、設定ミスのあるトリガー、クールダウンの欠如、ダークパターンのリスクにフラグを立てます。

python scripts/paywall_trigger_auditor.py triggers.json --format text
python scripts/paywall_trigger_auditor.py triggers.json --format json
フラグ種類説明
triggers.json位置引数トリガールールとイベントデータを含むJSONファイルへのパス
--format任意出力形式:text(デフォルト)またはjson
2. upgrade_funnel_analyzer.py

ペイウォールの表示から支払い完了までのアップグレードファネルを、ステップごとに分析します。離脱が最も多いステップを特定し、各段階間のコンバージョン率を算出して、業界目標と比較します。

python scripts/upgrade_funnel_analyzer.py funnel.json --format text
python scripts/upgrade_funnel_analyzer.py funnel.json --format json
フラグ種類説明
funnel.json位置引数ファネルのステップデータを含むJSONファイルへのパス
--format任意出力形式:text(デフォルト)またはjson
3. paywall_copy_scorer.py

実績のあるコンバージョンパターンに照らして、ペイウォール画面のコピーを採点します。見出しの構成、メリットの明確さ、CTAの訴求力、ソーシャルプルーフの有無、ダークパターンのリスクを評価します。項目ごとのフィードバックとともに、0~100のスコアを出力します。

python scripts/paywall_copy_scorer.py copy.json --format text
python scripts/paywall_copy_scorer.py copy.json --format json
フラグ種類説明
copy.json位置引数ペイウォールのコピー要素を含むJSONファイルへのパス
--format任意出力形式:text(デフォルト)またはjson

トラブルシューティング

問題考えられる原因解決策
ペイウォールのCTRが3%未満ユーザーがアハ体験に到達する前にトリガーが作動している、またはコピーがメリットではなく機能を中心に訴求しているアクティベーションイベントの後までトリガーを遅らせます。見出しを成果に基づくメッセージに書き換えます(Stravaの事例ではCTRが最大23%向上)
アップグレード完了率が20%未満決済フローの摩擦が大きすぎる(リダイレクト、利用できる決済方法の不足、予期しない請求)フローをアプリ内で完結させ(モーダル/スライドアウト)、既知の情報を事前入力し、決済ステップの前に価格を表示します
アップグレード後の解約率が15%超価値への期待との不一致――有料版の体験がペイウォールで約束した内容と一致していないアップグレード後に利用できる機能を監査し、新たに利用可能になった機能のガイドツアーを追加し、コピーを実際の機能に合わせます
無料版から有料版へのコンバージョン率が1%未満価値が提供される前にペイウォールが表示される、または無料プランの内容が充実しすぎているアクティベーションイベントを特定し、アハ体験の後にのみペイウォールが表示されるようにします。無料版と有料版の機能の境界を見直します
ユーザーがペイウォールを1秒以内に繰り返し閉じるペイウォールがワークフローを妨げている、または表示頻度が高すぎる閉じられた後のクールダウンを7日以上に延ばし、月3回までに制限し、より邪魔にならない形式(モーダルではなくバナー)に切り替えます
モバイルのペイウォールの成果がデスクトップより30%超低いiOS/Androidのアプリ内課金(IAP)に伴う摩擦、小さな閉じるボタン、またはモバイルでの全画面オーバーレイ44x44pxのタップ領域を確保し、モバイルではボトムシート形式を使用し、App Storeのガイドラインに準拠します
トライアル終了メールの開封率が低い件名が一般的すぎる、送信タイミングが適切でない、またはメールの到達性に問題がある利用状況データを使ってパーソナライズします(「12件のプロジェクトを作成しました」など)。ユーザーがアクティブな時間帯に送信し、スパムスコアを確認します

成功基準

  • フリーミアムモデルでは無料版から有料版へのコンバージョン率が2~5%、トライアルモデルでは15~30%に、最適化から90日以内に到達する
  • すべてのトリガータイプでペイウォールのCTRが5~15%で安定する
  • アップグレード完了率(ペイウォールのクリックから決済まで)が30%を超える
  • アップグレード後30日間の継続率が90%を超える(解約率は10%未満)
  • ペイウォールへの不快感を示す指標(1秒未満で閉じられる割合)がインプレッションの5%未満に減少する
  • ペイウォール監査でダークパターンが一切見つからない(罪悪感をあおるコピー、隠された閉じるボタン、偽の緊急性がない)
  • 年間プランへの切り替えをデフォルトにした場合、新規アップグレードの40%以上が年間プランを選択する(ベンチマーク:20~40%向上)

対象範囲と制限事項

対象範囲: 機能制限、利用上限画面、トライアル終了シーケンス、アップグレードトリガーのタイミング、引き留めオファーの戦略、ペイウォール画面のデザイン、フリーミアムから有料版へのコンバージョンおよびトライアルから有料版へのコンバージョンのためのA/Bテストフレームワークなど、製品内のアップグレードフロー。

対象外: 一般公開の価格ページ(page-croを使用)、料金モデル自体(pricing-strategyを使用)、アハ体験前の登録後オンボーディング(onboarding-croを使用)、初回登録フロー(signup-flow-croを使用)、アップグレード後の解約防止施策(churn-preventionを使用)。このスキルでは、App Store最適化(ASO)や有料ユーザー獲得戦略は扱いません。スクリプトはローカルデータのみを対象とし、決済処理サービス、分析プラットフォーム、A/Bテストツールとの連携はありません。

制限事項: コンバージョンのベンチマークは、SaaS/アプリ業界の集計データに基づいており、業種、価格帯、オーディエンスによって大きく異なる場合があります。モバイルのペイウォールのパフォーマンスは、プラットフォーム固有のIAP要件(Appleの30%の手数料、Google Playの課金)に大きく左右されます。スクリプトが分析するのは静的なスナップショットです。リアルタイムのペイウォール最適化には、ここでは提供されていない分析プラットフォームおよび実験プラットフォームとの連携が必要です。


連携ポイント

  • pricing-strategy -- 料金プランの構成と価値指標を、ペイウォールのコピーやプラン比較のデザインに反映します
  • onboarding-cro -- アクティベーションイベントの定義を調整します。ペイウォールの表示は、オンボーディングで「なるほど」と感じる瞬間が確認された後に限ります
  • churn-prevention -- アップグレード後のチャーンデータを、ペイウォールでの期待値設定にフィードバックします。解約防止オファーはチャーン防止のプレイブックに沿わせます
  • page-cro -- 公開料金ページのデザインをアプリ内アップグレードフローに反映し、メッセージの一貫性を確保します
  • signup-flow-cro -- 登録フローの完了をトライアル開始のトリガーにします。トライアル期間とペイウォールの表示タイミングは、登録時の状況によって決まります
  • popup-cro -- 表示頻度の上限設定ロジックと抑制ルールを共有します。ペイウォールのモーダルにも、マーケティングポップアップと同じUX原則を適用します

関連スキル

  • page-cro -- 公開料金ページの最適化に使用します。Paywall-upgrade-croは、プロダクト内でのアップグレードのタイミングを扱います。
  • onboarding-cro -- ユーザーがまだアクティベーションに到達していない場合に使用します。「なるほど」と感じる瞬間より前にペイウォールを表示しないでください。
  • pricing-strategy -- 料金モデル自体の再設計が必要な場合に使用します(プラン構成、価値指標、価格設定)。
  • churn-prevention -- ユーザーがアップグレード後に解約する場合に使用します。アップグレードに至らない場合は、このスキルで対処します。
  • signup-flow-cro -- 初回の登録フローに使用します。Paywall-upgrade-croは、登録後の収益化を扱います。

コメント