概要:インストール後のアプリ内イベント(ログインやアプリ内購入など)を計測し、メディアソースやキャンペーンの成果に紐づけましょう。
なぜアプリ内イベントを計測すべきですか?
アプリ内イベントはアプリ内で何が起こっているかを知るインサイトを提供し、アプリユーザーの価値とさまざまなメディアソースからもたらされるトラフィックの質を決める重要なツールです。例えば、アプリ内イベントを計測することで、ROI(投資収益率)やLTV(顧客生涯価値)などのKPIを計測できるようになります。
ユーザーが会員登録を実行、チュートリアルを完了、ショッピングカートに商品を追加、購入を行った場合に、アプリ内イベントはそれらのデータを詳細とともに計測します。アプリ内イベントの実装は、インストール後のデータ分析をするために必須です。
アプリ内イベントについて
アプリ内イベントは、イベント名とイベントパラメーターで構成されています。アプリ内イベントにイベントパラメーターを追加した場合、リッチアプリ内イベントと呼ばれます。イベントパラメーターは、発生したイベントに関するより多くのコンテキストと情報を提供します。例えば、ユーザーが予約イベントを実行したという情報はある程度役立ちますが、イベントパラメーターを追加することで、予約の種類、目的地、収益値などの詳細を知ることができます。
ヒント
アプリ内イベントについてもっと知りたいですか?
クイックに重要なポイントを押さえたAppsFlyerラーニングポータルコースをご活用ください。
既定イベントとカスタムイベント
アプリ内イベントを送信するためには、ディベロッパーがアプリ内で必要なコードを実装する必要があります。イベント名とイベントパラメーターは、以下のように分類されます:
-
既定:これらはさまざまなアプリで使用される一般的なイベント名とイベントパラメーターです。以下のような理由により、できる限り既定のイベント名とイベントパラメーターを使用することを推奨しています:
- 既定の名前を使用すると、パートナーに自動的にイベントがマッピングされます。
- もしAppsFlyerがイベント名やイベントパラメーターを変更した場合、実装は下位互換性があります。
- カスタム:これらはアプリ内で発生する特定のユーザーシナリオに対して定義するイベント名とパラメーターです。任意のカスタムイベント名やパラメーターの文字列を使用することができますが、カスタムイベントはディベロッパーにより管理が必要です。ヒントと制限事項を参照してください。
収益イベント
購入や航空券の予約などのアプリ内イベントを送信する際には、関連する収益と一緒に送信する必要があります。アプリ内イベントで収益を意味する唯一のパラメーターは、af_revenue
です。
購入のキャンセルや返金など、マイナスとなる収益を記録したい場合は、マイナスの収益を送ることができます。マイナスの収益を記録するには、af_revenue
に渡す収益値にマイナスの記号(-)を追加してください。
af_revenue は、ユーザーの収益を累積する唯一のパラメーターです。ビジネスロジックに従って、実際に収益が発生するイベントの場合は、常にこのパラメーターを使用してください。
af_revenueは、キャンセルされたトランザクションや返金などのイベントを記録する必要がある場合にも、負の収益値を持つことができます。
売上値には、数字 (および必要に応じて小数点) のみを含める必要があります。
- 他の文字や記号を含めたり、収益値を他の方法でフォーマットしたりしないでください。つまり、コンマ、通貨記号 (例:¥)、特殊文字、またはテキストは使用できません。
- AppsFlyerでは、小数点以下5桁までの精度で収益値を設定できます。
- この値の範囲は、-10,000 から 10,000 ドルまたは同等の元の通貨金額である必要があります。
※この範囲外の値は、ローデータレポートには含まれますが、集計レポートには含まれません。 - 例:1234.56
- 収益を文字列として送信する場合、引用符内の値は有効である必要があります。例:1234.56
注記:
- AppsFlyerでは、SDKから送信された正確な収益が表示されます。VAT(付加価値税)やアプリストア手数料などの計算は含まれません。ただし、開発者がAppsFlyerに送信する前にSDK側でそれらを含むようにロジック構築をしている場合を除きます。
af_currency は、af_revenue(または af_price)の通貨単位を示します。イベントパラメーターに af_currency がない場合は、AppsFlyerはデフォルト値である「USD」を送信します。
af_price は金額に関するパラメーターとして使用できますが、収益にはカウントされません(例:「カートに追加」イベントなど向け)。このパラメーターは、個々の商品の価格を示します。すべての購入イベントの合計金額は、af_revenue に従って表示されます。
収益の通貨単位
AppsFlyerが通貨設定と通貨換算をどのように処理するかを理解することは重要です。
AppsFlyerは、通貨換算を使用して、アプリ設定の通貨とアプリ内イベント通貨の差を処理します。
上の図では、次のプロセスを示しています:
- イベントごとに異なる通貨が設定されているアプリ内イベントが送信されます。
- AppsFlyerはすべての通貨をUSDに正規化します。
- AppsFlyerは収益データを処理します。
- 管理画面の収益データがアプリ設定の通貨で表示されます。
- AppsFlyerは、ローデータレポートに収益データをイベントとアプリ設定の両方の通貨で記入します。
AppsFlyerは通貨換算にOpen Exchange Ratesを利用しています。この為替レートは一時間ごとに更新されます。AppsFlyerが通貨変換を実行するたびに、最新更新時の為替レートが適用されます。
通貨換算
例
アプリ設定にて、通貨をGBPに設定します。フランスからのユーザーがアプリを利用して商品を購入します。料金は EUR (€) で表記されています。AppsFlyerに送信されるアプリ内イベントは、次のようになります。
Map<String, Object> eventValue = new HashMap<String, Object>(); eventValue.put(AFInAppEventParameterName.REVENUE,200); eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a"); eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567"); eventValue.put(AFInAppEventParameterName.CURRENCY,"USD"); AppsFlyerLib.getInstance().trackEvent(getApplicationContext(), AFInAppEventType.PURCHASE , eventValue);
この場合、AppsFlyerは収益を EUR から USD に変換し、その後 GBP に変換します。為替レートが €1 = $1.13 であると仮定すると、€200 は $226.85 になります。次に、AppsFlyerは USD から GBP に変換します。為替レートが $1 = £0.78 と仮定すると、$226.85 は £176.92 になります。
表示する通貨
通貨はアプリ設定から設定できます。アプリ設定で設定した通貨が、管理画面上で表示される通貨です。アプリ内イベントで送信する通貨に関係なく、管理画面の収益は常にアプリ設定で指定した通貨で表示されます。
例
例えば、アプリ設定で設定した通貨とは異なる通貨で、または通貨を全く設定せずに、アプリ内イベントを送信したとします。この例では、アプリ設定の通貨はGBPに設定されています。
AppsFlyerに3つのアプリ内イベントを送信します。
- イベントAは、234の収益があり、通貨はGBPが設定されています。
- イベントBは、171の収益があり、通貨はEURが設定されています。
- イベントCは、171の収益があり、通貨は設定されていません。
管理画面の収益データ
管理画面に表示される収益データは、アプリ内イベントの通貨からUSDに、その後アプリ設定の通貨に変換された値です。
イベント内で通貨が指定されていない場合は、AppsFlyerはデフォルトでUSDを使用します。管理画面ではイベントと収益を次のように表示します:
アプリ内イベント | ユニークユーザー | アクション数 | 収益 |
---|---|---|---|
A | 1 | 1 | £234 |
B | 1 | 1 | £149.4 - EUR から USD に、その後 GBP に変換された値です。 |
C | 1 | 1 | £132.9 - 通貨が設定されていないためデフォルトは USD です。直接 USD から GBP に変換されます。 |
ローデータレポートの収益データ
アプリ設定で通貨をGBPに設定し、アプリ内イベントでは異なる通貨を送信した場合、ローデータレポートはアプリ設定とアプリイベントの両方の通貨で収益を表示します。
アプリ設定で通貨をGBPに設定し、アプリ内イベントでは通貨を指定せずに送信した場合、ローデータレポートはアプリ設定と USD の両方の通貨で収益を表示します。
アプリ内イベントのローデータレポートはイベントと収益を、次のように表示します:
イベント | Event Revenue | Event Revenue Currency | Event Revenue GBP (GBPでのイベント収益) |
---|---|---|---|
A | 234 | GBP | 234 |
B | 171 | EUR | 149.4 - EUR から USD に、その後 GBP に変換された値です。 |
C | 171 | 米ドル | £132.9 - 通貨が設定されていないためデフォルトは USD です。直接 USD から GBP に変換されます。 |
イベントの送信
AppsFlyerにアプリ内イベントを送信するには、いくつかの方法があります。
- AppsFlyer SDK:これはイベントを送信する最も一般的な方法です。AppsFlyerのアプリ内イベントAPIをSDKレベルで使用して、アプリ内のユーザーアクションを記録するリッチアプリ内イベントを送信できます。
- S2S API:サーバー間 (S2S) APIを使用して、モバイルアプリの外部で発生したイベントを直接AppsFlyerに送信します。例えば、Webとアプリの両方のインターフェースを利用しているユーザーがいる場合、Webとアプリからのイベントをそれぞれ記録して、AppsFlyer上で同じユーザーの行動として紐付けることができます。アプリ内イベントだけでなく、Webサイトのイベント、コールセンターのイベント、実店舗での購入など、他のイベントも対象にできます。
- レシート検証:AppleやGoogleなどの決済プラットフォーム側で計測通りにアプリ内購入が行われたことを検証する安全上のメカニズムです。不正な収益イベントの対策のための基本的なツールです。真の収益額を把握し、不完全なアプリ内課金と区別するのにも役立ちます。
- ハイブリッドアプリ:これらのアプリは、ネイティブビューとHTMLコンテンツを組み合わせ、アプリ内イベントの計測もできます。ただし、SDKはネイティブ側からのみ送信できるため、ディベロッパーは全てのイベントをネイティブコードに転送する必要があります。
アプリ内イベントの設定
アプリ内イベントを設定するには、マーケターと開発者が以下のように連携する必要があります。
Step | 役割 | タスク | 詳細 |
---|---|---|---|
1 | マーケティング担当者 | 計測したいアプリ内イベントを決定してください。イベント名とイベントパラメーターを定義しディベロッパーに共有してください。 |
最初は、イベント数3〜5個で開始し、ユーザーの品質(購入、登録、共有など)を測定するためのKPIとして使用することをおすすめします。イベントパラメーターはオプションで、どのイベントパラメーターもどのイベント名でも使用できます。 典型的なアプリ内イベントについては、アプリ分野別の推奨イベントを参照してください。 |
2 | デベロッパー | 必要に応じてアプリにコードを実装してください。 | ディベロッパー向けドキュメントはこちらです。 |
3 [オプション] | マーケティング担当者 | ディベロッパーと協力してカスタマーユーザーID(CUID)を設定してください。 | この項目は、CUIDをキーとしてAppsFlyerの計測データを他のデータと相互参照することで、アプリ内イベントデータの充実に役立ちます。 |
4 [オプション] | マーケティング担当者 | 管理画面で関連するパートナーにイベントをマッピングしてください。 | 業種別の推奨イベント |
アプリ内イベントの定義
計測したいアプリ内イベントが決定したら、アプリ内イベント生成ツールを使用して、以下のようにイベントとパラメーターを定義してください。
- 記録したいシナリオに最適なイベント名を選択してください。
- イベントに紐づけたいイベントパラメーターを選択してください。イベントに関する追加のコンテキストを提供し、データをより充実させるパラメーターを選択してください。
- アプリ内イベント生成ツールから完全なファイルをダウンロードして、ディベロッパーと共有してください。
例
あるEコマースアプリのマーケティング担当者は、ユーザーが閲覧したコンテンツの種類を記録することで、どのカテゴリーが最も人気があるのかをより良く理解し、商品の閲覧数を商品の売上に結び付けたいと考えています。
以下の表には、マーケターがデベロッパーに渡すイベント構造の例を示しています。
イベント名 | イベントパラメータ | パラメーター値 | いつイベントをトリガーするか |
---|---|---|---|
af_content_view | af_price | 商品価格 | ユーザーが特定の製品詳細ページを閲覧したとき |
af_content_type | 製品カテゴリーの名前(例:くつ) | ||
af_content_id | プロダクトID(例:SKU) |
業種別の推奨イベント
以下の表では、業種別に推奨する一般的なアプリ内イベントの例とフローを含む記事へのリンクを提供しています。
アプリ内イベントデータの確認
アプリ内イベントは、インストールをもたらしたメディアソースの成果として紐付けられて計測されます。イベントデータは、顧客生涯価値(LTV)またはアクティビティデータとして表示されます。
アプリ内イベントのデータは、以下の場所で確認できます。
- 管理画面のオーバービューページ:リアルタイムのLTVユーザー獲得(UA)パフォーマンスを表示します。注記:これには、アプリ内イベントでレポートされるオーガニックと非オーガニックユーザー別の収益値と、重複計測されたリターゲティング収益が含まれています。
- イベントページ:メディアソースのアプリ内イベントのLTVパフォーマンスを表示します。
- アクティビティページ:選択された日付範囲のアプリ内アクティビティが表示されます。
-
ローデータアプリ内イベントレポート:アクティビティデータを表示します。つまり、全てのユーザーが実行したアクションを時系列で表示します。このレポートには、イベントパラメーターの値が含まれています。例:
{ "af_level":"10", "af_score":"3387", "arena":"7", "char_type":"paladin" }
ローデータレポートはプレミアム機能です。
ヒント
イベント名とパラメーターを定義する際には、以下の点に注意してください。
- ローデータレポートにおいてデータの一貫性を保つために、すべてのプラットフォームで同じアプリ内イベント名と構造を定義し、使用することをお勧めします。
- 最小限のイベント数を使用して、さまざまな媒体からのユーザーの質を簡単に比較できるようにします。
- ユーザーのプライバシーを保護することは重要です。アプリ内イベントの値に直接個人を識別できる情報を入力しないでください。例えば、メールアドレス、名前、ID番号、一部の場所に関する郵便番号などです。制限されているデータについての詳細は、サービスプライバシーポリシーを参照してください。
- AppsFlyerは、エンゲージメント中にデバイスのIPアドレスを収集します。管轄区域または使用シナリオによっては、IPアドレスがPIIと見なされる場合があります。IPアドレスを使用して、デバイスの広い地理的位置(都市、地区レベル)を取得しますが、特定のアドレスは取得しません。必要に応じて、ローデータレポートに表示されないように、IPアドレスをマスクするように選択できます。
- アプリ内イベントはAppsFlyerの収益データの唯一の情報源です。特定の収益値を各イベントに関連付けして、アプリの管理画面に表示できます。収益化パラメーターについてを参照してください。
制限事項
イベント名とパラメーターを定義する際には、以下の点に注意してください。
- アプリ内イベントの名前には、小文字の英数字 (a-zと0-9) のみを使用してください。イベント名では、大文字と小文字が区別されます。つまり、af_purchase と af_PURCHASE は2つの異なるイベントとしてローデータに表示されます。ただし、集計レポート(オーバービューやイベント画面など)では、1つのイベントとして表示されることがあります。
- カーディナリティの制限として、1日あたり300個のユニークイベントが設けられています。詳細はこちら
- ユニークユーザーは、アプリのインストール後の最初の100個のイベントに対してのみカウントされます。
- イベント名には次の文字で始めることはできません: " = + -
- イベント値には、エンコードされた URL またはASCIIに従ってエンコードされた場合を除き、 + 文字を含めることはできません。
- イベント名にスペースを含めることはできません。イベント名の前後にアンダースコア(下線付きスペース)を使用できます。
- イベント値は、ローデータレポートでは省略される可能性があるため、2000文字を超えてはなりません。
- 参照URLをイベント値として含める場合は、URLエンコードする必要があります。
- Meta広告には、イベント名とパラメータに関していくつかの制限があります。制限についてこちらを参照してください。
よくある質問
以下のセクションでは、アプリ内イベントに関するさまざまなFAQを掲載しています。
収益パラメーターの使い方を教えてください
任意のパラメーター名とイベントを使用して収益値を送信できます。ただし、収益(マイナスの収益を含む)をAppsFlyerのローデータと集計データに登録するためには、必ず af_revenue パラメーターを使用する必要があります。自身のビジネスロジックに基づいて、実際の収益生成を反映するアプリ内イベントに対して使用してください。
af_currency は、af_revenue(または af_price)の通貨単位を示しています。イベントパラメーターに af_currency がない場合は、AppsFlyerはデフォルト値である「USD」を送信します。
af_revenue パラメーターに関する詳細は、収益の計測ガイドを参照してください。
AppsFlyerはイベントをどのように計測しますか?
アプリ内イベントはアプリインストールに紐づく元のメディアソースの成果として計測されます。
アプリがインストール(初回起動)されると、AppsFlyerはさまざまなアトリビューション方法を使用してインストールアトリビューションを決定します。同時に、AppsFlyer SDKは新しい一意のAppsFlyer IDを作成し、これにアトリビューションの詳細を紐づけます。
その後アプリ内の同じデバイスで実行されるアプリ内イベントには、このIDが含まれています。これにより、AppsFlyerはイベントを元のメディアソースに紐づけることができます。広告主はこれを使用してアプリ内での完全なユーザージャーニーを追跡できます。
最近リターゲティングされたユーザーのイベントは重複計測されている可能性があります。
AppsFlyerは、以下の場合、計測されたインストールのイベントをオーガニックと計測します:
- インストール日から24ヵ月以上経っている
- メディアソースの規制によりユーザーレベルデータの削除が求められている
- ユーザーは、デバイスに保存されているアプリのデータを削除し、新しい AppsFlyer ID を強制的に作成した
デバイスがオフラインの場合、イベントは記録されますか?
インターネット接続が利用できないときにユーザーがイベントを開始した場合でも、Appsflyerはそれを記録できます。裏側の仕組み:
- SDKはイベントをAppsFlyerのサーバーに送信し、正常な応答を待ちます。
- SDKが正常な応答を受け取らなかった場合、イベントはキャッシュに保存されます。
- 次に正常な応答を受信されると、保存されていたイベントは再度サーバーに送信されます。
- キャッシュに複数のイベントがある場合は、それらはイベントを次々にサーバーに送信されます。
注意
SDKのキャッシュには最大40のイベントを保存できます。つまり、オフライン時に発生した最初の40のイベントのみが保存されます。次に正常な応答があるまで、それ以上のイベントについては破棄されます。
ローデータに表示されるevent timeは、ユーザーの端末が再びオンラインになった後にイベントがAppsFlyerに送信された時間で、イベントが実際に発生した時間ではありません。
複雑なアプリ内イベントとは何ですか?それらはどのように設定しますか?
複雑なアプリ内イベントは、1回のAPI呼び出しで複数のイベントを送ることができます。
関連性の高い複数のユーザーアクションをまとめてグループ化したい場合に便利です。たとえば、1回のセッション中に複数の商品をバスケットに追加するなどです。
例例:
{ "af_revenue":"50.87", "af_currency":"USD", "af_receipt_id":"57601333", "product":[ { "af_content_id":"1164_8186", "af_price":"8.97", "af_quantity":"1" }, { "af_content_id":"1164_8186", "af_price":"8.97", "af_quantity":"1" }, { "af_content_id":"1164_8186", "af_price":"8.97", "af_quantity":"1" }, { "af_content_id":"1177_8185", "af_price":"8.97", "af_quantity":"1" }, { "af_content_id":"0153_9077", "af_price":"14.99", "af_quantity":"1" } ] }
警告
複雑なアプリ内イベントは、Meta広告とCriteoでポストバックの問題を引き起こします。イベントをMeta広告とCriteoに完全にマッピングする必要がある場合は、ユーザーアクションごとに個別のイベントを送信します(たとえば、追加されたアイテムごとにカートに追加イベントを送信します)。アプリ内イベントのローデータを使用してこれらのイベントをグループ化してください。
1つのトランザクションに複数のアイテムを追加できますか?
1つのトランザクションに複数の商品を追加することができます。イベントパラメーターごとに1つの値を指定する代わりに、カンマ区切りで複数の商品をトランザクションに記述できます。フォーマットはJSON文字列です。
例
米国拠点のオンラインストアから、あるトランザクションで、田中さんは同じシャツを2着、靴を一足、帽子を1つ購入しました。各商品がそれぞれのパラメーターでリストに記述される順序は、全く同一でなければなりません。
"{\"af_content_id\": [\"123\",\"988\",\"399\"], \"af_quantity\": [\"2\",\"1\",\"1\"], \"af_price\": [\"25\",\"50\",\"10\"], \"af_revenue\": \"110\", \"af_currency\": \"USD\"}"
複数の項目がポストバックの配列として今後送信されます。現在、Meta広告とTwitterでは配列パラメータを正しく解析できません。この問題を解決するために、AppsFlyerは配列としてこれらのSRNに送信する代わりに、アイテムの数(af_quantity)を合計します。この例では、Meta広告は af_quantity=4と解析します。
注意
複数の商品は、次のアプリ内イベントで使用できます。
af_add_to_cart、af_add_to_wishlist、af_tutorial_completion、af_initiated_checkout、af_purchase、af_rate、af_spent_credits、af_content_view、af_travel_booking、af_update
AppsFlyerはどのようにイベントの重複排除を行いますか?
AppsFlyerにはイベントの重複排除メカニズムが存在します。すべてのアプリ内イベントをチェックして、同じ appsflyer_id から10秒以内に発生した同一のアプリ内イベントがあるかどうかを確認します。そのようなイベントが見つかった場合、メカニズムは重複を削除します。
両方のイベントの以下のフィールドが同じ場合、2つのイベントは同一であると見なされます。
- イベント名
- イベント値
- アプリID
- AppsFlyer ID
注意
重複排除は、SDKから送信されたアプリ内イベントに対してのみ機能します。
S2Sイベントは重複排除されません。
AppsFlyerのユーザーレベルデータの保持期間は何ですか?また削除義務はありますか?
AppsFlyerでは、法律で別途指示、要求、または許可されている場合を除いて、ユーザーレベルデータ(ローデータ)を24か月間保持します。一部のSRN/パートナーは、AppsFlyerを含むアトリビューションプロバイダーに24か月の期間が終了する前にSRN/パートナーに関するユーザーレベルデータを削除することを要求しています。
削除後、削除されたユーザーに紐づくイベントはオーガニックとして表示されます。過去の集計データは変更されません。詳細は、データ保持と削除に関する義務を参照してください。
イベントにOS(オペレーティングシステム)パラメーターを追加する必要がありますか?
- Android SDKとiOS SDKは自動的にOS(オペレーティングシステム)パラメーターを追加します。
- S2S APIに関して、2021年7月以降、iOSアプリに対してOS(オペレーティングシステム)パラメーターを送信する必要があります。このパラメーターを送信しないと、データはiOS 14.5ユーザーのものとみなされ、ローデータの利用方法に影響します。