どのようにお手伝いできますか?

Google Analytics(GA4)との連携

  • 更新

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)を選択する

前提条件:連携の設定を始める前に、パートナーに問い合わせてアカウントを作成してください。

新しく連携を設定するには、以下の手順を実施します。

  1. AppsFlyerで、[連携>パートナー連携>マーケットプレイス]タブに移動します。
    (既存の連携を編集する場合:[連携>パートナー連携>有効な連携]タブに移動します。)
  2. 対象のアプリを選択します。
  3. Google Analytics(GA4)を検索し、[連携する]を選択します。
  4. [連携]タブで、[パートナーを有効化]をオンにします。 
    注意:Google Analytics(GA4)と連携している間は、オン(有効)のままにしてください。詳細を見る
  5. 以下の説明に従い、該当するタブで設定を完了します。

Google Analyticsの設定で使用するのは、[連携]タブのみです。

パートナー設定画面のヘッダーについて詳しくは、こちらを参照してください。

2. AppsFlyerでのGA4連携の設定

次の項目を設定します。

  1. [連携]タブで連携するアプリを選択し、[パートナーを有効化]をオンにします。

    注意:このパートナーと連携している間は、オン(有効)のままにしてください。

    パートナーの有効化について詳しくは、こちらを参照してください。

  2. Firebase App IDに、Firebaseアプリの識別子を入力します。 Firebase App IDの確認方法は、Firebaseのドキュメントを参照してください。
  3. API Secretに、Google Analyticsへのポストバックの認証に使用するAPIシークレットを入力します。 APIシークレットは、Google Analyticsの画面から生成します。シークレットの表示、編集、作成については、Googleのドキュメントの手順に従ってください。 Webデータストリームを選択するよう記載されている手順では、代わりにAndroidまたはiOSのデータストリームを選択してください。
  4. 広告ID(IDFA)の代わりにカスタマーユーザーID(CUID)を送信するには、[カスタマーユーザーID]をオンにします。
  5. [デフォルトポストバック]セクションの[対象ユーザーの流入元]で、[オーガニックを含むすべてのメディアソース]を選択します。

注意

インストールポストバックには、タッチポイントの詳細(メディアソース、キャンペーン名、キャンペーンID)のみが含まれます。

3. デフォルトポストバックの設定

AppsFlyerは、ユーザーのインストール後にGA4へポストバックを自動送信できます。インストールとリエンゲージメント(リアトリビューションを含む)が対象です。リエンゲージメントとは、すでにアプリをインストールしているユーザーが、キャンペーンリンクをクリックした後にアプリを開くことです。詳しくは、デフォルトポストバックを参照してください。

4. アプリ内イベントポストバックの設定

[連携]タブで、ポストバックで送信するAppsFlyerのアプリ内イベントをGoogle Analytics(GA4)のイベントに対応付けます。

注意

  • S2Sで送信されたモバイルのアプリ内イベントのポストバックには対応していません。
  • GA4では、Firebase SDKとAppsFlyerの両方から送信されたイベントの重複は排除されません。 Firebase SDK経由ですでにGA4に送信しているイベントには、アプリ内イベントポストバックを設定しないことを推奨します。
  1. [アプリ内イベントポストバック]をオンにします。
  2. [イベントを追加]をクリックし、SDKイベントをリストに追加します。設定するフィールドを以下の表で説明します。

    パラメータ名 説明
    AppsFlyerイベント

    アプリに組み込んだAppsFlyer SDKから受信したイベント名です。

    ヒント:目的のイベントが表示されない場合は、

    • 非オーガニックインストールのデバイスで対象イベントを発生させてから、もう一度確認してください。
    • [AppsFlyerイベント]に名前を入力し、[カスタムイベントを作成]をクリックします。

    詳しくは、カスタムイベントのマッピングを参照してください。

    パートナー側のイベント名/ID

    パートナー側で定義されている各イベントの一意の名前またはIDです。次の方法で対応付けることができます。

    • テキストフィールド:対応するイベントIDをパートナーから取得します。
    • ドロップダウン:最も適切なAppsFlyerの定義済みイベントを選択します。
    • そのまま:名前を対応付けず、イベントをそのまま送信します。
    対象ユーザーの流入元

    イベントの送信対象を選択します。

    • オーガニックを含むすべてのメディアソース:すべてのパートナーのイベントとオーガニックイベントのポストバックを送信します。
    送信するデータ
    • データなし(デフォルト):イベント値を含めず、イベントそのものだけを送信します。
    • 値と収益を送信する:収益値を含むすべてのイベントパラメータを送信します(イベントに収益値がある場合)。
    • 値のみ送信し、収益は送信しない:収益値を除くすべてのパラメータを送信します。
  3. [任意][条件を追加]アイコン(condition-2.png)をクリックし、イベントの条件を設定します。
  4. [連携を保存]をクリックします。
  5. イベントポストバックのマッピングの共有
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の定義済みパラメータが記載されています。対応付けたイベントのみを含む表を、開発者に共有してください。

AppsFlyerの推奨名(任意) Google広告のイベント名 AppsFlyerの定義済みイベントパラメータ(必須)
af_add_payment_info add_payment_info af_currency, af_revenue, af_price, af_content_id, af_content
add_shipping_info af_currency, af_revenue, af_price, af_content_id, af_content
af_add_to_cart add_to_cart af_currency, af_revenue, af_price, af_content_id, af_content
af_add_to_wishlist add_to_wishlist af_currency, af_revenue, af_price, af_content_id, af_content
af_initiated_checkout begin_checkout af_currency, af_revenue, af_price, af_content_id, af_content
campaign_details キャンペーンID、キャンペーン名
af_spent_credits earn_virtual_currency af_revenue
generate_lead af_currency,af_revenue
join_group
af_level_achieved level_up
af_login login
post_score af_user_score
af_purchase purchase af_currency, af_revenue, af_price, af_content_id, af_content, af_receipt_id
refund af_currency, af_revenue, af_price, af_content_id, af_content, af_receipt_id
remove_from_cart af_currency, af_revenue, af_price, af_content_id, af_content
screen_view
af_search search
select_content
select_item af_price, af_content_id, af_content
select_promotion af_price, af_content_id, af_content
share
sign_up
spend_virtual_currency af_revenue
tutorial_begin
af_tutorial_completion tutorial_complete
af_achievement_unlocked Unlock_achievement af_achievement_id
view_cart af_currency, af_revenue, af_price, af_content_id, af_content
view_item af_currency, af_revenue, af_price, af_content_id, af_content
view_item_list af_price, af_content_id, af_content
view_promotion af_currency, af_revenue, af_price, af_content_id, af_content
view_search_results
af_ad_view ad_impression af_currency, af_revenue

Googleの予約済みイベント名

次のイベント名は予約済みのため、カスタムイベント名には使用できません。

  • ad_activeview
  • ad_click
  • ad_exposure
  • ad_query
  • ad_reward
  • adunit_exposure
  • app_clear_data
  • app_exception
  • app_install
  • app_remove
  • app_store_refund
  • app_update
  • app_upgrade
  • dynamic_link_app_open
  • dynamic_link_app_update
  • dynamic_link_first_open
  • error
  • firebase_campaign
  • firebase_in_app_message_action
  • firebase_in_app_message_dismiss
  • firebase_in_app_message_impression
  • first_open
  • first_visit
  • in_app_purchase
  • notification_dismiss
  • notification_foreground
  • notification_open
  • notification_receive
  • notification_send
  • os_update
  • session_start
  • user_engagement
6. AppsFlyer SDKでのアプリインスタンスIDの取得

app_instance_idはFirebaseアプリのインストールを、ga_session_idはFirebaseアプリのセッションを、それぞれ一意に識別します。これらの値をFirebase SDKから取得し、setAdditionalData APIを使ってGA4に送信します。

開発者に、以下の処理を実装するよう依頼します。

  1. Firebaseからapp_instance_idとga_session_idのフィールドを取得します。
  2. 初回起動前に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に送信する必要があります。

開発者に、以下の処理を実装するよう依頼します。

  1. Firebaseからga_session_idフィールドを取得します。
  2. 初回起動前にsetAdditionalDataを呼び出し、セッションIDと、使用する場合はapp_instance_idを含めます。
  3. 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のドキュメントを参照してください。

    GA4のイベントレポート
  • トラフィック獲得レポートでは、Webサイトやアプリの訪問者の流入元を把握できます。

    ライフサイクルコレクションで、集客>トラフィック獲得に移動します。

    トラフィック獲得レポートの詳細は、Googleのドキュメントを参照してください。

    GA4のトラフィック獲得レポート