테마
Story: GA4 이벤트 트래킹 (결제)
메타
| 항목 | 값 |
|---|---|
| Story ID | E-06-S-11 |
| Epic | E-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 | 이벤트가 발생할 때 |
| When | GA4에 전송되면 |
| 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|portoneis_migration: 기존 PortOne 사용자의 토스 전환 여부payment_method:card|tosspay|kakaopay|naverpay
의존성
- E-06-S-03: 결제 UI 개발
변경 이력
| 날짜 | 변경 내용 |
|---|---|
| 2026-01-26 | 스토리 생성 |
생성일: 2026-01-26
최종 수정: 2026-01-26
