概要:インストール後のアプリ内イベント(ログインやアプリ内購入など)を計測し、メディアソースやキャンペーンの成果に紐づけましょう。
関連記事
リッチアプリ内イベントを活用するための全体像を把握するためには、以下の記事を参照してください。
- リッチアプリ内イベント—概要(本記事)
- リッチアプリ内イベント—イベントの構造
- アプリ内イベント管理画面
なぜアプリ内イベントを計測すべきですか?
アプリ内イベントはアプリ内で何が起こっているかを知るインサイトを提供し、アプリユーザーの価値とさまざまなメディアソースからもたらされるトラフィックの質を決める重要なツールです。例えば、アプリ内イベントを計測することで、ROI(投資収益率)やLTV(顧客生涯価値)などのKPIを計測できるようになります。
ユーザーが会員登録を実行、チュートリアルを完了、ショッピングカートに商品を追加、購入を行った場合に、アプリ内イベントはそれらのデータを詳細とともに計測します。アプリ内イベントの実装は、インストール後のデータ分析をするために必須です。
アプリ内イベントについて
アプリ内イベントは、イベント名とイベントパラメーターで構成されています。アプリ内イベントにイベントパラメーターを追加した場合、リッチアプリ内イベントと呼ばれます。イベントパラメーターは、発生したイベントに関するより多くのコンテキストと情報を提供します。例えば、ユーザーが予約イベントを実行したという情報はある程度役立ちますが、イベントパラメーターを追加することで、予約の種類、目的地、収益値などの詳細を知ることができます。
既定イベントとカスタムイベント
アプリ内イベントを送信するためには、ディベロッパーがアプリ内で必要なコードを実装する必要があります。イベント名とイベントパラメーターは、以下のように分類されます:
-
既定:これらはさまざまなアプリで使用される一般的なイベント名とイベントパラメーターです。以下のような理由により、できる限り既定のイベント名とイベントパラメーターを使用することを推奨しています:
- 既定の名前を使用すると、パートナーに自動的にイベントがマッピングされます。
- もしAppsFlyerがイベント名やイベントパラメーターを変更した場合、実装は下位互換性があります。
- カスタム:これらはアプリ内で発生する特定のユーザーシナリオに対して定義するイベント名とパラメーターです。任意のカスタムイベント名やパラメーターの文字列を使用することができますが、カスタムイベントはディベロッパーにより管理が必要です。ヒントと制限事項を参照してください。
イベントの送信
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)またはアクティビティデータとして表示されます。
アプリ内イベントのデータは、以下の場所で確認できます。
- 管理画面のオーバービューページ:ユーザー獲得(UA)のパフォーマンスのLTVをリアルタイムで表示します。
- イベントページ:メディアソースのアプリ内イベントの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つのイベントとして表示されることがあります。
- イベント名は以下の文字で始まることはできません:"、=、+、-。
- イベント値は1000文字を超えないようにしてください。
- 参照URLをイベント値として含める場合は、URLエンコードする必要があります。
- Facebookでは、イベント名やパラメーターに関する制限を設けています。制限についてこちらを参照してください。
よくある質問
以下のセクションでは、アプリ内イベントに関するさまざまなFAQを掲載しています。
収益パラメーターの使い方を教えてください
任意のパラメーター名とイベントを使用して収益値を送信できます。ただし、収益(マイナスの収益を含む)をAppsFlyerのローデータと集計データに登録するためには、必ず af_revenue パラメーターを使用する必要があります。自身のビジネスロジックに基づいて、実際の収益生成を反映するアプリ内イベントに対して使用してください。
af_currency は、af_revenue(または af_price)の通貨単位を示しています。イベントパラメーターに af_currency がない場合は、AppsFlyerはデフォルト値である「USD」を送信します。
af_revenue パラメーターに関する詳細は、収益の計測ガイドを参照してください。
デバイスがオフラインの場合、イベントは記録されますか?
インターネット接続が利用できないときにユーザーがイベントを開始した場合でも、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"
}
]
}
警告
複雑なアプリ内イベントは、FacebookとCriteoでポストバックの問題を引き起こす場合があります。イベントをFacebookとCriteoで完全にマッピングする必要がある場合は、ユーザーのアクションごとに別々のイベントを送信してください(例えば、アイテムが追加されるごとにAdd to cartイベントを送信)。アプリ内イベントのローデータを使用してこれらのイベントをグループ化してください。
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\"}"
複数の項目がポストバックの配列として今後送信されます。現在、FacebookとTwitterは配列パラメータを正しく解析できません。この問題を解決するために、AppsFlyerは配列としてこれらのSRNに送信する代わりに、アイテムの数(af_quantity)を合計します。上記の例では、Facebookは 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はどのようにイベントの重複排除を行いますか?
Appsにはイベントの重複排除メカニズムがあります。すべてのアプリ内イベントをチェックして、同じ 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ユーザーのものとみなされ、ローデータの利用方法に影響します。