Skip to content

Story: GA4 이벤트 트래킹 (결제)

메타

항목
Story IDE-06-S-11
EpicE-06 PG사 이관
상태ready-for-dev
우선순위P1
규모S
담당 개발자수민 (FE)

사용자 스토리

As a PO,
I want 결제 관련 사용자 행동을 GA4로 추적하고 싶다,
So that 결제 전환율과 이관 효과를 측정할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: 결제 플로우 이벤트

항목내용
Given사용자가 결제 플로우를 진행할 때
When각 단계를 완료하면
Then해당 이벤트가 GA4에 전송된다

AC-02: 이관 관련 이벤트

항목내용
Given기존 구독자가 카드 재등록을 진행할 때
When재등록 페이지 진입 및 완료 시
Then이관 관련 이벤트가 GA4에 전송된다

AC-03: 이벤트 파라미터 정확성

항목내용
Given이벤트가 발생할 때
WhenGA4에 전송되면
Then결제 금액, PG사, 결제수단 등 필수 파라미터가 포함된다

태스크 분해

Task 1: 결제 플로우 이벤트 AC-01

  • [ ] 1.1: view_payment_page 이벤트 구현
  • [ ] 1.2: start_payment 이벤트 구현
  • [ ] 1.3: complete_payment 이벤트 구현
  • [ ] 1.4: fail_payment 이벤트 구현

Task 2: 이관 관련 이벤트 AC-02

  • [ ] 2.1: view_card_registration 이벤트 구현
  • [ ] 2.2: complete_card_registration 이벤트 구현

Task 3: 추가 이벤트 AC-01

  • [ ] 3.1: cancel_payment 이벤트 구현
  • [ ] 3.2: change_payment_method 이벤트 구현
  • [ ] 3.3: view_payment_history 이벤트 구현

Task 4: 이벤트 검증 AC-03

  • [ ] 4.1: GA4 DebugView에서 이벤트 확인
  • [ ] 4.2: 파라미터 검증 (금액, PG사 등)

이벤트 목록

이벤트명트리거파라미터우선순위
view_payment_page결제 페이지 진입{plan_type, plan_price, source, has_coupon, has_credit}P0
start_payment결제 시작 (SDK 호출){plan_type, payment_method, final_amount, pg_provider}P0
complete_payment결제 완료{plan_type, payment_method, card_company, final_amount, is_migration}P0
fail_payment결제 실패{plan_type, payment_method, fail_reason, retry_count}P0
view_card_registration카드 재등록 페이지 진입{source, days_before_renewal, has_incentive}P0
complete_card_registration카드 재등록 완료{source, card_company, new_pg, is_migration}P0
cancel_payment결제 취소/이탈{plan_type, step}P1
change_payment_method결제 수단 변경{old_method, new_method}P1
view_payment_history결제 내역 조회{history_count}P2

이벤트 상세 명세

view_payment_page

javascript
dataLayer.push({
  event: "payment",
  event_name: "view_payment_page",
  params: {
    plan_type: "PRO10",
    plan_price: 110000,
    source: "gnb",                    // gnb | settings | onboarding
    has_coupon: "N",
    coupon_discount: 0,
    has_credit: "N",
    credit_amount: 0,
    is_new_user: "Y"                  // Y | N (기존 구독자 여부)
  }
});

complete_payment

javascript
dataLayer.push({
  event: "payment",
  event_name: "complete_payment",
  params: {
    plan_type: "PRO10",
    plan_price: 110000,
    payment_method: "card",
    card_company: "shinhan",          // 카드사 코드
    final_amount: 110000,
    coupon_discount: 0,
    credit_used: 0,
    payment_id: "PAY_20260120_xxxxx",
    billing_key_issued: "Y",          // 빌링키 발급 여부
    pg_provider: "tosspayments",
    is_migration: "N"                 // Y: 이관 결제, N: 신규 결제
  }
});

fail_payment

javascript
dataLayer.push({
  event: "payment",
  event_name: "fail_payment",
  params: {
    plan_type: "PRO10",
    plan_price: 110000,
    payment_method: "card",
    fail_reason: "INSUFFICIENT_BALANCE",  // 실패 코드
    fail_message: "잔액이 부족합니다",
    pg_provider: "tosspayments",
    retry_count: 0
  }
});

Dev Notes

파라미터 규칙

  • pg_provider: tosspayments | portone
  • is_migration: 기존 PortOne 사용자의 토스 전환 여부
  • payment_method: card | tosspay | kakaopay | naverpay

의존성

  • E-06-S-03: 결제 UI 개발

변경 이력

날짜변경 내용
2026-01-26스토리 생성

생성일: 2026-01-26
최종 수정: 2026-01-26

장사왕 Product Team