Data Analysis

GA4에서 데이터 확인을 위해 PM이 해야할 작업

jonny_stepout 2025. 7. 29. 00:14

지난번에는 데이터 집계 환경을 구축하는 과정에 대해서 다뤘습니다. 이번에는 구축된 이후에 데이터 확인을 위해 어떤 세팅을 해야 하는지 중점적으로 다뤄보겠습니다.
 
지난번 포스팅
https://infofactory0813.tistory.com/74

데이터 집계 환경 Zero to One 시도하기

들어가며입사한 지 2년, 제품을 맡은 지 1년 반이 되도록 왜 데이터 집계 환경을 구축하지 못했을까요. 제 개인적인 의견으로는, 데이터가 급하지 않았기 때문이라고 생각합니다. '뭐? 데이터가

infofactory0813.tistory.com

 
이번 포스팅 바로 시작하겠습니다!

 

1. 데이터 정의

  • 기획자 입장에서 어떤 데이터를 왜 사용하는지 정의가 필요합니다.
    • 불필요한 집계 데이터가 추가되면 그만큼 개발 복잡도와 분석 복잡도가 올라갑니다.
    • 이미 집계할 수 있는 데이터가 있을 수 있기 때문에, 데이터 정의를 먼저 해야 합니다.
    • 데이터 정의는 제품을 설계하고 디자인하는 관계자들이 모여서 한 문서에 작성합니다.
    • 정리된 문서를 기획자, 개발자, 디자이너와 2-3 차례 리뷰와 업데이트를 진행합니다.
      • 리뷰를 진행하는 이유는, 개발자에게는 해당 데이터 집계가 가능한지 물어보기 위함이고, 디자이너에게는 유의미한 집계인지 물어보기 위함입니다.
  • 예시
이벤트명 help_button_click
이벤트 정의 Help 버튼을 클릭하여, 툴팁이 열렸을때 카운트
파라미터
  • activity_type: 저는 에듀테크 제품의 학습 활동 분류 데이터를 받기 위해 이러한 파라미터명을 사용했습니다.
    • activity_a
      activity_b
      activity_c
  • session_id
    • 현재 세션의 id
  • chatting_index: AI 챗봇의 몇 번째 발화에 Help 버튼을 사용자가 눌렀는지 확인
목적
  • 사용자들이 한 번의 Session 마다 Help 버튼을 얼마나 클릭하는지 확인하여, 각 학습 활동에서 Help 버튼을 잘 활용하는지 추적한다.
    • 특정 활동에서 Help 버튼의 활용도가 낮다면, 조치 방안 모색
  • AI가 어떤 발화를 했을 때 Help 버튼을 많이 사용하는지 확인

2. 데이터 집계 인터페이스 개발

  • 정의된 이벤트명에 따른 파라미터값을 올바르게 집계할 수 있도록 클라이언트 개발을 진행합니다.
  • 이 개발은 하나의 작업이기 때문에 티켓으로 각 플랫폼 담당자에게 할당합니다.

예시 코드

(아래의 코드는 GPT로 뽑아낸 예시 코드입니다. 실 작업 시 담당자와 논의가 필요합니다!)

  • Android
object AnalyticsReporter {
    private val firebase by lazy { Firebase.analytics }

    fun logHelpClick(
        activityType: String,
        sessionId: String,
        chattingIndex: Int
    ) {
        val params = bundleOf(
            "activity_type" to activityType,
            "session_id"    to sessionId,
            "chatting_index" to chattingIndex
        )
        firebase.logEvent("help_click", params)
    }
}

 

  • Web
<script>
  window.dataLayer = window.dataLayer || [];

  function logHelpClick(activityType, sessionId, chattingIndex) {
    window.dataLayer.push({
      event:          'help_click',
      activity_type:  activityType,
      session_id:     sessionId,
      chatting_index:  chattingIndex
    });
  }

  // 사용 예
  logLauraHelpClick('activity_a', 'act123', 7);
</script>



  • iOS
struct AnalyticsReporter {
  static func logHelpClick(
      activityType: String,
      sessionID: String,
      chattingIndex: Int
  ) {
    Analytics.logEvent("help_click", parameters: [
      "activity_type": activityType,
      "session_id":    sessionID,
      "chatting_index": chattingIndex
    ])
  }
}

3. GTM 설정 (Web)

  • 현재 구축된 환경 상, 웹은 GTM(Google tag manager)으로 데이터를 수집하기 때문에, 의도한 대로 집계하기 위해선 GTM에 설정이 필요합니다.
  • 이 설정이 되어 있지 않으면 웹에서 데이터가 수집되지 않습니다. (앱은 해당 작업과 무관합니다.)

GTM 설정 순서

  1. 정의된 이벤트 내의 파라미터들을 변수로 추가합니다. (예시로 1개 파라미터 등록만 기재하였습니다.)
    1. 변수이름: activity_type
    2. 데이터 영역 변수 이름: activity_type
    3. 유형: 데이터영역 변수
  2. 이벤트 트리거를 추가합니다.
    1. 트리거 유형: 맞춤 이벤트
    2. 이벤트 이름: help_button_click
  3. 이벤트 태그를 추가합니다.
    1. 태그 유형: GA4 이벤트
    2. 측정 ID: 수집하려는 웹 페이지의 GA4 측정 ID
    3. 이벤트 이름: help_button_click
    4. 이벤트 매개변수: activity_type
      1. 값: {{activity_type}}
    5. 트리거: help_button_click

4. 실시간 확인

  • 실시간 개요에서 최근 30분간 수집된 이벤트에서, 정의한 이벤트명이 집계되는지 확인합니다.
    • Web, iOS, Android 모두 1회씩 확인해 보고, 의도대로 데이터가 집계되는지 확인합니다.
 

5. GA4 측정 기준 설정

  • 수집된 파라미터 데이터는 30분 이후로는 실시간 개요에서 확인할 수 없습니다.
  • 과거 특정 기간 동안의 데이터 수집 내역을 확인하기 위해선 측정 기준을 추가해야 합니다.
    • 측정 기준은 해당 프로젝트의 관리자 권한이 있어야 추가가 가능합니다.
    • 측정 기준은 파라미터 이름을 등록합니다.
    • 측정 기준이란, 수집된 이벤트 데이터를 어떤 기준으로 측정할 것인지 정하는 것입니다. 예를 들어 수집된 이벤트 중 activity_type이 어떤 값이 수집되었는지 확인하기 위해선 사용자가 직접 activity_type을 기준으로 이벤트 수를 확인하겠다고 설정을 해야 합니다.
 
  • 추가한 측정기준대로 올바르게 데이터가 측정되는지 확인하려면 24시간이 지나야 확인할 수 있습니다. 추가한 즉시 측정 기준을 확인하게 되면 (not set)이라는 데이터로 보입니다.

6. 상용환경에 재작업

위 단계까지 테스트 환경에서 확인이 되면 상용배포 시점에 상용 환경에도 똑같이 작업해 줍니다.
 
 


 
이렇게 데이터를 확인하기 위한 작업까지 작성해 보았습니다. 회사마다 데이터를 확인하는 과정이 다르지만, 혹시 제가 겪은 상황과 비슷한 분들이 있다면 도움이 되셨길 바랍니다!
 
혹시 문의사항이 있으시거나 더 나은 아이디어가 있으시다면 댓글로 부탁드려요!