サーバー間 (S2S) イベントAPI for モバイル

概要:自身のサーバーからAppsFlyerにイベントをS2S API経由で送信して、アプリ外で発生するコンバージョンイベントを計測します。

S2S_us-en.png

サーバー間 (S2S) イベントAPI for モバイル

iOSアプリの場合、iOS 14以降、OS (オペレーティングシステム) パラメーターを送信する必要があります。 

AppsFlyerのプラットフォームは、AppsFlyer SDKおよびAPIによって送信されたモバイルアプリイベントをメディアソースに紐づけて記録します。S2S APIを使用することで、アプリの外部で発生したイベント(例:Webサイト上での定期購読登録の更新など)を計測できます。S2Sイベントが記録されると、通常のイベントデータと同様、管理画面、ローデータ、各種レポート画面など、プラットフォーム全体で利用できます。PBAのWebイベントについては、 Web S2S for PBA をご参照ください。

AppsFlyerはS2Sイベントに以下情報を入力します。

  • S2Sメッセージで送信されたイベントの値
  • インストール時間やメディアソースなどのAppsFlyerのインストール計測の値に

API 経由でイベントを送信するには、S2SイベントAPIの手順に従うよう開発者に伝えてください。

パラメータについて

オーガニックと非オーガニックの違い

AppsFlyerがS2Sのアプリ内イベントを処理するとき、アトリビューションフィールドはAppsFlyer IDを使用して入力され、アプリ内イベントよりも前に発生していた関連するインストールイベントを識別します。

つまり、AppsFlyerが非オーガニックサーバー間アプリ内イベントに関連付けるデータは、オーガニックサーバー間アプリ内イベントに紐付けられないということです。

 

たとえば、非オーガニックとオーガニックサーバー間アプリ内イベントのローデータレポートを比較する場合、非オーガニックイベントにはオーガニックアプリ内イベントにはないデータが含まれます。

非オーガニックのアプリ内イベントには、メディアソース、キャンペーン、アトリビューションタッチタイプ、アトリビューションタッチタイムに関するデータが含まれます。

一方、オーガニックのアプリ内イベントは、オーガニックのインストールに従います。オーガニックインストールには、キャンペーン、メディアソース、アトリビューションタッチタイプ、インストール時間に関するデータはありません。

AppsFlyer IDとカスタマーユーザーID(CUID)のマッピング

パラメーターに入力する特定の値を取得するには、バックエンドロジックが必要です。以下では、AppsFlyer IDの取得方法について説明しています。

  • AppsFlyer IDは必須であり、イベントの紐付けに使用されます。
  • このIDはユーザーが最初にアプリをインストールしたときに発行されます。
  • CUIDをAppsFlyer IDにマッピングできるようにするには、アプリでCUIDを設定する必要があります。 

どのユーザーがどのイベントを実行したかを簡単に把握できるようにするには、以下のフローを実装してください。

  • ユーザーがアプリをインストールしたときにカスタマーユーザーID を付与(設定)してください。
  • AppsFlyerのローデータレポートには、CUIDとAppsFlyer IDが含まれています。データ配信ツールのいずれかを使用して、このAPIまたはAppsFlyerのPush APIを入手してください。 
  • ローデータレポートを使って、CUIDとAppsFlyer IDを照合させてください。  
  • AppsFlyer IDは、実装したSDKからも取得することが可能です。(Android/iOS)
  • お客様自身のデータベース上でも、AppsFlyer IDをカスタマーユーザーIDにマッピングしてください。(将来的な使用においても重要です)。

AppsFlyer IDをお客様側のカスタマーユーザーIDにマッピングすると、どのユーザーがどのイベントを実行したかを簡単に知ることができます。その後、他の値(イベント値、イベント通貨、イベント時間など)を取得してサーバー間アプリ内イベントを送信できます。

AppsFlyer IDの取得

appsflyer_id は、S2Sイベントメッセージにおいて、必須のパラメータです。AppsFlyerでは、このパラメーターを使用して、オリジナルの端末とメディアソースにイベントを紐付けます。 次のいずれかの方法でIDを取得できます。

 ヒント

S2Sメッセージをテストする際にローデータを使用する場合は、メディアソース名 "s2s_test" の記録を確認してください。これがテスト時のデバイスで、その「AppsFlyer Device ID」がここで必要なIDとなります。

S2Sイベントのタイムスタンプ

time stamping logic diagram

S2SイベントがAppsFlyerに一括で到着すると、プロパティ値と到着時間に従って eventTime タイムスタンプが付けられます。eventTime プロパティはアプリ内イベントの発生時間を示します。

到着時に、イベントには次のようにタイムスタンプが付けられます:

  • パラメーターが eventTime イベントレコードに含まれていない場合、イベント時刻は HTTPメッセージ到着時刻に設定されます。
  • 02:00 UTC(日本時間午前11時)より前に到着したイベントには、 eventTime 値がスタンプされます。つまり、イベントに eventTime スタンプを付けるには、イベントの当日、または翌日の02:00UTC(日本時間午前11時)までにレポート(送信)する必要があります。
  • 前日以前に発生し、02:00 UTC(日本時間午前11時)以降に到着したイベントには、到着時刻(APIコールの時刻)がスタンプされます。
  • 将来の eventTime 値(eventTime がデータ到着時刻より後の場合)で到着するイベント:
    • レポートされた eventTime 時刻と到着時刻の両方が同じカレンダー日である場合、イベントには eventTime 値でタイムスタンプが付けられます。
    • eventTime のレポートが翌カレンダー日の場合、イベントには到着時刻のタイムスタンプが付けられます。
  • eventTime値が無効なイベントには、HTTP メッセージの到着時刻がスタンプされます。

  • eventTime= 月曜日 21:00 でイベントが送信されます。
AppsFlyerに到着 AppsFlyerのタイムスタンプ 備考
火曜日01:00  月曜日21:00  データの締切前に到着。eventTime時間は値に設定されます。
水曜日 09:00  水曜日 09:00  データの締切後に到着。データの到着時間で記録されます。

マイナスの収益を送る

収益値がマイナスのイベントを送信できます。たとえば、購入がキャンセルされた場合などです。これを記録するには、af_revenueパラメータに負の値を指定できます。 

af_quantity を入力する場合、システムロジックによっては負の値を入力したい場合があります。AppsFlyerのレポートでは af_quantity は利用していません。

データトランザクション量の増加

段階的スケーリングを使用する場合、AppsFlyerは自動スケーリングソリューションに基づいて1秒あたりの大量のトランザクション(TPS)をサポートできます。例:

  • 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イベントは、イベントの一括送信をサポートしていません。各S2Sイベントは個別に送信する必要があります。 
    • 非同期メソッドを使用してイベントを送信して、応答時間を短縮できます。
  • オーバービューの画面で指定する日付は、イベントの発生日ではなく、アプリのインストール日(LTV)になります。
    • 正しい日付範囲を選択していることを確認してください。
    • 管理画面でイベントを確認するには、管理画面で選択した日付が、イベントの発生日ではなく、端末(appsflyer_id)のインストール日と一致していることを確認してください。
  • イベントローデータレポート:日付範囲は、インストール日ではなくイベントの発火日が関係します。  

イベントに収益が含まれない

S2Sイベントを送信しても、その収益が記録されない場合には、送信したJSONが文字列化されているかどうかを確認してください。最も重要な部分は、JSONのイベント値パラメーターです。次の例に示すように、文字列化する必要があります。

"{\"af_revenue\":\"6\" ,\"af_content_type\":\"wallets\"}"

文字列(String)化されていない場合、イベント値は正しく処理されず、収益は記録されません。

収益の値は書式化しないでください。小数点のコンマを含むことができます。通貨記号や通貨コード、, のような値の区切り文字も含めないでください。収益の値の冒頭には - (マイナス)を付与することも可能です。

  • 有効な値の例:123, -123.45, 123.456 
  • 無効な値の例:1,234.56, 1,234

S2Sイベントのすべてのフィールドが入力されない

ローデータフィールドには、S2Sコールで送信された値のみが入力されます(インストールイベントから発生した値を入力できるポストバックフィールドとは異なります)。

以下のフィールドは S2S API ではレポートできないため、ローデータレポートの S2S イベントには入力されません。

  • WIFI
  • Operator (OS)
  • Language
  • Device Model
  • Device Category
  • App version: app_version_name を使用できます
  • App Name
  • User Agent