AppsFlyerとGoogle Analytics(GA4)を連携すると、AppsFlyerのアトリビューションデータと、選択したアプリ内イベントをGA4に送信できます。この連携は、Google Analytics for Firebase SDKをすでに実装しているiOSアプリとAndroidアプリで利用できます。
重要
この連携は、Google Analytics for Firebase SDKをすでに実装しているiOSアプリとAndroidアプリで利用できます。連携を正しく動作させるには、AppsFlyer SDKでFirebase SDKのapp_instance_idの値を収集する必要があります。 Firebase SDKからアプリインスタンスIDを取得する方法を確認してください。
連携の仕組み
- 新規インストールが発生すると、AppsFlyerはタッチポイントの詳細(メディアソース、キャンペーン名、キャンペーンID)をGA4に送信します。さらに、Firebase SDKの
app_instance_idも送信し、そのユーザーのタッチポイントとしてGA4に記録されるようにします。 - アプリ内イベントが発生すると、GA4は最後のタッチポイントにそのイベントを紐付けます。
Google Analytics(GA4)連携の設定
以下の手順でGoogle Analytics(GA4)との連携を設定します。
1. パートナーマーケットプレイスでGoogle Analytics(GA4)を選択する
前提条件:連携の設定を始める前に、パートナーに問い合わせてアカウントを作成してください。
新しく連携を設定するには、以下の手順を実施します。
- AppsFlyerで、[連携>パートナー連携>マーケットプレイス]タブに移動します。
(既存の連携を編集する場合:[連携>パートナー連携>有効な連携]タブに移動します。) - 対象のアプリを選択します。
- Google Analytics(GA4)を検索し、[連携する]を選択します。
- [連携]タブで、[パートナーを有効化]をオンにします。
注意:Google Analytics(GA4)と連携している間は、オン(有効)のままにしてください。詳細を見る - 以下の説明に従い、該当するタブで設定を完了します。
Google Analyticsの設定で使用するのは、[連携]タブのみです。
パートナー設定画面のヘッダーについて詳しくは、こちらを参照してください。
2. AppsFlyerでのGA4連携の設定
次の項目を設定します。
-
[連携]タブで連携するアプリを選択し、[パートナーを有効化]をオンにします。
注意:このパートナーと連携している間は、オン(有効)のままにしてください。
パートナーの有効化について詳しくは、こちらを参照してください。
- Firebase App IDに、Firebaseアプリの識別子を入力します。 Firebase App IDの確認方法は、Firebaseのドキュメントを参照してください。
- API Secretに、Google Analyticsへのポストバックの認証に使用するAPIシークレットを入力します。 APIシークレットは、Google Analyticsの画面から生成します。シークレットの表示、編集、作成については、Googleのドキュメントの手順に従ってください。 Webデータストリームを選択するよう記載されている手順では、代わりにAndroidまたはiOSのデータストリームを選択してください。
- 広告ID(IDFA)の代わりにカスタマーユーザーID(CUID)を送信するには、[カスタマーユーザーID]をオンにします。
- [デフォルトポストバック]セクションの[対象ユーザーの流入元]で、[オーガニックを含むすべてのメディアソース]を選択します。
注意
インストールポストバックには、タッチポイントの詳細(メディアソース、キャンペーン名、キャンペーンID)のみが含まれます。
3. デフォルトポストバックの設定
AppsFlyerは、ユーザーのインストール後にGA4へポストバックを自動送信できます。インストールとリエンゲージメント(リアトリビューションを含む)が対象です。リエンゲージメントとは、すでにアプリをインストールしているユーザーが、キャンペーンリンクをクリックした後にアプリを開くことです。詳しくは、デフォルトポストバックを参照してください。
4. アプリ内イベントポストバックの設定
[連携]タブで、ポストバックで送信するAppsFlyerのアプリ内イベントをGoogle Analytics(GA4)のイベントに対応付けます。
注意
- S2Sで送信されたモバイルのアプリ内イベントのポストバックには対応していません。
- GA4では、Firebase SDKとAppsFlyerの両方から送信されたイベントの重複は排除されません。 Firebase SDK経由ですでにGA4に送信しているイベントには、アプリ内イベントポストバックを設定しないことを推奨します。
- [アプリ内イベントポストバック]をオンにします。
-
[イベントを追加]をクリックし、SDKイベントをリストに追加します。設定するフィールドを以下の表で説明します。
パラメータ名 説明 AppsFlyerイベント アプリに組み込んだAppsFlyer SDKから受信したイベント名です。
ヒント:目的のイベントが表示されない場合は、
- 非オーガニックインストールのデバイスで対象イベントを発生させてから、もう一度確認してください。
- [AppsFlyerイベント]に名前を入力し、[カスタムイベントを作成]をクリックします。
詳しくは、カスタムイベントのマッピングを参照してください。
パートナー側のイベント名/ID パートナー側で定義されている各イベントの一意の名前またはIDです。次の方法で対応付けることができます。
- テキストフィールド:対応するイベントIDをパートナーから取得します。
- ドロップダウン:最も適切なAppsFlyerの定義済みイベントを選択します。
- そのまま:名前を対応付けず、イベントをそのまま送信します。
対象ユーザーの流入元 イベントの送信対象を選択します。
- オーガニックを含むすべてのメディアソース:すべてのパートナーのイベントとオーガニックイベントのポストバックを送信します。
送信するデータ - データなし(デフォルト):イベント値を含めず、イベントそのものだけを送信します。
- 値と収益を送信する:収益値を含むすべてのイベントパラメータを送信します(イベントに収益値がある場合)。
- 値のみ送信し、収益は送信しない:収益値を除くすべてのパラメータを送信します。
- [任意][条件を追加]アイコン(
)をクリックし、イベントの条件を設定します。
- [連携を保存]をクリックします。
- イベントポストバックのマッピングの共有
5. 開発者へのポストバックイベントのマッピングの共有
アプリ内イベントのマッピングを設定したら、対応付けたイベントを1行ずつ記載し、次の列を含む表を開発者に共有します。
- AF event:AppsFlyerのイベント名。
- Mapped to Google event:Google Analyticsのイベント名。
重要
Google Analyticsのカスタムイベント名に、Googleの予約済みイベント名を使用しないでください。
- AF event parameters(必須):Google Analyticsに送信するイベントポストバックに必ず含める、AppsFlyerの定義済みイベントパラメータ。
重要
イベントの定義には、表に記載されている定義済みのAFイベントパラメータをすべて、記載どおりに含める必要があります。不足や相違があると、Google Analyticsがポストバックを拒否します。
イベントマッピング表
次の表には、Google Analyticsのすべてのイベントと、対応するAppsFlyerの定義済みパラメータが記載されています。対応付けたイベントのみを含む表を、開発者に共有してください。
Googleの予約済みイベント名
次のイベント名は予約済みのため、カスタムイベント名には使用できません。
ad_activeviewad_clickad_exposuread_queryad_rewardadunit_exposureapp_clear_dataapp_exceptionapp_installapp_removeapp_store_refundapp_updateapp_upgradedynamic_link_app_opendynamic_link_app_updatedynamic_link_first_openerrorfirebase_campaignfirebase_in_app_message_actionfirebase_in_app_message_dismissfirebase_in_app_message_impressionfirst_openfirst_visitin_app_purchasenotification_dismissnotification_foregroundnotification_opennotification_receivenotification_sendos_updatesession_startuser_engagement
6. AppsFlyer SDKでのアプリインスタンスIDの取得
app_instance_idはFirebaseアプリのインストールを、ga_session_idはFirebaseアプリのセッションを、それぞれ一意に識別します。これらの値をFirebase SDKから取得し、setAdditionalData APIを使ってGA4に送信します。
開発者に、以下の処理を実装するよう依頼します。
- Firebaseから
app_instance_idとga_session_idのフィールドを取得します。 - 初回起動前に
setAdditionalDataを呼び出し、インストール、セッション、アプリ内イベントにアプリインスタンスIDとga_session_idを含めます。
重要
setAdditionalData(Android/Unity/React Native)とcustomData(iOS)は、キーと値の組み合わせをまとめたマッピングを受け取ります。両方の値が含まれるように、app_instance_idとga_session_idを同じマッピングにまとめて送信します。別々のsetAdditionalData呼び出しで送信すると、後の呼び出しで先の値が上書きされます。
Android native
Kotlin
FirebaseAnalytics.getInstance(this).appInstanceId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.result)
}
}
Java
FirebaseAnalytics.getInstance(this).getAppInstanceId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.getResult());
}
});
APIリファレンス:setAdditionalData
iOS native
iOS native
let appInstanceId = Analytics.appInstanceID()
AppsFlyerLib.shared().customData = ["app_instance_id": appInstanceId]
Objective C
(void) fetchAnalyticsInstanceId {
NSString *instanceID = [FIRAnalytics appInstanceID];
[[AppsFlyerLib shared] setAdditionalData:@{@"app_instance_id": instanceID}];
}
APIリファレンス:customData
Unity
using Firebase.Analytics;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK(devKey, appID, this);
string appInstanceId = await FirebaseAnalytics.GetAnalyticsInstanceIdAsync();
Dictionary <string, string> customData = new Dictionary<string, string>();
customData.Add("app_instance_id", appInstanceId);
AppsFlyer.setAdditionalData(appInstanceId);
AppsFlyer.startSDK();
}
}
APIリファレンス:setAdditionalData
React native
APIリファレンス:setAdditionalData
7. AppsFlyer SDKでのGA4セッションIDの取得
ga_session_idは、Firebaseアプリのセッションを一意に識別します。この値をFirebase SDKから取得し、setAdditionalData APIを使ってGA4に送信する必要があります。
開発者に、以下の処理を実装するよう依頼します。
- Firebaseから
ga_session_idフィールドを取得します。 - 初回起動前に
setAdditionalDataを呼び出し、セッションIDと、使用する場合はapp_instance_idを含めます。 - APIの呼び出し時には、キーとして
ga_session_idを使用します。
重要
setAdditionalData(Android/Unity/React Native)とcustomData(iOS)は、キーと値の組み合わせをまとめたマッピングを受け取ります。アプリからapp_instance_idとga_session_idの両方を送信する場合(手順5を参照)は、両方の値が含まれるように、同じマッピングにまとめて送信してください。別々のsetAdditionalData呼び出しで送信すると、後の呼び出しで先の値が上書きされます。
Android native
Kotlin
FirebaseAnalytics.getInstance(this).sessionId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.result)
}
}
Java
FirebaseAnalytics.getInstance(this).getSessionId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.getResult());
}
});
APIリファレンス:setAdditionalData
iOS native
Swift
if #available(iOS 14.0, *) {
Analytics.sessionID { sessionID, error in
if let sessionID = sessionID {
AppsFlyerLib.shared().customData = ["ga_session_id": sessionID]
}
}
}
Objective-C
- (void)fetchAnalyticsSessionId {
if (@available(iOS 14.0, *)) {
[FIRAnalytics sessionIDWithCompletion:^(NSString * _Nullable sessionID, NSError * _Nullable error) {
if (sessionID) {
[[AppsFlyerLib shared] setAdditionalData:@{@"ga_session_id": sessionID}];
}
}];
}
}
APIリファレンス:customData
Unity
using Firebase.Analytics;
using System.Threading.Tasks;
using AppsFlyerSDK;
using UnityEngine;
using System.Collections.Generic;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK("yourDevKey", "yourAppID", this);
// Get session ID
string sessionId = await FirebaseAnalytics.GetSessionIdAsync();
Dictionary<string, string> customData = new Dictionary<string, string>();
customData.Add("ga_session_id", sessionId);
AppsFlyer.setAdditionalData(customData);
AppsFlyer.startSDK();
}
}
APIリファレンス:setAdditionalData
8. GA4連携の検証
GA4に送信するポストバックのイベントが、Google Analyticsに登録され、認識されていることを確認します。広告主がデータを確認する方法は、2つあります。
- GA4の探索では、関連するすべてのパラメータを含む、イベントのローデータを詳しく確認できます。前提条件:プロパティでBigQueryエクスポートを設定していること。
-
イベントレポートでは、ポストバックのイベントを確認できます。このレポートは、1つ以上のレポートコレクションに含まれています。
たとえば、ライフサイクルまたはゲームレポートコレクションの、エンゲージメント>イベントからアクセスできます。
イベントレポートの詳細は、Googleのドキュメントを参照してください。 -
トラフィック獲得レポートでは、Webサイトやアプリの訪問者の流入元を把握できます。
ライフサイクルコレクションで、集客>トラフィック獲得に移動します。
トラフィック獲得レポートの詳細は、Googleのドキュメントを参照してください。