概要:メディアソースとキャンペーンに紐付けられたインストール後のアプリ内イベント(ログイン、登録、アプリ内購入など)を計測します。
なぜアプリ内イベントを計測するのでしょうか?
アプリ内イベントは、ユーザーがアプリをインストール後、アプリ内でどういった行動を取ったかを理解するための鍵であり、アプリユーザーの価値や、異なるメディアソースからのトラフィックの質を判断する上で必須のデータです。アプリ内イベントを計測することで、流入元別のROI(投資収益率)やLTV(顧客生涯価値)といったKPIを測定することができ、普段の自身が行う施策の効果を可視化します。マーケターにとって、オプションではなく必須の指標です。
ユーザーが登録、チュートリアル完了、ショッピングカートへの商品追加、購入を行った際に、それぞれの詳細を含めてアプリ内イベントデータが記録されます。インストール後の分析を行うためには、アプリ内イベントの実装が必須です。
アプリ内イベントについて
アプリ内イベントはイベント名で構成され、イベントパラメーターを含めることが可能です。アプリ内イベントにイベントパラメーターを加えると、アプリ内イベントと呼ばれます。イベントパラメーターは、発生するイベントに関する詳細な情報と背景を提供します。例えば、ユーザーが予約を行ったことを知るのは有益ですが、イベントパラメーターにより、購入の種類、目的地、収益額などの詳細情報を得ることができます。
ヒント
アプリ内イベントについてもっと知りたいですか?クイックに重要なポイントを押さえたAppsFlyerラーニングポータルコースをご覧ください。
既定イベントとカスタムイベント
送信するアプリ内イベントには、開発者がアプリ内の適切な場所にコードを実装する必要があります。イベント名とイベントパラメーターは以下のように分類されます:
-
既定:これらは、さまざまなアプリで一般的に使用されるイベント名とイベントパラメーターです。次の理由から、できる限り既定のイベント名とイベントパラメーターを使用することを強くお勧めします:
- 既定の名前を使用することで、イベントをパートナー(広告媒体)に自動的にマッピングできます。
- AppsFlyerがイベントやイベントパラメーターの名前を変更した場合でも、実装は下位互換性を維持します。
- カスタム: これらは、アプリ内で発生する特定のユーザーシナリオに対して定義するイベント名とパラメーターです。任意のカスタムイベント名やパラメーター名の文字列を使用できますが、カスタムイベントのメンテナンスには開発者の注意が必要です。ヒントと制限を参照してください。
アプリ内イベントの収益
以下のセクションでは、収益イベントをAppsFlyerに送信する方法と、イベントに含まれるパラメータのマッピング方法について説明します。ただし、ROI360を利用する方が、最も正確で最新のコストおよび収益データ(アプリ内購入、サブスクリプション、広告からの収益データを含む)を入手できます。詳細:ROI360
イベント収益
課金・購入や航空券の予約など、アプリ内イベントを計測する際に、関連する売り上げ・収益を計測したい場合があります。
アプリ内イベントで収益を計測できる唯一のパラメータは
af_revenue
です。
ユーザーが購入をキャンセルした場合や、
払い戻しを行う際には、
マイナスの収益を計測することもできます。マイナスの収益を記録するには、収益値 af_revenue
パラメータにマイナス記号(-)を追加するだけで、ユーザーの収益を累積できます。
原則、実際の収益を生み出すアプリ内イベントで利用してください。
取引がキャンセルされるなどの場合に備えて、キャンセルされた取引などのイベントを記録する必要がある場合、af_revenueは、必要に応じて負の収益値を持つこともできます。
収益の値には、数字(と必要に応じて小数点)だけを含める必要があります :
- 他の文字や記号を含めたり、収益値を他の方法でフォーマットしたり しないでください。 これにはコンマ、 通貨 記号(例:$)、特殊文字、またはテキストを含めないことが意味されます。
- AppsFlyerは、収益を最大5桁の小数点で提供します。 小数点以下5桁までの精度で提供されます。
- この値の範囲は-1,000,000から1,000,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,"EUR"); 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に設定されています。
3つのアプリ内イベントをAppsFlyerに送信します。
- イベント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 の両方の通貨で収益を表示します。
アプリ内イベントのローデータレポートはイベントと収益を、次のように表示します:
イベント | イベント収益 | イベント収益通貨 | イベント収益 GBP |
---|---|---|---|
A | 234 | GBP | 234 |
B | 171 | EUR | 149.4 - EURからUSDに、そしてGBPに変換されます。 |
C | 171 | USD | 132.9 では通貨が指定されていないため、デフォルトでUSDで計上されます。 USDから直接GBPに変換されます。 |
イベントの送信
アプリ内イベントをAppsFlyerに送信する方法はいくつかあります:
- AppsFlyer SDK:これはイベントを送信する最も一般的な方法です。SDKレベルでAppsFlyerアプリ内イベントAPIを使用して、ユーザーのアクションを記録するアプリ内イベントを送信できます。
- S2SモバイルイベントAPI:サーバー間モバイルイベントAPIを使用して、アプリの外で発生したイベントをAppsFlyerに直接送信します。例:Webインターフェースとモバイルインターフェースの両方でサービス展開している場合、両方のプラットフォームからイベントを計測し、同一ユーザーにアトリビューションさせることができます。アプリ内イベントやウェブサイトイベント、コールセンターイベント、実店舗での購入など、さまざまなイベントが含まれることがあります。
- レシートの検証:これは、AppleやGoogleなどの決済プラットフォームが、アプリ内購入がレポートどおりに行われたことを検証する安全なメカニズムです。購入の検証は、不正な収益イベントを防ぐための主要な手段です。また、それにより実際の収益を把握し、不完全なアプリ内購入を除外するのにも役立ちます。
- ハイブリッドアプリ:これらのアプリはネイティブビューとHTMLコンテンツを組み合わせており、アプリ内イベントを記録することもできます。しかし、SDKはネイティブ側からのみイベントを送信できるため、デベロッパーはすべてのイベントデータをネイティブコードに転送する必要があります。
アプリ内イベントの設定
アプリ内イベントの設定プロセスでは、マーケターとデベロッパーが次のように協力することが必要です。
ステップ | 役割 | タスク | 詳細 |
---|---|---|---|
1 | マーケター | 測定するアプリ内イベントを決定します。イベント名とイベントパラメーターを定義してデベロッパーに伝えます。 |
ユーザーの品質を測定するためのKPIとして使用できる3~5個のイベント(購入、登録、共有など)から始めることをお勧めします。イベントパラメーターは任意であり、どのイベント名にも任意のパラメーターを使用できます。 一般的なアプリ内イベントについては、業種別推奨イベントをご覧ください。 |
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 はローデータでは別々のイベントとして扱われます。ただし、集計レポートや管理画面(オーバービューやイベントなど)では、小文字しか使用できないため、1つのイベントとして表示できます。
- 1日の固有イベント数には300の上限があります。詳細はこちら
- ユニークユーザーは、アプリインストール後の最初の100件のイベントのみカウントされます。
- イベント名は次の文字で始められません: " = + -
- エンコードされた URL 内または ASCII に従ってエンコードされていない限り、イベント値に + を含めることはできません。
- イベント名に空白を含めることはできません。イベント名の前後には下線(アンダースコア)を使用できます。
- ローデータレポートで短縮されないよう、イベント値は2,000文字を超えないようにしてください。しかし、イベントがSDKから送信されたものである場合、HTTPリクエストでペイロードが切り捨てられないよう1,000文字未満にすることを推奨します。
- イベント値として参照URLを含む場合は、必ずURLエンコードされている必要があります。
- メタ広告には、イベント名とパラメーターに関するいくつかの制限があります。制限についての詳細はこちらをご覧ください。
よくある質問
以下のセクションには、アプリ内イベントに関するさまざまな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は、次の場合にアプリ内ベントをオーガニックとして紐付けます:
- メディアソースの規約によりユーザーレベルのデータを削除する必要がある場合
- ユーザーが端末上のアプリの保存データを削除すると、新しいAppsFlyer IDの作成が強制的に行われます。
デバイスがオフラインの場合でもイベントは記録されますか?
インターネット接続が利用できないときにユーザーがイベントを開始しても、AppsFlyerはそれを記録します。仕組み:
- SDKはイベントをAppsFlyerサーバーに送信し、正常な応答を待機します。
- SDKが正常な応答を受け取らない場合、イベントはキャッシュに保存されます。
- 次に正常な応答が受信されると、保存されたイベントは再びサーバーに送信されます。
- キャッシュ内に複数のイベントがある場合、それらは順番にサーバーに送られます。
注
SDKキャッシュは最大で40個のイベントをストアできます。このため、オフラインで発生した最初の40個のイベントのみが保存されます。次の成功した応答があるまで、その後のイベントはすべて破棄されます。
ローデータに表示されるイベント時間は、デバイスが再びオンラインになった後にイベントが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で完全にマッピングする必要がある場合は、ユーザーアクションごとに個別のイベントを送信します(例えば、追加されたアイテムごとに「カートに追加」イベントを送信します)。アプリ内イベントのローデータを利用して、これらのイベントをグループ化します。
一つのトランザクションに複数のアイテムを追加できますか?
一つの取引(トランザクション)に複数のアイテムを追加できます。イベントパラメーターごとに単一の値を使用する代わりに、トランザクションを説明するアイテムの配列をコンマで区切って指定できます。形式は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広告とX広告は配列パラメーターを正しく解析できません。この問題の解決するために、AppsFlyerはアイテム数(af_quantity)を配列としてではなく合計数として これらのSRNに送信します。この例では、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はイベントの重複排除をどのように処理しますか?
アプリ内イベント重複排除メカニズムが適用されます。発火されたすべてのアプリ内イベントを確認し、10秒以内に同じAppsFlyer IDから発生した同一のアプリ内イベントが存在するかどうかをチェックします。そのようなイベントが見つかった場合、仕組みによって重複が削除されます。
以下のフィールド(項目)が両方イベントで同じである場合、2つのイベントは同一と見なされます:
- Event name
- Event value
- App ID
- AppsFlyer ID
注記
重複排除は、SDKから送信されるアプリ内イベントにのみ機能します。
S2Sアプリ内イベントは重複排除されません。
AppsFlyerはユーザーレベルのデータをどのくらいの期間保持し、削除の義務は何ですか?
AppsFlyerは、法律で別に指示、要求、または許可されている場合を除き、ユーザーレベルのローデータを24か月間のみ保持します。一部のSRN/パートナーは、AppsFlyerを含むアトリビューションプロバイダーに対して、24か月の期限が経過する前にSRN / パートナー関連のユーザーレベルデータを削除することを要求しています。
削除後、削除されたユーザーに紐づくイベントはオーガニックとして表示されます。過去の集計データは変更されません。詳細は、データ保持期間と削除の義務を参照してください。
イベントにOS(オペレーティングシステム)パラメータを追加する必要がありますか?
- Android SDK / iOS SDK:OSパラメータを自動的に追加します。
- S2SモバイルイベントAPI:2021年7月1日以降、iOSアプリのOSパラメータを手動で送信する必要があります。このパラメータを送信しない場合、データはiOS 14.5以降のユーザーと見なされ、ローデータの可用性や媒体へのポストバックに影響します。