PA 교육 기본 가이드_20260602
Agenda
Product Analytics 기본 가이드
1. Custom Action 추적 (비즈니스 이벤트 수집)
RUM은 클릭을 자동 추적하지만, 비즈니스에 의미 있는 액션은 직접 정의해야 합니다.
// 방법 1: addAction() — 커스텀 액션 전송
datadogRum.addAction('checkout_completed', {
order_id: 'ORD-12345',
total_amount: 59000,
payment_method: 'credit_card',
items_count: 3
});
// 방법 2: data-dd-action-name HTML 속성 — 코드 수정 없이 클릭 추적
<button data-dd-action-name="Add to Cart">장바구니 담기</button>
활용 예시:
- 회원가입 완료, 결제 완료, 검색 실행 등 → Funnel 분석에 활용
- 특정 버튼 클릭, 모달 오픈 등 → Pathways / Heatmap 분석
공식 문서: Send RUM Custom Actions
2. User 식별 (Segment / Retention 분석 필수)
datadogRum.setUser({
id: 'user-12345', // 필수! PA Funnel/Retention의 기준
name: 'Gibaek Lee',
email: 'gibaek@example.com',
// ✅ 커스텀 속성 추가 → Segment 분류에 활용
plan: 'enterprise', // 요금제
company: 'Acme Corp', // 회사
role: 'admin', // 역할
signup_date: '2024-01-15' // 가입일
});
// 개별 속성 추가/변경
datadogRum.setUserProperty('subscription_tier', 'premium');
- 공식 문서: Advanced Configuration
3. Global Context (비즈니스 데이터 세그먼트)
모든 RUM 이벤트에 비즈니스 컨텍스트를 추가하여, 대시보드/분석 시 필터/그룹핑에 활용합니다.
// 앱 전역에 비즈니스 속성 추가
datadogRum.setGlobalContextProperty('app_version', '2.3.1');
datadogRum.setGlobalContextProperty('region', 'asia-pacific');
datadogRum.setGlobalContextProperty('store_id', 'store-seoul-01');
datadogRum.setGlobalContextProperty('experiment_group', 'variant_b');
// 여러 속성을 한번에
datadogRum.setGlobalContext({
business_unit: 'ecommerce',
campaign: 'summer_sale_2025',
locale: 'ko-KR'
});
실제 활용 사례:
-
결제수단, 매출, 환불, 지역별, 매장별 BI 대시보드 구성
-
@context.store_id,@context.payment_method등으로 쿼리 -
공식 문서: Advanced Configuration
4. Feature Flag 추적
A/B 테스트나 Feature Flag 사용 시, PA에서 플래그별 사용자 행동 비교가 가능합니다.
// init에 추가
datadogRum.init({
...existingConfig,
enableExperimentalFeatures: ['feature_flags']
});
// 플래그 평가 시 호출
datadogRum.addFeatureFlagEvaluation('new_checkout_flow', true);
datadogRum.addFeatureFlagEvaluation('pricing_variant', 'plan_b');
⚠️ value에
null,undefined,NaN을 넣으면 데이터가 수집되지 않습니다.
- 공식 문서: Feature Flag Tracking
5. beforeSend — 이벤트 가공/필터링
Datadog으로 전송되기 전에 데이터를 가공하거나, 불필요한 이벤트를 필터링합니다.
datadogRum.init({
...existingConfig,
beforeSend: (event, context) => {
// 민감 정보 제거
if (event.type === 'resource' && event.resource.url.includes('/api/auth')) {
return false; // 이벤트 드랍
}
// 커스텀 속성 추가
if (event.type === 'action') {
event.context.page_category = getPageCategory(event.view.url);
}
return true;
}
});
- 공식 문서: Advanced Configuration
6. Custom Timing (성능 측정)
주요 컴포넌트의 로딩 시간을 측정하여 UX 성능 모니터링을 강화합니다.
// 중요 컴포넌트 렌더링 완료 시
datadogRum.addTiming('product_list_loaded');
datadogRum.addTiming('search_results_rendered');
datadogRum.addTiming('hero_image_visible');
- 공식 문서: Monitoring Page Performance
📋 요약: 설정 우선순위
| 우선순위 | 설정 | 효과 |
|---|---|---|
| 🔴 필수 | setUser() + id |
Funnel, Retention, User Profile 분석 가능 |
| 🔴 필수 | sessionSampleRate: 100 |
PA는 100% 수집 권장 |
| 🟠 강력 권장 | addAction() / data-dd-action-name |
비즈니스 이벤트 기반 Funnel 구성 |
| 🟠 강력 권장 | setGlobalContext() |
세그먼트 분류, BI 대시보드 |
| 🟡 권장 | setUserProperty() (plan, role 등) |
사용자 세그먼트 분석 |
| 🟡 권장 | beforeSend() |
데이터 품질 관리, 민감정보 필터 |
| 🟢 선택 | addFeatureFlagEvaluation() |
A/B 테스트 분석 |
| 🟢 선택 | addTiming() |
커스텀 성능 측정 |