AppsFlyerデータ統合ソリューション
最終更新日:2023-04-04
1. 統合プランの紹介
サードパーティデータ統合によって生成されたデータは、クラスターの消費データ量に含まれますのでご注意ください
概要
本記事では、AppsFlyerのデータをAgentic Engine(以下、AEシステム)にコールバックする方法を説明します。本プランはAppsFlyerの複数のデータ統合方法に対応しています。以下の表は、各データ統合方法の特性とデータタイプを示しています。タイトルをクリックすると、プランの該当する章に移動できます:
| インターフェース | データ粒度 | APIタイプ | 製品化 | データ更新頻度 | リクエスト回数の制限 |
|---|---|---|---|---|---|
| ユーザーレベル | プッシュ型 | はい | リアルタイム | 無制限 | |
| ユーザーレベル | プル型 | いいえ | リアルタイム |
| |
集計データ | プル型 | いいえ | リアルタイム |
| |
| 集計データ | プル型 | いいえ | 日単位 |
| |
| 集計データ | プル型 | いいえ | 日単位 | 無制限 | |
| Data Locker | ユーザーレベル / 集計データ | プル型 | - | 日単位/時間単位 | 転送先クラウドストレージの制限に準拠 |
一部のプラットフォームでは、アトリビューション情報、収益データ、コストデータなど、ユーザーレベルデータの一部のフィールドのコールバックが制限されますのでご注意ください
一部のインターフェースはAppsFlyerの有料機能です。使用する前に、AppsFlyerの担当アカウントマネージャーにインターフェースの使用権限をご確認ください。
2. Push APIユーザーレベルデータインターフェース(製品化済み)
インターフェースの基本情報
| インターフェース名 | APIタイプ | 製品化 | データ粒度 | アトリビューションデータ | コストデータ | 収益データ | インプレッション | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|---|
| Push API | プッシュ型 | はい | ユーザーレベル | はい | はい | はい | はい | はい |
Push APIでは、インプレッション、クリック、アクティベーション、収益データなど、AppsFlyerのユーザーレベルのデータをリアルタイムに取得できます。コストデータは、AFプラットフォームのデータ制限により取得できない場合があります。
Push APIの統合はAEシステムの管理画面ですでに製品化されているため、関連する製品ドキュメントを参考に、画面上で統合設定を行うことをお勧めします。
Push APIのユーザーレベルデータを統合する前に、AEシステムのユーザー識別ルールを読み、AEシステムが#distinct_idと#account_idによってユーザーを識別する仕組みを理解しておいてください。AppsFlyer Push APIインターフェースのデータ統合の流れは下図のとおりです:
2.1 クライアントSDKの設定
Push APIのユーザーレベルデータをAEプロジェクトのユーザーデータと連携させるには、AppsFlyer SDKでAEプロジェクトのアカウントIDとゲストIDを送信する必要があります。以下はクライアントSDKの設定方法です。
方法1(自動統合):
統合しているAE SDKのバージョンが2.8.0~2.8.1の場合は、このプランをそのまま使用できます
統合しているAE SDKのバージョンが2.8.2以上の場合は、サードパーティデータプラグインもインストールする必要があります
この方法は自動統合の方法です。AEクライアントSDKを初期化した後、次のコードを呼び出して有効にしてください。詳しくはAndroid SDKのサードパーティデータとiOS SDKのサードパーティデータを参照してください
// AE SDKを初期化
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// AE SDKのAppsFlyer ID関連付け機能を有効化
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
// setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
String distinctId = instance.getDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// AppsFlyer SDKを初期化
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
// AE SDKのloginでアカウントIDを設定した後、再度AF SDKにデータを同期する必要があります
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
AE SDKのlogin()メソッドまたはidentify()メソッドを呼び出した場合は、再度enableThirdPartySharing()を呼び出してデータを同期する必要があります。
注意:AppsFlyer SDKのsetAdditionalData()メソッドも呼び出す必要がある場合、このメソッドは複数回呼び出すと以前のパラメータが上書きされるため、パラメータをAE SDKに渡すことができます。AE SDKが内部でパラメータを連結・マージします。
Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);
このプランの仕組みは、内部でAppsFlyerのsetAdditionalData()メソッドを自動的に呼び出し、AEプロジェクトのゲストIDとアカウントIDを渡すというものです。
方法2(手動統合):
手動統合の方法では、AppsFlyer SDKでsetAdditionalDataを使用してAEプロジェクトのゲストIDとアカウントIDを設定する必要があります。以下はJavaのコード例です:
// AE SDKを初期化
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// AEのゲストIDを取得(AEの#distinct_idに対応)
String distinctId = instance.getDistinctId();
// setAdditionalData()でゲストIDをAF SDKに設定
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// AppsFlyer SDKを初期化
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
...
// AE SDKのloginでアカウントIDを設定した後、再度AF SDKにデータを同期する必要があります
String accountId = "your_account_id";
instance.login(accountId);
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
以上の設定を行うと、コールバックデータ内のcustom_dataにta_distinct_id、ta_account_idの2つのフィールドが含まれ、customer_user_idはゲストIDと等しくなります。
注意:製品化された設定方法でAppsFlyer Push APIのデータを統合する場合は、関連フィールドに次のように入力する必要があります:
- アカウントIDの関連フィールド:custom_data.ta_account_id
- ゲストIDの関連フィールド:customer_user_id,custom_data.ta_distinct_id
2.2 コールバックアドレスの設定
次に、管理者アカウントでAppsFlyerの管理画面にログインし、「Integration」-「API Access」でPush APIのセクションを見つけて、以下の方法でコールバックURLを設定してください:
-
コールバックAPIバージョン(Push API Version)
- 2.0を選択してください
-
HTTPリクエストメソッド(HTTP method)
- AEシステムはPOSTとGETの両方のコールバック方式に対応しています。POST方式を選択することをお勧めします
-
ターミナルアドレス(Endpoint URL)
- ThinkingAIの担当者が、データ受信用のターミナルアドレスを提供します
-
イベントメッセージのタイプ (Event Messages)
- 少なくともアクティベーション (Install) とアクティベーションのアプリ内イベント (Install in-app events) を選択する必要があります。その他にコールバックが必要なイベントデータがある場合は、必要に応じてチェックを入れてください
-
コールバックフィールド (Message Fields)
-
メッセージフィールドには、少なくとも以下の情報を含める必要があります:
- モバイルアトリビューション関連のフィールド:media_source、channel、af_adset、af_adなど
- ユーザー識別ID関連のフィールド:custom_data、customer_user_id、event_valueなど
- イベントプロパティまたはユーザープロパティとして使用するフィールド
- イベント関連のフィールド:
event_time_selected_timezone
-
-
コールバックするアプリ内イベント(In-app events)
- 必要に応じてコールバックするイベントを選択します(例:クライアントで送信したta_registrationイベント)
Facebookのデータが必要な場合は、AF管理画面のFacebookチャネル設定で、Facebookのデータ利用規約(Terms of Service)に同意する必要があります。同意しない場合、Facebookのユーザーレベルデータを取得できませんのでご注意ください。
2.3 データの格納
2.3.1 ユーザー識別ルール
前述のクライアントSDKで設定したユーザー識別フィールドのロジックに基づいて、対応するユーザー識別ルールを決める必要があります。これにより、Push APIでコールバックされたユーザー粒度のデータを、AEプロジェクト内の対応するユーザーに関連付けることができます。
デフォルトでは、コールバックデータ内で次のルールに従ってユーザー識別フィールドを探します:
- Step 1: custom_dataフィールドにta_account_id / ta_distinct_idが含まれているかを確認します。つまり
setAdditionalData()で設定したフィールドです - Step 2: event_valueフィールドにta_account_id / ta_distinct_idが含まれているかを確認します。つまりAppsFlyerのカスタムイベントで設定したフィールドです
- Step 3: イベントがInstallイベント(event_name: install)の場合は、customer_user_idフィールドを確認し、値があればcustomer_user_idを#distinct_idとして使用します。つまり
setCustomerUserId()で設定したフィールドです
各ステップで有効なIDをいずれか1つでも取得できた場合は、以降のステップの確認を停止します。3つのステップをすべて確認しても有効なユーザーIDを取得できない場合、デフォルトでは、そのデータは無効なデータとみなされ、そのまま破棄されます。これらのデータを保持したい場合は、ThinkingAIの担当者に連絡して設定してください。これらのデータはイベントテーブルに記録され、ゲストIDは固定値 -- "without_id"になります。また、これらのデータはその後のユーザープロパティの格納の対象になりません
設定したユーザー識別フィールドが上記と異なる場合は、データ統合設定情報テンプレートに記録してください。
2.3.2 データの格納ルール
デフォルトでは、コールバックされたデータはイベントデータとして書き込まれません。イベントデータとして書き込む必要がある場合は、受信したすべてのイベントがイベントデータとして書き込まれます。イベントデータの格納ルールは次のとおりです:
- ユーザー識別ルールに基づいて、イベントデータを対応するAEユーザーに紐付けます
- データ内のevent_time_selected_timezoneフィールドから時刻とタイムゾーンの情報を取得し、時刻を#event_time、タイムゾーンを#zone_offsetとして書き込みます。このフィールドが空の場合は、event_timeを#event_timeとして使用し、タイムゾーン#zone_offsetは0に設定されます
- データのイベント名は、そのイベントのAppsFlyerでのイベント名です
- その他のフィールドはすべて格納されます
2.3.3 ユーザープロパティの格納設定
デフォルトでは、データから次の4つのフィールドの値を読み取り、ユーザープロパティとして設定します:
| AppsFlyerのフィールド | AE標準化フィールド | 説明 |
|---|---|---|
| media_source | te_ads_object.media_source | チャネル |
| campaign | te_ads_object.campaign_name | キャンペーン |
| af_adset | te_ads_object.ad_group_name | 広告グループ |
| af_ad | te_ads_object.ad_name | 広告 |
このほか、格納するユーザープロパティをカスタマイズすることもできます。これにはユーザープロパティの格納ルール(user_setとuser_setOnceのどちらを使用するか)も含まれます。ユーザープロパティをカスタマイズする必要がある場合は、データ統合設定情報テンプレートに記録してください。
2.4 データ統合設定情報テンプレート
以上のドキュメントを読んだら、次の情報テンプレートに記入し、ThinkingAIの担当カスタマーサクセスマネージャーに送信することをお勧めします:
インターフェース:AppsFlyer Push API
--------
会社名:XXX
AEプロジェクト環境:(SAAS/プライベートデプロイ)
AEプロジェクト名:XXX
AEプロジェクトAPP ID: XXX
データ受信URL push_url: XXX
---------
ユーザー識別ルール:XXXをゲストID/アカウントIDとして使用(未入力の場合はデフォルト)
イベントとして格納するか:いいえ/はい
ユーザー識別IDを取得できなかったデータを保持するか:いいえ/はい(イベントとして格納する場合のみ有効)
格納するユーザープロパティ:XXX,XXX(未入力の場合はデフォルト)
3. Pull APIユーザーレベルデータ
インターフェースの基本情報
| インターフェース名 | APIタイプ | 製品化 | データ粒度 | アトリビューションデータ | コストデータ | 収益データ | インプレッション | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|---|
| Pull API Raw Data | プル型 | いいえ | ユーザーレベル | はい | はい | はい | はい |
Pull API Raw Dataはプル型のユーザーレベルデータインターフェースで、ユーザー粒度の履歴データの取得に非常に適しています。
3.1 統合前の準備
3.1.1 API Tokenの取得
管理者アカウントでログインし、AppsFlyerのサイドバーメニューで「API Access」を見つけて、Pull API Raw Data用のV2.0 API Tokenを取得してください。
3.1.2 App IDの取得
AppsFlyer管理画面の「My Apps」で、アプリのApp IDを確認できます。Androidではcom.で始まり(例:com.demoapp.ta)、iOSではidで始まります(例:id12345678)
3.1.3 クライアントSDKの設定
Pull APIのユーザーレベルデータをAEプロジェクトのユーザーデータと連携させるには、AppsFlyer SDKでAEプロジェクトのアカウントIDとゲストIDを送信する必要があります。以下はクライアントSDKの設定方法です。
方法1(自動統合):
統合しているAE SDKのバージョンが2.8.0~2.8.1の場合は、このプランをそのまま使用できます
統合しているAE SDKのバージョンが2.8.2以上の場合は、サードパーティデータプラグインもインストールする必要があります
この方法は自動統合の方法です。AEクライアントSDKを初期化した後、次のコードを呼び出して有効にしてください。詳しくはAndroid SDKのサードパーティデータとiOS SDKのサードパーティデータを参照してください
// AE SDKを初期化
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// AppsFlyer IDの関連付けを有効化
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
// AppsFlyer SDKを初期化
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
// setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
String distinctId = instance.getDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// loginでアカウントIDを設定した後、再度データを同期する必要があります(任意)
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
AE SDKのlogin()メソッドまたはidentify()メソッドを呼び出した場合は、再度enableThirdPartySharing()を呼び出してデータを同期する必要があります。
注意:AppsFlyer SDKのsetAdditionalData()メソッドも呼び出す必要がある場合、このメソッドは複数回呼び出すと以前のパラメータが上書きされるため、パラメータをAE SDKに渡すことができます。AE SDKが内部でパラメータを連結・マージします。
Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);
このプランの仕組みは、内部でAppsFlyerのsetAdditionalData()メソッドを自動的に呼び出し、AEプロジェクトのゲストIDとアカウントIDを渡すというものです。
方法2(手動統合):
手動統合の方法では、AppsFlyer SDKでsetAdditionalDataを使用してAEプロジェクトのゲストIDとアカウントIDを設定する必要があります。以下はJavaのコード例です:
// AE SDKを初期化
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// AEのゲストIDを取得(AEの#distinct_idに対応)
String distinctId = instance.getDistinctId();
// お客様のアカウントID(またはキャラクターID)。AEの#account_idに対応
String accountId = "your_account_id";
// アクティベーション時に実装
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
...
// 登録時に実装
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
以上の設定を行うと、コールバックデータ内のcustom_dataにta_distinct_id、ta_account_idの2つのフィールドが含まれ、customer_user_idはゲストIDと等しくなります。
3.2 対象フィールド
デフォルトでは、Pull API Raw Dataは以下のデータの取得に対応しています:
| フィールド | 画面表示名 | デフォルトで取得 | タイプ |
|---|---|---|---|
| Attributed Touch Type | アトリビューションタイプ(露出、クリック) | はい | |
| Attributed Touch Time | アトリビューション時刻 | はい | 時間 |
| Install Time | アクティベーション時刻 | はい | 時間 |
| Event Time | イベント時間 | はい | 時間 |
| Event Name | イベント名 | はい | |
| Event Value | イベント値 | はい | |
| Event Revenue | イベント収益 | はい | 数値 |
| Event Revenue Currency | イベント収益の通貨タイプ | はい | |
| Event Revenue USD | イベント収益(USD) | はい | 数値 |
| Event Source | イベントソース | はい | |
| Is Receipt Validated | 受信検証が有効かどうか | ||
| Partner | パートナー | はい | |
| Media Source | メディアチャンネル | はい | |
| Channel | サブチャンネル | はい | |
| Keywords | キーワード | はい | |
| Campaign | 広告キャンペーン名 | はい | |
| Campaign ID | 広告キャンペーンID | はい | |
| Adset | 広告グループ名 | はい | |
| Adset ID | 広告グループID | はい | |
| Ad | 広告クリエイティブ名 | はい | |
| Ad ID | 広告クリエイティブID | はい | |
| Ad Type | 広告タイプ | はい | |
| Site ID | サイトID | はい | |
| Sub Site ID | サブサイトID | はい | |
| Sub Param [1-5] | サブパラメータ [1-5] | ||
| Cost Model | コストモデル (CPC/CPI/CPM/Other) | はい | |
| Cost Value | コスト値 | はい | 数値 |
| Cost Currency | コストの通貨タイプ | はい | |
| Contributor [1-3] Partner | コントリビューター [1-3] パートナー | ||
| Contributor [1-3] Media Source | コントリビューター [1-3] メディアチャンネル | ||
| Contributor [1-3] Campaign | コントリビューター [1-3] 広告キャンペーン | ||
| Contributor [1-3] Touch Type | コントリビューター [1-3] アトリビューションタイプ | ||
| Contributor [1-3] Touch Time | コントリビューター [1-3] アトリビューション時刻 | 時間 | |
| Region | 地域 | はい | |
| Country Code | 国コード | はい | |
| State | 州/省 | はい | |
| City | 都市 | はい | |
| Postal Code | 郵便番号 | ||
| DMA | DMAコード | ||
| IP | IPアドレス | はい | |
| WIFI | Wi-Fiが有効かどうか | はい | |
| Operator | モバイルキャリア | はい | |
| Carrier | 携帯電話キャリア | はい | |
| Language | 言語 | はい | |
| AppsFlyer ID | AppsFlyer ID | はい | |
| Advertising ID | Advertising ID | はい | |
| IDFA | IDFA | はい | |
| Android ID | Android ID | はい | |
| Customer User ID | Customer User ID | はい | |
| IMEI | IMEI | はい | |
| IDFV | IDFV | はい | |
| Platform | プラットフォーム | はい | |
| Device Type | デバイスタイプ | はい | |
| OS Version | OS | はい | |
| App Version | アプリバージョン | はい | |
| SDK Version | SDKバージョン | はい | |
| App ID | App ID | はい | |
| App Name | アプリ名 | はい | |
| Bundle ID | Bundle ID | はい | |
| Is Retargeting | リターゲティングかどうか | はい | |
| Retargeting Conversion Type | リターゲティングのコンバージョンタイプ | はい | |
| Attribution Lookback | アトリビューションLookback | ||
| Reengagement Window | リエンゲージメントウィンドウ | ||
| Is Primary Attribution | プライマリアトリビューションかどうか | ||
| User Agent | ユーザーエージェント | ||
| HTTP Referrer | HTTP Referrer | ||
| Original URL | 元のURL | はい |
3.3 インターフェースのパラメータ
-
時間:
- 日単位のデータを取得します(直近90日間のデータのみ取得できます)
- デフォルトのデータのタイムゾーンはUTCです
3.4 データの格納ルール
Pull APIユーザーレベルデータインターフェースでは複数の種類のデータが格納されます。各データの処理ルールは次のとおりです:
-
Installsデータ
- user acquisition(UA)のみを含むInstallsデータとOrganic Installsデータを取得します
- データはデフォルトでユーザープロパティとして書き込まれます
- イベントとして書き込むこともできます。イベント名はaf_installです
- ユーザー識別フィールドの設定に基づいてユーザー識別フィールドを決定します。ユーザー識別ルールが設定されていない場合は、デフォルトでデータ内のcustomer_user_idをゲストIDとして使用します。ユーザー識別フィールドを取得できなかった場合、そのデータは破棄されます。
- すべてのフィールドが格納されます
-
Ad Revenue
- Attributed ad revenue、Organic ad revenueを取得します。このうちAttributed ad revenueでは、user acquisition(UA)とretargetingの両方のデータを取得します
- データはイベントとして書き込まれます。イベント名はaf_ad_revenue_rawです
- データ内のEvent Time、つまりイベントの発生時刻を、イベントの#event_timeとして使用します
- ユーザー識別フィールドの設定に基づいてユーザー識別フィールドを決定します。ユーザー識別ルールが設定されていない場合は、デフォルトでデータ内のcustomer_user_idをゲストIDとして使用します。ユーザー識別フィールドを取得できなかった場合、そのデータは破棄されます。
- すべてのフィールドが格納されます
3.5 データ統合設定情報テンプレート
以上のドキュメントを読んだら、次の情報テンプレートに記入し、ThinkingAIの担当カスタマーサクセスマネージャーに送信することをお勧めします:
インターフェース:AppsFlyer Pull API Raw Data
--------
会社名:XXX
AEプロジェクト環境:(SAAS/プライベートデプロイ)
AEプロジェクト名:XXX
AEプロジェクトAPP ID: XXX
データ受信URL push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
ユーザー識別ルール:XXXをゲストID/アカウントIDとして使用(未入力の場合はデフォルト)
統合するデータ:Install、Ad Revenue
ユーザープロパティに書き込むInstallイベントのプロパティ:xxx,xxx(未入力の場合はデフォルト)
履歴データの取得時間範囲:yyyy/mm/dd - yyyy/mm/dd(直近90日間のデータのみ取得できます)
定期取得:毎日X時に前日のデータを取得
4. Pull API集約指標インターフェース
インターフェースの基本情報
| インターフェース名 | APIタイプ | 製品化 | データ粒度 | アトリビューションデータ | コストデータ | 収益データ | インプレッション | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|---|
| Pull API集約指標 | プル型 | いいえ | 集計データ | はい | はい | はい | はい | はい |
AppsFlyer Pull API集約指標インターフェースは、さまざまな種類の集約指標データを提供しています。現在、AEシステムが対応しているデータタイプはPartners (by date)とGeo (by date)です。
4.1 統合前の準備
4.1.1 API Tokenの取得
管理者アカウントでログインし、AppsFlyerのサイドバーメニューで「API Access」を見つけて、Pull API用のV2.0 API Tokenを取得してください。
4.1.2 App IDの取得
AppsFlyer管理画面の「My Apps」で、アプリのApp IDを確認できます。Androidではcom.で始まり(例:com.demoapp.ta)、iOSではidで始まります(例:id12345678)
4.2 対象フィールド
4.2.1 Partner (by date)データ
本節ではPartner (by date)タイプのデータを紹介します。このレポートはLTVデータに基づいており、指定した期間内にインストールした新規ユーザーのその後のデータを取得します。
Facebookのデータ形式は他のメディアチャンネルの形式と異なるため、AEシステムはFacebookのみのデータと全プラットフォームのデータを個別に取得します。以下はPartner (by date)で取得できるフィールドです:
| フィールド名 | 格納名 | Facebookのみのデータ | 全プラットフォームのデータ |
|---|---|---|---|
| Date | #event_time | ✓ | ✓ |
| Agency/PMD (af_prt) | agency_pmd_af_prt | ✓ | ✓ |
| Media Source (pid) | media_source_pid | ✓ | ✓ |
| Campaign | campaign_name(Facebook) campaign_c(全プラットフォーム) | ✓ | ✓ |
| Campaign ID | campaign_id | ✓ | |
| Adgroup ID | adgroup_id | ✓ | |
| Adgroup Name | adgroup_name | ✓ | |
| Adset ID | adset_id | ✓ | |
| Adset Name | adset_name | ✓ | |
| ARPU | arpu | ✓ | ✓ |
| Average eCPI | average_ecpi | ✓ | ✓ |
| Clicks | clicks | ✓ | ✓ |
| Conversion Rate | conversion_rate | ✓ | ✓ |
| CTR | ctr | ✓ | ✓ |
| {your event name}(Unique users) | {your_event_name}_unique_users | ✓ | ✓ |
| {your event name} (Event counter) | {your_event_name}_event_counter | ✓ | ✓ |
| {your event name} (Sales in XXX) | {your_event_name}_sales_in_usd | ✓ | ✓ |
| Impressions | impressions | ✓ | ✓ |
| Installs | installs | ✓ | ✓ |
| Loyal Users | loyal_users | ✓ | ✓ |
| Loyal Users/Installs | loyal_users_installs | ✓ | ✓ |
| ROI | roi | ✓ | ✓ |
| Sessions | sessions | ✓ | ✓ |
| Total Cost | total_cost | ✓ | ✓ |
| Total revenue | total_revenue | ✓ | ✓ |
4.2.2 Geo (by date)データ
本節ではGeo (by date)タイプのデータを紹介します。このレポートはLTVデータに基づいており、指定した期間内にインストールした新規ユーザーのその後のデータを取得します。
Facebookのデータ形式は他のメディアチャンネルの形式と異なるため、AEシステムはFacebookのみのデータと全プラットフォームのデータを個別に取得します。以下はGeo (by date)で取得できるフィールドです:
| フィールド名 | 格納名 | Facebookのみのデータ | 全プラットフォームのデータ |
|---|---|---|---|
| Country | country | ✓ | ✓ |
| Date | #event_time | ✓ | ✓ |
| Agency/PMD (af_prt) | agency_pmd_af_prt | ✓ | ✓ |
| Media Source (pid) | media_source_pid | ✓ | ✓ |
Campaign | campaign_name(Facebook) campaign_c(全プラットフォーム) | ✓ | ✓ |
| Campaign ID | campaign_id | ✓ | |
| Adgroup | adgroup_id | ✓ | |
| Adgroup Name | adgroup_name | ✓ | |
| Adset ID | adset_id | ✓ | |
| Adset Name | adset_name | ✓ | |
| ARPU | arpu | ✓ | ✓ |
| Clicks | clicks | ✓ | ✓ |
| Conversion Rate | conversion_rate | ✓ | ✓ |
| {your event name}(Unique users) | {your_event_name}_unique_users | ✓ | ✓ |
| {your event name} (Event counter) | {your_event_name}_event_counter | ✓ | ✓ |
| {your event name} (Sales in XXX) | {your_event_name}_sales_in_usd | ✓ | ✓ |
| Installs | installs | ✓ | ✓ |
| Loyal Users | loyal_users | ✓ | ✓ |
Sessions | sessions | ✓ | ✓ |
Total revenue | total_revenue | ✓ | ✓ |
4.3 インターフェースのパラメータ
-
時間:
- 日単位のデータを取得します
- デフォルトのデータのタイムゾーンはUTCです
4.4 データの格納ルール
デフォルトでは、取得したデータはイベントとしてAEプロジェクトに書き込まれます:
-
Pull APIの集約指標インターフェースは集計データを返すため、ユーザー識別子として固定値を使用します。すべてのデータが1人の仮想ユーザーに紐づいていると考えてください
-
データ内のDateフィールド(ユーザーのインストール日)を、イベントの#event_timeとして使用します
-
データのイベント名は次のとおりです:
-
Partner (by date)
- appsflyer_facebook_partner_by_date(Facebookのデータ)
- appsflyer_partner_by_date(全プラットフォームのデータ)
-
Geo (by date)
- appsflyer_facebook_geo_by_date(Facebookのデータ)
- appsflyer_geo_by_date(全プラットフォームのデータ)
-
-
その他のフィールドはすべて格納されます
4.5 データ統合設定情報テンプレート
以上のドキュメントを読んだら、次の情報テンプレートに記入し、ThinkingAIの担当カスタマーサクセスマネージャーに送信することをお勧めします:
インターフェース:AppsFlyer Pull API集計データインターフェース
--------
会社名:XXX
AEプロジェクト環境:(SAAS/プライベートデプロイ)
AEプロジェクト名:XXX
AEプロジェクトAPP ID: XXX
データ受信URL push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
データ取得のタイムゾーン:XXX(デフォルトはUTC)
データ取得タイプ:Partner (by date)/Geo (by date)
履歴データの取得時間範囲:yyyy/mm/dd - yyyy/mm/dd
定期取得:毎日X時に前日のデータを取得
5. Master API
インターフェースの基本情報
| インターフェース名 | APIタイプ | 製品化 | データ粒度 | アトリビューションデータ | コストデータ | 収益データ | インプレッション | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|---|
| Master API | プル型 | いいえ | 集計データ | はい | はい | はい | はい |
Master APIは、分析ディメンションと集約指標のカスタマイズに対応しており、Pull APIの集約指標インターフェースと比べて柔軟性が高くなっています。
5.1 統合前の準備
5.1.1 API Tokenの取得
管理者アカウントでログインし、AppsFlyerのサイドバーメニューで「API Access」を見つけて、Master API用のV2.0 API Tokenを取得してください。
5.1.2 App IDの取得
AppsFlyer管理画面の「My Apps」で、アプリのApp IDを確認できます。Androidではcom.で始まり(例:com.demoapp.ta)、iOSではidで始まります(例:id12345678)
5.2 対象フィールド
Master APIにはさまざまな種類の指標が含まれており、よく使われる指標カテゴリにはLTV KPIs、Retention KPIs、Cohort KPIsがあります。Cohort KPIsが対応する分析ディメンションは他の指標カテゴリよりも限られているため、AEシステムはCohort KPIsを含むデータと含まないデータを個別に取得します。以下はこの2種類のデータに含まれるフィールドです:
- 分析ディメンション
| フィールド名 | af_groupings | 格納名 | Cohort KPIsを除くデータ | Cohort KPIsを含むデータ |
|---|---|---|---|---|
| App ID | app_id | app_id | ✓ | ✓ |
| Media Source | pid | media_source | ✓ | ✓ |
| Agency | af_prt | partner | ✓ | |
| Campaign | c | campaign | ✓ | ✓ |
| Adset | af_adset | adset | ✓ | |
| Ad | af_ad | ad | ✓ | |
| Channel | af_channel | channel | ✓ | |
| Publisher ID | af_siteid | publisher_id_af_siteid | ✓ | ✓ |
| Keywords | af_keywords | keywords | ||
| Is Primary Attribution | is_primary | is_primary_attribution | ||
| Campaign ID | af_c_id | campaign_id | ||
| Adset ID | af_adset_id | adset_id | ||
| Ad ID | af_ad_id | ad_id | ||
| Install Time | install_time | install_time | ✓ | ✓ |
| Touch Type | attributed_touch_type | touch_type | ✓ | |
| GEO | geo | geo | ✓ | ✓ |
- 指標フィールド
以下はMaster APIのよく使われるフィールドの一部です。すべてのフィールドについては、AppsFlyer公式ドキュメントを参照してください:
新しく追加する指標フィールドはCohort KPIsを除くデータに追加されます。追加が必要な場合は、データ統合設定情報テンプレートに明記してください
| 格納名 | 説明 | Cohort KPIsを除くデータ | Cohort KPIsを含むデータ |
|---|---|---|---|
| impressions | 露出数 | ✓ | ✓ |
| clicks | クリック数 | ✓ | ✓ |
| installs | インストール数 | ✓ | ✓ |
| cr | コンバージョン率 | ✓ | ✓ |
| sessions | Session数 | ✓ | ✓ |
| loyal_users | ロイヤルユーザーのインストール数 | ✓ | ✓ |
| loyal_users_rate | ロイヤルユーザーの割合 | ✓ | ✓ |
| cost | 総コスト | ✓ | ✓ |
| revenue | 総収益 | ✓ | ✓ |
| roi | ROI | ✓ | ✓ |
| arpu_ltv | 平均ライフタイムバリュー | ✓ | ✓ |
| average_ecpi | 平均eCPI | ✓ | ✓ |
| uninstalls | アンインストール数 | ✓ | ✓ |
| uninstalls_rate | アンインストール率 | ✓ | ✓ |
retention_day_[x] | N日目の継続ユーザー数(N = 0,1,2,3,4,5,6,7,15,30) | ✓ | |
| retention_rate_day_[x] | N日目の継続率(N = 0,1,2,3,4,5,6,7,15,30) | ✓ | |
cohort_day_[x]_total_revenue_per_user | N日目の累計収益(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90) | ✓ | |
cohort_day_[x]_revenue_per_user | N日目当日の収益(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90) | ✓ | |
| cohort_[x]_days_total_revenue_per_user | N日目の累計収益と同じ(N = 1,2,3,4,5,6,7,15,30,40,50,60,70,80,90) | ✓ |
5.3 インターフェースのパラメータ
-
時間:
- 日単位のデータを取得します
- デフォルトのデータのタイムゾーンはUTCです
5.4 データの格納ルール
デフォルトでは、取得したデータはイベントとしてAEプロジェクトに書き込まれます:
-
Master APIの集約指標インターフェースは集計データを返すため、ユーザー識別子として固定値を使用します。すべてのデータが1人の仮想ユーザーに紐づいていると考えてください
-
データ内のinstall_timeフィールド(ユーザーのインストール時刻)を、イベントの#event_timeとして使用します
-
データのイベント名は次のとおりです:
- Cohort KPIsを含むデータ
- appsflyer_master_ltv_act_cohort_kpis
- Cohort KPIsを除くデータ
- appsflyer_master_ltv_act_retention_kpis
- Cohort KPIsを含むデータ
-
その他のフィールドはすべて格納されます
5.5 データ統合設定情報テンプレート
以上のドキュメントを読んだら、次の情報テンプレートに記入し、ThinkingAIの担当カスタマーサクセスマネージャーに送信することをお勧めします:
データ取得インターフェース:AppsFlyer Master API集計データインターフェース
--------
会社名:XXX
AEプロジェクト環境:(SAAS/プライベートデプロイ)
AEプロジェクト名:XXX
AEプロジェクトAPP ID: XXX
データ受信URL push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
データ取得のタイムゾーン:XXX(デフォルトはUTC)
追加指標:XXX, XXX(イベントに関連するactivity指標の場合は、指標データを取得するイベント名を指定できます。追加指標はCohort KPIsを除くデータ、つまりappsflyer_master_ltv_act_retention_kpisイベントに追加されます)
履歴データの取得時間範囲:yyyy/mm/dd - yyyy/mm/dd
定期取得:毎日X時に前日のデータを取得
6. Cohort API
インターフェースの基本情報
| インターフェース名 | APIタイプ | 製品化 | データ粒度 | アトリビューションデータ | コストデータ | 収益データ | インプレッション | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|---|
| Cohort API | プル型 | いいえ | 集計データ | はい | はい | はい |
Cohort APIも集計データのAPIです。他の集計データAPIと比べると、データ指標の形はAppsFlyerのCohort DashboardやAEシステムのリテンション分析モデルの結果に近く、N日目(または累計N日目)の指標になります。
6.1 統合前の準備
6.1.1 API Tokenの取得
管理者アカウントでログインし、AppsFlyerのサイドバーメニューで「API Access」を見つけて、Cohort API用のV2.0 API Tokenを取得してください。
6.1.2 App IDの取得
AppsFlyer管理画面の「My Apps」で、アプリのApp IDを確認できます。Androidではcom.で始まり(例:com.demoapp.ta)、iOSではidで始まります(例:id12345678)
6.2 対象フィールド
- 分析ディメンション
Cohort APIが対応している分析ディメンションは最大7つです。以下はデフォルトの分析ディメンションです。調整が必要な場合は、データ統合設定情報テンプレートに明記してください:
| フィールド名 | 格納名 | デフォルト |
|---|---|---|
| Ad | af_ad | ✓ |
| Ad ID | af_ad_id | |
| Campaign | c | ✓ |
| Campaign ID | af_c_id | |
| Channel | af_channel | ✓ |
| Media Source | pid | ✓ |
| Sub Param 1 | af_sub1 | |
| Keywords | af_keywords | |
| Agency | af_prt | |
| Conversion Type (1) | cohort_type | |
| Site ID | site_id | |
| Attributed Touch Type (3) | attributed_touch_type | |
| Adset | af_adset | ✓ |
| Adset ID | af_adset_id | |
| Country | geo | |
| Date | date | ✓ |
Facebook(Meta)のデータを取得する必要がある場合は、分析ディメンションでaf_channelとgeoを同時に選択しないでください。同時に選択すると、Facebookのコストデータを取得できなくなりますのでご注意ください
- 指標フィールド
Cohort APIは、デフォルトの3種類の指標と1つの追加指標を返します。以下はデフォルトの指標フィールドです。調整が必要な場合は、データ統合設定情報テンプレートに明記してください:
| 指標タイプ | 格納名 | 説明 | デフォルト |
|---|---|---|---|
| users(常に含まれる) | users | コホートの総ユーザー数(時間枠とは無関係) | ✓ |
| ecpi(常に含まれる) | ecpi | コホートの総eCPI(時間枠とは無関係) | ✓ |
| cost(常に含まれる) | cost | コホートの総コスト(時間枠とは無関係) | ✓ |
"event_name"(カスタムイベント) | "event_name"_unique_users_day_N | N日目のカスタムイベントのトリガーユーザー数 | |
| "event_name"_count_day_N | N日目のカスタムイベントの完了数 | ||
| "event_name"_rate_day_N | N日目のカスタムイベントの完了率 | ||
| "event_name"_sum_day_N | N日目にカスタムイベントによって発生した収益額 | ||
revenue | revenue_count_day_N | N日目の収益イベントのトリガー数 | ✓ |
| revenue_sum_day_N | N日目の収益額 | ✓ | |
| ROAS | roas_rate_day_N | N日目のROAS | |
| roi | roi_rate_day_N | N日目のROI | |
sessions | sessions_unique_users_day_N | N日目のSessionトリガーユーザー数(累計指標の場合、このデータは返されません) | |
| sessions_count_day_N | N日目のSession数 | ||
| sessions_rate_day_N | N日目の継続率(Sessionトリガーユーザー数 / コホートの総ユーザー数) | ||
| uninstalls | uninstalls_count_day_N | N日目のアンインストール数 | |
| uninstalls_rate_day_N | N日目のアンインストール率 |
注:上表の格納名列のNはN日目の指標を表し、デフォルトの値の範囲は0-30です
6.3 インターフェースのパラメータ
-
時間:
- 日単位のデータを取得します
- デフォルトのデータのタイムゾーンはUTCです
- データを日ごとの独立した値(つまり当日の指標を表示)にするか、累計データ(つまり0日目からN日目までの累計)にするかを選択できます
- 完全でない日(たとえば計算対象のN日目が今日の場合)のデータをコールバックするかどうかを選択できます
6.4 データの格納ルール
デフォルトでは、取得したデータはイベントとしてAEプロジェクトに書き込まれます:
- Cohort APIの集約指標インターフェースは集計データを返すため、ユーザー識別子として固定値を使用します。すべてのデータが1人の仮想ユーザーに紐づいていると考えてください
- データ内のdateフィールド、つまりユーザーのアトリビューション/コンバージョン時間をイベントの#event_timeとして使用します
- データのイベント名:appsflyer_cohort_api
- その他のフィールドはすべて格納されます
6.5 データ統合設定情報テンプレート
以上のドキュメントを読んだら、次の情報テンプレートに記入し、ThinkingAIの担当カスタマーサクセスマネージャーに送信することをお勧めします:
データ取得インターフェース:AppsFlyer Cohort API集計データインターフェース
--------
会社名:XXX
AEプロジェクト環境:(SAAS/プライベートデプロイ)
AEプロジェクト名:XXX
AEプロジェクトAPP ID: XXX
データ受信URL push_url: XXX
---------
AppsFlyer API Token: xxxxxxxx
AppsFlyer App ID: xxxxxxxx
---------
データ取得のタイムゾーン:XXX(デフォルトはUTC)
完全でない日のデータを許可するか:はい/いいえ(デフォルトは「はい」)
データの時間集計タイプ:当日/累計(デフォルトは累計)
グループ化ディメンション:XXX,XXX(デフォルト:date,pid,geo,c,af_adset,af_ad,af_channel)
指標フィールド:XXX(デフォルトはrevenue、1つのみ設定可能)
履歴データの取得時間範囲:yyyy/mm/dd - yyyy/mm/dd
定期取得:毎日X時に直近N日間のデータを取得
7. Data LockerとCost ETL
Data LockerはAppsFlyerのデータ転送サービスで、さまざまなデータをAWSまたはGCSのクラウドストレージに転送できます。
Cost ETLはAppsFlyerのコストデータ転送サービスで、各メディアチャネルの広告キャンペーンのコストデータをAWSまたはGCSのクラウドストレージに転送できます。
現在、AEシステムはAWS S3とGCSのデータの統合に対応しています。転送先のクラウドストレージの種類に応じて、次のドキュメントを参照してください:
- AWS S3
- S3データのDataXによる統合方法:DataXプラグインを使用してデータを統合します
- GCS
- Firebase-Bigquery-GCSデータ移行の技術プラン:コード(GCSライブラリ)でデータをクレンジングしてAEシステムに転送します。このドキュメントの2.2.2と2.2.3を参照してください
8. 連携テストと統合後のデータ利用
1. 連携テスト
1.1 Push APIインターフェース
「データ管理」 ->「ユーザープロパティ管理」ページで、関連するアトリビューションデータを確認できます。関連するユーザープロパティがあれば、統合は成功しています。
| AppsFlyerのコールバックフィールド | AEに格納後のユーザープロパティ名 | データタイプ |
|---|---|---|
| media_source | #appsflyer_media_source | テキスト |
| campaign | #appsflyer_campaign | テキスト |
| af_adset | #appsflyer_adset | テキスト |
| af_ad | #appsflyer_ad | テキスト |
イベントテーブルへの格納を有効にしている場合は、「データ管理」 ->「イベント管理」ページで関連するイベントデータを確認できます。イベント名はAppsFlyerで定義したイベント名と同じです。
1.2 Pull APIとMaster APIの集計データインターフェース
「データ管理」 ->「イベント管理」ページで、関連するイベントを確認できます。関連するイベントがあれば、統合は成功しています。
| インターフェース | レポート名 | AEに格納後のイベント名 | データタイプ |
|---|---|---|---|
| Pull API | 全メディアチャンネルの配信レポート-日別 | appsflyer_partner_by_date | テキスト |
| Pull API | Facebook配信レポート-日別 | appsflyer_facebook_partner_by_date | テキスト |
| Master API | LTV, Activity, Retention関連のKPIs | appsflyer_master_ltv_act_retention_kpis | テキスト |
| Master API | LTV, Activity, RetentionおよびCohort関連のKPIs | appsflyer_master_ltv_act_retention_cohort_kpis | テキスト |
2. データ利用
2.1 アトリビューション情報を軸にした分析
2.2 メディアごとに、チャネル、広告グループ、広告キャンペーン、広告クリエイティブのディメンションでアクティベーション、コスト、収益、ROASを計算して比較
2.3 1つのプラットフォームでマーケティングデータとユーザー行動データを同時に確認し、複数プラットフォームを行き来する手間を削減
2.4 データの連動分析(例:マネタイズや他のメディアチャンネルのデータとの連携)
2.5 revenue / costで各メディアチャンネルのROASを計算
2.6 非オーガニックユーザーの主要なユーザー行動(例:課金前の特定のイベント、特定のコアなゲームプレイのリテンション)からユーザーの質を分析し、分析から意思決定までの時間を短縮
2.7 イベントプロパティ統合後のデータタイプ
AppsFlyer Pull APIで取得したデータのイベントプロパティは、デフォルトで「文字列型として統合」されます。AEシステムの仮想プロパティ機能で文字列型のフィールドを他の型に変換できます。例:
- installプロパティを数値型に変換:"af_install_number"(データタイプは数値を選択)
- total_costプロパティを数値型に変換:"af_total_cost_number"(データタイプは数値を選択)
9. FAQ
AppsFlyerのFAQを参照してください

