「アプリインストールキャンペーンを回しているけど、コンバージョンが本当に計上されているか分からない」。アプリのコンバージョン計測は、ウェブのそれとはまったく違う世界です(ウェブ側の設定についてはGA4コンバージョン計測ガイドやGoogle広告コンバージョン計測ガイドをご覧ください)。ページ上のタグもなければ、サンクスURLもなく、DevToolsのNetworkタブで確認することもできません。代わりにSDK、仲介するアプリストア、受け取れるデータ自体を制限するプライバシーフレームワークが登場します。
このガイドでは、主要プラットフォームでのアプリコンバージョン計測の仕組み、ウェブとの違い、正しく設定されているかの検証方法、iOSプライバシー変更がデータに与える影響を解説します。
1. アプリコンバージョン計測がウェブと違う点
ウェブでは、計測のチェーンは直線的です。ページ上のタグ→ユーザーアクション→広告プラットフォームへのリクエスト→コンバージョン記録。アプリでは、いくつかの要因が根本的に異なります。
| ウェブ | アプリ |
|---|---|
| ブラウザにタグが読み込まれる | SDKがアプリバイナリにコンパイルされる |
| ページ読み込みやボタンクリックでコンバージョン発火 | インストールやアプリ内イベントで発火 |
| DevToolsでリアルタイムに検査可能 | SDKログ、Firebase DebugView、テスト端末に依存 |
| ファーストパーティCookieが識別子を運ぶ | デバイスID(IDFA/GAID)またはプライバシー保護フレームワークが識別子を運ぶ |
| 変更は即時デプロイ(タグを更新) | 変更にはアプリ更新とストア審査サイクルが必要 |
最も重要な違い:アプリの計測は、タグの修正では直せません。 SDKバージョンやイベント実装が間違っていたら、修正にはアプリのアップデート、ストア審査の待ち時間、さらにユーザーのアップデート待ちが必要です。
2. 3つの計測経路
経路1:Firebase + Google広告
FirebaseはGoogleのアプリ分析用SDKで、Google広告のアプリコンバージョン計測の主要経路です。
仕組み:
- アプリにFirebase SDKを統合
- アプリコードでイベント(
first_open、purchase、sign_upなど)を記録 - FirebaseプロジェクトをGoogle広告にリンク
- Google広告でFirebaseイベントをコンバージョンアクションとしてインポート
計測できるもの:
- アプリインストール——
first_openイベントで自動計測 - アプリ内アクション——記録するすべてのカスタムイベント(購入、レベル完了、サブスクリプション開始)
- アプリ内購入売上——イベントに
valueとcurrencyパラメータを渡す場合
主な利点: FirebaseはGoogle広告への直接データパイプラインを提供。Googleキャンペーンにはサードパーティアトリビューションツールが不要。
経路2:SKAdNetwork(SKAN)iOS向け
iOS 14.5のApp Tracking Transparency(ATT)フレームワーク以降、ほとんどのiOSユーザーはトラッキングをオプトアウトします。SKAdNetworkは、広告経由のアプリインストールを計測するためのAppleのプライバシー保護代替手段です。
仕組み:
- 広告ネットワーク(Google、Metaなど)がAppleに広告ネットワークとして登録
- ユーザーが広告を見て/クリックしてアプリをインストールすると、Appleがポストバックを広告ネットワークに送信
- ポストバックには限定データが含まれる:広告ネットワークID、キャンペーンID、「コンバージョン値」(SKAN 3.0で0〜63、SKAN 4.0では「粗い」値も)
- ポストバックは遅延する(最短24〜48時間)、ユーザーレベルの識別子は含まれない
Firebaseと比べて失われるもの:
- ユーザーレベルのアトリビューション不可(どの特定ユーザーがコンバージョンしたか見えない)
- コンバージョン値の粒度が限定的(Firebaseの無制限に対し63種類の値)
- レポートが遅延(Firebaseのほぼリアルタイムに対し)
- 初期SKANバージョンではビュースルーアトリビューション不可
- ほとんどの場合キャンペーンレベルのアトリビューションのみ(広告グループやキーワードレベルは不可)
保持されるもの:
- キャンペーン別のインストール件数(集計値)
- インストール後の価値の大まかなシグナル(コンバージョン値スキーマを正しくマッピングした場合)
- プライバシーコンプライアンス——ユーザーの同意不要
経路3:Google Playインストールリファラー(Android)
Androidでは、Google Play Install Referrer APIがiOSのプライバシー制限なしに確定的なアトリビューションを提供します。
仕組み:
- ユーザーがGoogle広告をクリックしてPlay Storeからアプリをインストールすると、リファラーデータ(gclidを含む)がアプリに渡される
- Firebaseまたはアトリビューション用SDKが初回起動時にリファラーを読み取る
- インストールが特定のクリック、キャンペーン、広告グループ、キーワードに帰属される
主な利点: AndroidのアトリビューションはATT以降のiOSより大幅に完全です。ユーザーレベル、キーワードレベルのアトリビューションと完全なコンバージョンデータが取得できます。
3. Google広告コンバージョン計測のためのFirebase設定
ステップ1:アプリにFirebaseを追加
iOSまたはAndroid向けのFirebaseセットアップに従います。Firebase SDKの追加、設定ファイル(iOSはGoogleService-Info.plist、Androidはgoogle-services.json)、アプリコードでのFirebase初期化が含まれます。
ステップ2:コンバージョンイベントを記録
アプリコードで、コンバージョンとして計測したいイベントを記録します。
// iOS (Swift)
Analytics.logEvent("purchase", parameters: [
AnalyticsParameterValue: 990,
AnalyticsParameterCurrency: "JPY"
])
// Android (Kotlin)
firebaseAnalytics.logEvent("purchase") {
param(FirebaseAnalytics.Param.VALUE, 990.0)
param(FirebaseAnalytics.Param.CURRENCY, "JPY")
}
ステップ3:FirebaseをGoogle広告にリンク
Firebaseコンソール → プロジェクト設定 → 統合で、Google広告アカウントにリンクします。これによりGoogle広告がFirebaseからイベントをインポートできるようになります。
ステップ4:Google広告でイベントをコンバージョンとしてインポート
Google広告 → 目標 → コンバージョン → 新しいコンバージョンアクション → アプリ → Firebaseで、インポートしたいイベントを選択。主要なコンバージョンイベント(例:purchase)を入札用に「メイン」に設定します。
4. SKAdNetworkコンバージョン値の設定
SKAdNetworkは6ビット(値0〜63)でインストール後の行動をエンコードします。64の値にどうマッピングするかで、計測できる内容が決まります。
よくあるマッピング戦略
売上ベース: 値の範囲をコンバージョン値にマッピング(例:0=未購入、1=0〜500円、2=500〜1,000円、...63=50,000円以上)。Google広告に入札用の売上シグナルを提供します。
イベントベース: 主要なインストール後イベントをコンバージョン値にマッピング(例:0=インストールのみ、1=登録完了、2=チュートリアル完了、3=初回購入)。獲得したユーザーの質を広告ネットワークに伝えます。
ハイブリッド: 64の値に売上ティアとキーイベントを組み合わせます。
SKAN 4.0の変更点
SKAN 4.0で導入された変更:
- 1回ではなく3回のポストバック(異なるタイムウィンドウ)
- 2回目・3回目のポストバックには粗いコンバージョン値(低/中/高)
- より細かいキャンペーンレベルの粒度を持つソース識別子
Google広告やその他のプラットフォームはSKAN 4.0の完全対応をまだ展開中です。最新の機能については各プラットフォームの現在のドキュメントを確認してください。
SKAN 4.0のWeb-to-Appアトリビューション
SKAN 4.0の重要な追加機能:SafariからApp Storeへの遷移がアトリビューション対象になりました。 従来はアプリ内広告のみがSKANポストバックのトリガーでしたが、4.0からはSafariで表示されたウェブ広告からApp Storeインストールに至ったケースもアトリビューション可能に——ウェブ広告とアプリインストールキャンペーンを併用する広告主にとって大きな改善です。
Privacy Sandbox on Android:今後の変化
iOSのATTがすでにアプリ計測を変えた一方、AndroidではGoogleのPrivacy Sandbox on Androidが段階的にGAID(Google Advertising ID)への依存を減らしていきます:
- Attribution Reporting APIがデバイスIDベースのアトリビューションを、プライバシー保護された集計レポートに置き換え(SKANと概念的に類似)
- Topics APIがユーザー単位のトラッキングなしで興味ベースの広告ターゲティングを提供
- GAIDの廃止タイムラインは流動的ですが、AndroidでもiOSに近い計測環境に移行する準備を進めるべきです
実務上のアドバイス:Androidの現在の計測精度が永続するとは想定しないでください。Android上での集計ベースのアトリビューションへの準備を今から始めましょう。
5. MMP(モバイル計測パートナー)の選び方
複数の広告ネットワークで広告を出稿する場合、サードパーティのMMPがFirebase単独では得られないクロスネットワークアトリビューションを提供します。主要プラットフォームの比較:
| 機能 | AppsFlyer | Adjust | Singular |
|---|---|---|---|
| 市場シェア | グローバル最大 | 高い(特にゲーム業界) | 成長中、統合分析に強み |
| クロスネットワーク連携 | 10,000以上のパートナー連携 | 幅広い連携ライブラリ | コスト集約機能付き |
| SKAN対応 | 高度(SKAN 4.0、予測モデリング) | 完全対応 | 完全対応 |
| プライバシー機能 | Data Clean Room、集計データ | 強力なプライバシー制御、不正防止 | プライバシーファースト設計 |
| コスト集約 | 別製品として提供 | 提供あり | 標準搭載(差別化ポイント) |
| 料金体系 | 従量課金、大規模だと高額 | 従量課金 | 従量課金、比較的競争力ある |
| 最適な用途 | 大規模広告主、複雑なマルチチャネル | ゲーム、プライバシー重視アプリ | コスト重視で統一ビューが欲しい |
MMPが必要なケース:
- 3つ以上の広告ネットワークで同時にアプリインストールキャンペーンを実施
- ネットワーク間のインストール重複排除が必要(各ネットワークがクレジットを主張)
- クロスネットワークROASの単一ソースオブトゥルースが必要
- 高度な不正検知(クリックインジェクション、SDKスプーフィング)が必要
Firebase単独で十分なケース:
- Google広告が唯一(または主要な)アプリ広告チャネル
- クロスネットワークアトリビューションが不要
- アプリ広告予算が月額約500万円未満
6. ディープリンクとリエンゲージメント計測
アプリコンバージョン計測は新規インストールだけではありません。既存ユーザーベースを持つアプリでは、リエンゲージメント——ユーザーをアプリに呼び戻すこと——が獲得よりも価値が高いケースが多いです。
ディープリンクとコンバージョン計測
ディープリンクは、ユーザーをアプリのホーム画面ではなく、アプリ内の特定の画面に直接遷移させます。コンバージョン計測に影響する理由:
- リターゲティング広告をクリックして特定の商品ページに着地するユーザーは、ホーム画面に着地する場合と比較して約2倍のコンバージョン率
- ディープリンクのクリックは別のコンバージョンタイプとして計測(リエンゲージメント vs 新規インストール)
リエンゲージメントのアトリビューションルール
MMPは通常、以下の条件でリエンゲージメントコンバージョンをカウントします:
- ユーザーがすでにアプリをインストール済み
- 過去にアプリを3回以上起動している(新規ユーザーではない)
- インストールから10分以上経過(新規インストールアトリビューションと分離するため)
Web-to-App計測
ウェブで始まりアプリでコンバージョンするユーザーの計測は、最も難しいアトリビューション課題の一つです:
- **App Links(Android)/ Universal Links(iOS)**がウェブURLからアプリ内に直接ルーティング
- ウェブセッションとアプリセッション間のID連携はデバイスレベルのシグナルに依存しており、プライバシー変更がそれを削っている
- GoogleのApp Campaigns for EngagementやMMPのディープリンクソリューション(AppsFlyer OneLink、Adjust Links)がインフラを提供するが、アトリビューションのギャップは想定しておくべき
7. アプリコンバージョン計測の検証方法
検証方法1:Firebase DebugView
テスト端末でデバッグモードを有効にします:
- iOS: Xcodeで起動引数に
-FIRDebugEnabledを追加 - Android:
adb shell setprop debug.firebase.analytics.app your.package.nameを実行
Firebaseコンソール → DebugViewを開きます。アプリ内で操作するとイベントがリアルタイムで表示されるはずです。確認ポイント:
- イベント名がコンバージョンとして設定したものと一致するか
valueとcurrencyパラメータが存在し正しいか- イベントが正しいタイミングで発火するか(アプリ起動時ではなく、遅延もなく)
検証方法2:Google広告のコンバージョン計測ステータス
Google広告 → 目標 → コンバージョンで、アプリコンバージョンアクションのステータスを確認:
- 「コンバージョンを記録中」——正常に動作
- 「最近のコンバージョンなし」——インストール/イベントが発生していないか、FirebaseとGoogle広告のリンクが切れている
- 「未確認」——コンバージョンアクションは作成されたがデータを受信していない
検証方法3:実際の広告クリックでテスト(Android)
Androidでは、完全なアトリビューションチェーンをテストできます:
- 自社アプリの実際の広告をクリック(最小予算のテストキャンペーンを使用)
- Play Storeからアプリをインストール
- Firebaseで
first_openイベントを確認 - Google広告で記録されたコンバージョンを確認(処理に24〜48時間かかる場合あり)
iOSの注意点: ATTにより、このテストはiOSではあまり信頼できません。テスト端末でトラッキングにオプトインしていない場合、インストールはSKAdNetwork経由でのみ表示される可能性があります(遅延あり、ユーザーレベルデータなし)。
検証方法4:SKAdNetworkポストバックの確認
iOSの場合、SKANポストバックが受信されているか確認:
- Google広告のキャンペーンレポートで「SKANコンバージョン」列を確認
- SKAdNetworkレポーティングダッシュボード(サードパーティMMPを使用している場合)で受信ポストバックを確認
- SKANインストール件数と内部の初回起動データを比較——大きな乖離は設定ミスの可能性
8. よくあるアプリ計測の問題
| 問題 | 原因 | 対処 |
|---|---|---|
| FirebaseにはインストールがあるがGoogle広告にはない | Firebase→Google広告のリンクが切れている、またはイベントがコンバージョンとしてインポートされていない | Firebaseコンソール→統合でリンクを再確認、Google広告でイベントがインポートされているか確認 |
| コンバージョン値がすべてゼロ | イベントにvalueパラメータが渡されていない、またはSKANコンバージョン値マッピングが空 |
イベント記録コードにvalue/currencyを追加、SKAN値マッピングを設定 |
| iOSインストールが大幅に過少カウント | ATTオプトアウト率が高く、SKANポストバックのみがシグナル | iOS 14.5以降の想定内の動作。SKANデータとモデル化されたコンバージョンを併用 |
| Androidインストールが過少カウント | 初回起動時にFirebase SDKが初期化されていない、またはPlayリファラーが取得されていない | Applicationクラスで(遅延Activityではなく)Firebaseが初期化されるよう確認 |
| アプリ内イベントは発火するがコンバージョンとして記録されない | Firebaseにはイベントが記録されているが、Google広告のコンバージョンアクションとしてインポートされていない | Google広告→目標→コンバージョン→アプリでイベントをインポート |
| インストールの重複 | 複数のSDK(Firebase+サードパーティMMP)が両方インストールイベントを送信 | 各コンバージョンアクションに1つのソースオブトゥルースを使用、同じイベントを2つのソースからインポートしない |
9. ATTの影響:iOSで何を想定すべきか
iOS 14.5以降、ほとんどのユーザーがATTプロンプト(「[アプリ名]が他社のAppやWebサイトを横断してあなたのアクティビティを追跡することを許可しますか?」)を目にし、約70〜80%が拒否します。
拒否したユーザーについて:
- Firebaseはイベントを引き続き記録(分析はIDFAなしでも機能)しますが、Google広告はインストールを特定のクリックに帰属できない
- SKAdNetworkは限定的な粒度で集計アトリビューションを提供
- Googleのモデル化されたコンバージョンが機械学習でギャップの一部を埋める
実務上の影響:
- iOSのコンバージョン件数は実際のインストール数より少なくなる
- iOS上のキャンペーンレベルROASはAndroidより精度が低い
- iOSとAndroidのコンバージョン数を直接比較できない——根本的に異なる精度で計測されている
よくある質問
Q. FirebaseとサードパーティMMP(AppsFlyer、Adjustなど)の両方が必要ですか? A. Google広告のみならFirebaseで十分です。複数の広告ネットワーク(Google、Meta、TikTokなど)でキャンペーンを実施し、クロスネットワークのアトリビューションが必要なら、サードパーティMMPが統一ビューを提供します。大規模なアプリ広告主のほとんどは両方を使用しています。
Q. ウェブ→アプリのコンバージョン(ユーザーがウェブ広告をクリック→アプリをインストール→アプリ内でコンバージョン)を計測できますか? A. はい。Firebaseダイナミックリンク(現在はApp Links / Universal Linksに置き換え中)またはGoogleアナリティクスのクロスプラットフォーム計測を使用します。これは最も難しいアトリビューション問題のひとつです——ウェブとアプリ間のID連携はデバイスレベルのシグナルに依存しており、プライバシー変更がそれを削っています。
Q. SKANコンバージョン値がすべて0です。何が問題ですか? A. コンバージョン値マッピングが設定されていない(MMPまたはGoogle広告のSKAN設定を確認)か、ユーザーが対象アクションを取る前に計測ウィンドウが満了した可能性があります。SKANにはタイマーの制限があり、ウィンドウ内にユーザーが価値あるアクションを取らなければ値は0のままです。
Q. アプリ内購入の売上が正確か、どう検証しますか?
A. Firebase DebugViewのvalueパラメータを、アプリストアまたは決済プロセッサの記録と比較します。サーバー検証済み購入の場合、記録した売上が実際の課金額と一致するか確認してください(通貨の不一致、税・手数料の含み方に注意)。
まとめ:アプリ計測は別の専門領域
アプリコンバージョン計測には、ウェブ計測とは異なるツール、異なる検証方法、異なる期待値が必要です。核心原則は同じ——シグナルが広告プラットフォームに届いているか検証する——ですが、メカニズム(SDKvsタグ、デバイスIDvsCookie、SKANvs直接アトリビューション)が根本的に異なります。
ウェブから移行するチームにとって最大の調整点:iOSの計測は構造的に不正確であることを受け入れる。 ATT以降、ウェブで慣れているユーザーレベル、リアルタイムのアトリビューションは得られません。Firebase(分析とAndroidアトリビューション用)、SKAdNetwork(iOS集計アトリビューション用)、モデル化されたコンバージョン(ギャップの補完用)を組み合わせた計測戦略を構築してください。
ConversionOKはウェブのコンバージョンシグナルに特化しています——ランディングページやサンクスページのタグが実際に発火し、広告プラットフォームに届いているかを検証します。アプリの場合、同等の検証はFirebase DebugViewとSKANポストバックの監視から始まります。ウェブとアプリのデータをサーバーサイドGTMで橋渡ししている場合は、サーバーサイドGTMが正しく動いているかの確認方法も参考にしてください。