어떻게 도와드릴까요?

구글 애널리틱스(GA4) 통합

  • 업데이트 시간
한눈에 보기: AppsFlyer와 구글 애널리틱스(GA4)의 통합은 광고주가 AppsFlyer에서 GA4로 귀속 데이터와 선택된 인앱 이벤트를 전송할 수 있게 해줍니다. 이 통합은 이미 구글 애널리틱스 포 파이어베이스 SDK가 구현된 iOS 및 안드로이드 앱에서 작동합니다.

중요!

이 통합은 이미 구글 애널리틱스 포 파이어베이스 SDK가 구현된 iOS 및 안드로이드 앱에서 작동합니다.  통합이 성공하려면, AppsFlyer SDK가 Firebase SDK에서 app_instance_id 값을 수집해야 합니다. Firebase SDK에서 앱 인스턴스 ID를 검색하는 방법에 대한 지침을 참조하세요 여기.

어떻게 작동하나요?

  • 새로운 설치가 발생할 때 AppsFlyer가 터치포인트 세부정보— 미디어 소스, 캠페인 이름 및 캠페인 ID를 GA4로 전송합니다. 또한 Firebase SDK의 app_instance_id를 전송하여 해당 사용자의 GA4에 터치포인트가 기록되도록 합니다.
  • 인앱 이벤트가 발생할 때 GA4는 마지막 터치포인트에 이벤트를 귀속시킵니다.

구글 애널리틱스(GA4) 통합 설정

아래 지침을 따라 구글 애널리틱스(GA4)와의 통합을 구성하세요.

1. 파트너 마켓플레이스에서 구글 애널리틱스(GA4)를 선택하세요.

전제 조건: 연동을 설정하기 전에 파트너에게 연락하여 계정을 개설하세요.

연동 활성화 또는 편집 방법:

  1. 활성화 방법: 앱스플라이어에서, 측면 메뉴에서 협업 > 파트너 마켓플레이스를 선택하세요. 편집 방법: 앱스플라이어의 사이드 메뉴에서 협업 > 활성화된 연동을 선택하세요.
  2. 구글 애널리틱스(GA4)를 검색하고 선택하세요.
  3. 연동 설정을 클릭합니다. 연동 설정 페이지로 이동합니다.

구글 애널리틱스 구성에는 통합 탭만 포함됩니다.

파트너 설정 창 헤더에 대한 자세한 설명은 여기를 클릭하세요.

2. AppsFlyer에서 GA4 통합 설정

다음 설정을 구성하세요:

  1. 연동 탭에서 연동할 앱을 선택하고 파트너 활성화를 켭니다.

    참고: 파트너와 작업하는 동안 토글이 켜져(활성화됨) 있어야 합니다.

    파트너 활성화에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

  2. 파이어베이스 앱 ID에 파이어베이스 앱의 식별자를 입력하세요. 파이어베이스 앱 ID를 찾는 방법은 파이어베이스 문서를 참조하세요.
  3. API 비밀에 구글 애널리틱스에 대한 포스트백을 인증하기 위한 API 비밀을 입력하세요. API 비밀은 구글 애널리틱스 사용자 인터페이스를 통해 생성됩니다. 비밀을 보거나 편집하거나 생성하려면 Google 문서의 지침을 따르십시오. 웹 데이터 스트림을 선택하라는 지시를 받으면 Android 또는 iOS 데이터 스트림을 선택하십시오.
  4. 광고 ID(IDFA) 대신 고객 사용자 ID(CUID)를 전송하려면 고객 사용자 ID를 활성화하십시오.
  5. 기본 포스트백 섹션에서 사용자 출처에 대해 유기적을 포함한 모든 미디어 소스를 선택하십시오.

    참고

    설치 포스트백에는 터치포인트(미디어 소스, 캠페인 이름 및 캠페인 ID)의 세부정보만 포함됩니다.

3. 인앱 이벤트 포스트백을 설정합니다.

통합 탭에서 AppsFlyer 인앱 이벤트를 Google Analytics(GA4) 이벤트에 매핑하고 포스트백을 통해 전송합니다.

참고

  • 모바일 인앱 이벤트를 S2S를 통해 전송하는 포스트백은 지원되지 않습니다.
  • GA4는 Firebase SDK와 AppsFlyer에서 전송된 이벤트를 중복 제거하지 않습니다. 따라서 Firebase SDK를 통해 GA4에 이미 전송되지 않은 이벤트에 대해서만 인앱 이벤트 포스트백을 구성하는 것이 좋습니다.
  1. 인앱 이벤트 포스트백을 켭니다.
  2. 이벤트 추가를 클릭하여 SDK 이벤트를 목록에 추가합니다. 다음 표는 작성해야 할 필드를 설명합니다.

    파라미터 이름 설명
    앱스플라이어 이벤트

    앱에 통합된 AppsFlyer SDK에서 수신한 이벤트의 이름입니다.

    팁: 찾고 있는 이벤트가 없나요?

    • 논오가닉 인스톨 및 재확인을 통해 기기에서 이벤트가 활성화되었는지 확인합니다.
    • 앱스플라이어 이벤트에 입력한 다음 커스텀 생성을 클릭합니다.

    사용자정의 이벤트 매핑에 대해 더 자세히 알아보십시오.

    mapped to partner event

    파트너 측에서 정의한 각 이벤트의 고유한 이름 또는 ID입니다. 가능한 매핑 구성은 다음과 같습니다.

    • 텍스트 필드: 파트너로부터 해당 이벤트 ID를 받으세요.
    • 드롭다운 상자: 사전 정의된 앱스플라이어 이벤트 중 가장 적합한 것을 선택합니다.
    • 변경 없이: 이름 매핑 없이 이벤트를 있는 그대로 전송합니다.
    유입 출처

    이벤트의 전송 옵션을 선택합니다.

    • 오가닉을 포함한 모든 미디어 소스: 어트리뷰션된 모든 파트너 이벤트 및 오가닉 이벤트에 대해서도 포스트백을 보냅니다.
    포함
    • 데이터 없음(기본값): 이벤트 값 없이 이벤트 자체만 전송합니다.
    • 값 및 수익: 이벤트에 수익 값이 포함되어 있다면, 수익 값을 포함한 모든 이벤트 파라미터를 전송해 주세요.
    • 수익 없는 값: 수익 값을 제외한 모든 파라미터를 전송합니다.
  3. [선택 사항] 조건 추가 아이콘 (condition-2.png)을 클릭하여 이벤트에 대한 조건 설정을 합니다.
  4. 연동 저장을 클릭합니다.
  5. 이벤트 포스트백 매핑 전송

4. 개발자에게 포스트백 이벤트 매핑 전송

인앱 이벤트 매핑을 설정한 후, 각 매핑된 이벤트가 다음 열이 있는 행에 해당하는 표를 개발자에게 전송하십시오:

  • AF 이벤트: AppsFlyer 이벤트의 이름입니다.
  • Google 이벤트에 매핑됨: Google Analytics의 이벤트 이름입니다.

    중요!

    사용자 정의 Google Analytics 이벤트의 이름으로 Google 예약 이벤트 중 어떤 것도 사용하지 마십시오.

  • AF 이벤트 매개변수(필수): Google Analytics에 전송되는 이벤트 포스트백에 포함되어야 하는 미리 정의된 AppsFlyer 이벤트 매개변수입니다.

    중요!

    이벤트 정의에 모든 미리 정의된 AF 이벤트 매개변수를 표에 나열된 대로 정확히 포함하는 것은 필수입니다. 이를 준수하지 않으면 Google Analytics가 포스트백을 거부합니다.

이벤트 매핑 테이블

다음 표에는 모든 Google Analytics 이벤트와 그에 대한 미리 정의된 AppsFlyer 매개변수가 포함되어 있습니다. 개발자에게 매핑한 이벤트만 포함된 표를 보내십시오.

 

AF 추천 이름 (선택 사항) Google Ads 이벤트 이름 미리 정의된 AF 이벤트 매개변수 (필수)
af_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 레벨업  
af_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 검색  
  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
  항목_목록_보기 af_price, af_content_id, af_content
  view_promotion af_currency, af_revenue, af_price, af_content_id, af_content
  검색 결과 보기  
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

5. AppsFlyer SDK에서 앱 인스턴스 ID를 검색하십시오.

앱 인스턴스 ID는 Firebase 앱의 특정 설치를 고유하게 식별합니다. 이 값은 Firebase SDK에서 SDK에 의해 검색되어야 합니다.

개발자가 다음을 구현하도록 하십시오:

  1. Firebase에서 app_instance_id 필드를 수집하십시오.
  2. 첫 번째 실행 전에 setAdditionalData을 호출하여 앱 인스턴스 ID(및 사용되는 경우 ga_session_id)를 설치, 세션 및 인앱 이벤트에 포함합니다.

중요!

setAdditionalData (안드로이드 / 유니티 / 리액트 네이티브) 및 customData (iOS)는 키-값 쌍의 매핑을 수락합니다. 앱이 app_instance_id와 ga_session_id를 모두 전송하는 경우(참조: 6단계), 같은 매핑에 함께 전송하여 두 값이 모두 포함되도록 합니다. 별도의 setAdditionalData 호출로 전송하는 경우, 나중에 전송된 것이 이전 것을 덮어씁니다.

안드로이드 native iOS native Unity React 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


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


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

API 참조: setAdditionalData

6. 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 (안드로이드 / 유니티 / 리액트 네이티브) 및 customData (iOS)는 키-값 쌍의 매핑을 수락합니다. 앱이 app_instance_id와 ga_session_id를 모두 전송하는 경우(참조: 5단계), 같은 매핑에 함께 전송하여 두 값이 모두 포함되도록 합니다. 별도의 setAdditionalData 호출로 전송하는 경우, 나중에 전송된 것이 이전 것을 덮어씁니다.

Android 네이티브 iOS네이티브 Unity 

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

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


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

7. GA4 통합 검증

GA4에 전송하는 포스트백의 이벤트가 Google Analytics에 등록되고 읽히는지 확인하십시오. 광고주가 데이터를 보기 위해 사용할 수 있는 두 가지 방법이 있습니다:

  • GA4 Explorations을 사용하면 모든 관련 매개변수와 함께 원시 이벤트 데이터를 탐색할 수 있습니다. 전제 조건: Big Query export는 귀하의 속성에서 설정해야 합니다.)
  • The Events report는 광고주가 포스트백 이벤트를 볼 수 있게 해줍니다. 보고서는 하나 이상의 보고서 컬렉션에서 찾을 수 있습니다.
    예를 들어, 이벤트 보고서는 Life cycle 또는 Games reporting 컬렉션에서 Engagement > Events 아래에서 찾을 수 있습니다. 
    이벤트 보고서에 대한 자세한 내용은 Google 문서을 참조하십시오.
  • The Traffic acquisition report는 웹사이트 및 앱 방문자가 어디에서 오는지 이해하는 데 도움이 됩니다.

    Life cycle collection 아래에서 Acquisition > Traffic Acquisition으로 이동하십시오.)

    트래픽 획득 보고서에 대한 자세한 내용은 Google 문서을 참조하십시오.