サーバーからAppsFlyerにイベントを送信し、アプリ外で発生するモバイル関連のイベントを計測します。
モバイル向けサーバー間イベントAPI
iOS 14以降のiOSアプリでは、os(オペレーティングシステム)パラメータを送信する必要があります。
AppsFlyerプラットフォームは、AppsFlyer SDKおよびAPIから送信されたモバイルアプリのイベントを記録し、アトリビューションを行います。 S2S APIを使うと、ユーザーがWebサイトでサブスクリプションを更新した場合など、アプリ外で発生したイベントを送信できます。記録されたS2Sイベントは、ダッシュボード、ローデータ、分析機能など、プラットフォーム全体で利用できます。 PBAのWebイベントについては、PBA向けWeb S2Sを参照してください。
AppsFlyerは、次の値をS2Sイベントに設定します。
- S2Sメッセージで送信された値
- インストール時刻やメディアソースなど、AppsFlyerのインストールアトリビューションに関する一部の値
API経由でイベントを送信するには、サーバー間イベントAPIの手順に従うよう開発者に依頼してください。
パラメータへの値の設定
オーガニックと非オーガニックの違い
AppsFlyerはS2Sアプリ内イベントを処理する際、AppsFlyer IDを使って、そのイベントに対応する過去のインストールイベントを特定し、アトリビューション関連のフィールドに値を設定します。
そのため、非オーガニックのS2Sアプリ内イベントに紐づけられるデータの一部は、オーガニックのS2Sアプリ内イベントには紐づけられません。
例
たとえば、非オーガニックとオーガニックのS2Sアプリ内イベントのローデータレポートを比較すると、非オーガニックのイベントには、オーガニックのイベントに含まれないデータがあります。
非オーガニックのアプリ内イベントには、メディアソース、キャンペーン、インストールに貢献した広告接触の種類と時刻に関するデータが含まれます。
一方、オーガニックのアプリ内イベントは、オーガニックインストールの後に発生します。オーガニックインストールには、キャンペーン、メディアソース、インストールに貢献した広告接触の種類、インストール時刻に関するデータはありません。
AppsFlyer IDとカスタマーユーザーID(CUID)の対応付け
パラメータに設定する値を取得するには、バックエンド側の処理が必要です。 AppsFlyer IDの取得方法は次のとおりです。
- AppsFlyer IDは必須で、イベントのアトリビューションに使用されます。
- ユーザーがモバイルアプリを初めてインストールしたときに生成されます。
- CUIDとAppsFlyer IDを対応付けられるよう、アプリ内でCUIDを設定する必要があります。
どのユーザーがどのイベントを実行したかを把握しやすくするため、次の処理を実装してください。
- ユーザーがアプリをインストールしたときに、カスタマーユーザーIDを設定します。
- AppsFlyerのローデータレポートには、CUIDとAppsFlyer IDが含まれます。データ配信ツールのいずれか、またはAppsFlyer Push APIを使って、このデータを取得します。
- ローデータレポートを使ってCUIDとAppsFlyer IDを照合します。
- AppsFlyer IDは、アプリ(Android/iOS)に実装したSDKから取得できます。
- 自社システム内でAppsFlyer IDとカスタマーユーザーIDを対応付けます(今後の利用において重要です)。
AppsFlyer IDとCUIDを対応付けると、ユーザーと、そのユーザーが実行したイベントを紐づけられます。その後、他の値(イベント値、イベント通貨、イベント時刻など)を取得して、S2Sアプリ内イベントを送信できます。
AppsFlyer IDの取得
appsflyer_idは、サーバー間イベントのメッセージで必須のパラメータです。 AppsFlyerはこのパラメータを使って、イベントを元のデバイスとアトリビューション先のメディアソースに紐づけます。 IDは次のいずれかの方法で取得できます。
-
モバイル端末でAppsFlyer SDK APIを呼び出して取得します。
Androidネイティブ
iOSネイティブ
Unity
React Native
- AppsFlyerプラットフォームから、Pull API、Push API、またはインストールのローデータレポートのエクスポートによって取得します。
S2Sイベントのタイムスタンプ設定
S2SイベントがまとめてAppsFlyerに到着すると、eventTimeプロパティの値と到着時刻に基づいてタイムスタンプが設定されます。 eventTimeプロパティは、アプリ内イベントの発生時刻を示します。
到着したイベントのタイムスタンプは、次のように設定されます。
- イベントレコードに
eventTimeパラメータが含まれていない場合、HTTPメッセージの到着時刻がイベント時刻として設定されます。 - 02:00 UTCより前に到着したイベントには、
eventTimeの値が設定されます。つまり、eventTimeをタイムスタンプに使用するには、イベントの発生日、または翌日の02:00 UTCまでにイベントを送信する必要があります。 - 前日以前に発生し、02:00 UTCより後に到着したイベントには、到着時刻(API呼び出し時刻)が設定されます。
- 未来の
eventTimeを指定して到着したイベント(eventTime > 到着時刻):- 送信された
eventTimeと到着時刻が同じ日付の場合は、eventTimeの値がタイムスタンプとして設定されます。 - 送信された
eventTimeが翌日の場合は、到着時刻がタイムスタンプとして設定されます。
- 送信された
-
eventTimeの値が無効な場合は、HTTPメッセージの到着時刻が設定されます。
例
-
eventTime=月曜日21:00としてイベントを送信します。
| AppsFlyerへの到着時刻 | AppsFlyerで設定されるタイムスタンプ | 備考 |
|---|---|---|
| 火曜日01:00 | 月曜日21:00 | イベント発生日の翌日02:00 UTCの締め切り前に到着。 eventTimeの値が設定されます。 |
| 水曜日09:00 | 水曜日09:00 | イベント発生日の翌日02:00 UTCの締め切り後に到着。到着時刻が設定されます。 |
マイナスの収益の送信
収益値がマイナスのイベントも送信できます。たとえば、購入がキャンセルされた場合などです。キャンセルなどによるマイナスの収益を記録するには、af_revenueパラメータにマイナスの値を指定します。
af_quantityに値を設定する場合は、自社システムのロジックに応じてマイナスの値を指定することも検討してください。 AppsFlyerはaf_quantityを使用しません。
S2SイベントへのユーザーエージェントとIPアドレスの追加
metaweb_intエンドポイントにS2Sイベントを送信する場合、送信データにua(ユーザーエージェント)とip(IPアドレス)パラメータを含める必要があります。 Metaは、コンバージョンAPI(CAPI)を通じてキャンペーンの成果を最適化するために、これらの値を必要とします。
SDK経由で送信されたイベントには、AppsFlyerがuaとipを自動で追加します。 S2Sイベントでは、広告主がリクエストの送信データにこれらのパラメータを明示的に含める必要があります。
注意
Incrementalityで計測するには、S2Sイベントの送信データに広告ID(iOSはIDFA、AndroidはGAID)を含める必要があります。
データ送信量の増加
送信量を段階的に増やすと、AppsFlyerの自動スケーリングによって、1秒あたりに大量のトランザクションを処理できます。例:
- 1秒あたり10,000トランザクション(TPS)から開始し、少なくとも1分の間隔を空けて段階的に送信量を増やします。
- 00:00:00 - 10,000 TPSを送信(基準値)
- 00:01:00 - 12,000 TPSに増加
- 00:02:00 - 14,000 TPSに増加
- 00:03:00 - 16,000 TPSに増加
- 00:04:00 - 18,000 TPSに増加
- …
- エラーを受信したときに再試行する仕組みを実装してください。
トラブルシューティング
イベントがダッシュボードに表示されない
- エンドポイント:使用しているエンドポイントが正しいことを確認してください。
- 送信データに必須パラメータが含まれていることを確認してください。こちらを参照してください。
- イベント送信に使用しているAppsFlyer IDが、実際のアプリインストールに紐づく有効なappsflyer_idであることを確認してください。こちらを参照してください。
- S2Sイベントでは、1件のS2Sリクエストで複数のイベントを送信することはできません。各イベントを個別に送信する必要があります。
- 応答を待つ時間を短縮するため、非同期でイベントを送信できます。
- Overview dashboardの期間は、イベント日ではなく、アプリのインストール日(LTV)に基づきます。
- 正しい期間を選択していることを確認してください。
- ダッシュボードで選択した期間に、対象デバイス(appsflyer_id)でアプリをインストールした日が含まれていることを確認してください。イベントの発生日を基準に期間を選択しないようにしてください。
- イベントのローデータレポート:期間はインストール日ではなく、イベント日に基づきます。
イベントの収益が記録されない
S2Sイベントを送信しても収益が記録されない場合は、送信するJSONが文字列化されていることを確認してください。特に重要なのは、JSON内でイベント値を指定するパラメータです。このパラメータの値を、次の例のように文字列化する必要があります。
"{\"af_revenue\":\"6\" ,\"af_content_type\":\"wallets\"}"
文字列化されていない場合、イベント値が正しく処理されず、収益が記録されません。
収益値は、通貨表記や桁区切りを加えず、数値のみで指定してください。小数点は含められます。通貨記号、通貨コード、桁区切りの,(カンマ)は含めないでください。収益値の先頭にはマイナス記号(-)を付けられます。 -
- 有効な値の例:
123、-123.45、123.456 - 無効な値の例:
1,234.56、1,234
S2Sイベントの一部のフィールドに値が設定されない
S2Sイベントのローデータフィールドには、S2S呼び出しで送信された値のみが設定されます。次のフィールドはS2S API経由で送信できないため、S2Sイベントのローデータレポートには値が設定されません。
- WIFI
- 通信事業者
- 言語
- デバイスモデル
- デバイスカテゴリ
- アプリバージョン:
app_version_nameを使用できます。 - アプリ名
S2Sアプリ内イベントが誤ってオーガニックに分類される
ログインなどのS2Sイベントは、アプリのインストールとSDKの開始直後にAppsFlyerに到着する場合があります。ただし、AppsFlyerがインストールイベントの処理を完了する前に到着すると、アトリビューション先のないオーガニックイベントとして記録される場合があります。インストールイベントの処理には、通常20~30秒以上かかります。
インストール直後に発生したS2Sアプリ内イベントをAppsFlyerのサーバーに送信する際は、少し時間を置いてから送信することを推奨します。