데이터 로그 설계 1편 ~ 3편까지 이벤트 택소노미 (event taxonomy)가 무엇인지, 왜 중요한지, amplitude라는 분석 도구에서는 어떻게 이를 기반으로 로그 설계를 하고 있는지에 대해서 살펴보았다.
이제는 실제로 서비스의 가설을 검증하기 위해 어떤 이벤트와 속성을 정의해야 하는지 실무에서처럼 설계해보려고 한다.
서비스의 중요한 지표를 검증하기 위해 필요한 이벤트만 정확하게 설계하는 것,
그리고 일관된 규칙을 만들고 그 규칙을 기반으로 정의하는 것이 핵심이다.
이번 포스팅에서는 "올리브영"과 같은 이커머스 서비스에서 실제로 검증해볼만한 가설을 설정하고,
이를 기반으로 이벤트 설계까지 해볼 예정이다.
목차
1. 확인하고 싶은 가설 설정
2. 이를 측정하기 위한 지표 정의
3. 이벤트 택소노미 구축
4. 이벤트 설계 (이벤트, 속성 정의)
1. 확인하고 싶은 가설 설정
올리브영 서비스 내 확인하고 싶은 가설들을 설정해보았다.
직접 서비스를 보면서 궁금한 것들을 위주로 작성했다.
1) 상세페이지에서 ‘리뷰&셔터’ 버튼을 클릭한 사용자가 상품을 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
→ "리뷰 콘텐츠가 구매 의사 결정에 큰 영향을 줄 것이다." 라는 가설에 기반함
2) 상세페이지에서 ‘상품설명 더보기’ 버튼을 클릭한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
→ "상세페이지가 구매 의사 결정에 큰 영향을 줄 것이다." 라는 가설에 기반함
3) 검색 기능을 이용한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
→ "직접 검색하는 것이 구매 의사 결정에 큰 영향을 줄 것이다."라는 가설에 기반함
4) 이벤트/프로모션 페이지에서 유입된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
→ "외부 광고 콘텐츠가 구매 의사 결정에 큰 영향을 줄 것이다."라는 가설에 기반함
5) 올리브영 앱 메인 개인화 추천 영역에서 유입된 상품된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
→ "추천 영역 노출이 구매 의사 결정에 큰 영향을 줄 것이다."라는 가설에 기반함
2. 측정 지표 (Metrics) 정의
위에서 설정한 가설을 기반으로 그 가설을 검증할 수 있는 지표들을 정의해보았다.
어떤 지표가 필요한지 등 구체적인 이벤트를 설계하기 전 단계로 중요한 단계이다.
나는 주로 "장바구니 담기, 구매 완료", 즉 구매 의사 결정에 영향을 미치는 요인이 무엇인지를 파악하는 가설이 대부분이다.
그래서 지표는 '장바구니 전환율', '구매 전환율'로 동일하나, 행동 기반의 사용자 세그먼트가 상이하다
1) 상세페이지에서 ‘리뷰&셔터’ 버튼을 클릭한 사용자가 상품을 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
- 지표
- 장바구니 전환율 = (장바구니 담기한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 구매 전환율 = (상품 구매한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 행동 기반 세그먼트 비교
- 그룹 A : 상세페이지에서 ‘리뷰&셔터’ 탭을 클릭한 사용자
- 그룹 B : 상세페이지에서 ‘리뷰&셔터’ 탭을 클릭하지 않은 사용자
2) 상세페이지에서 ‘상품설명 더보기’ 버튼을 클릭한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
- 지표
- 장바구니 전환율 = (장바구니 담기한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 구매 전환율 = (상품 구매한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 행동 기반 세그먼트 비교
- 그룹 A : 상세페이지에서 ‘상품설명 더보기’를 클릭한 사용자
- 그룹 B : 상세페이지에서 ‘상품설명 더보기’를 클릭하지 않은 사용자
3) 검색 기능을 이용한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
- 지표
- 장바구니 전환율 = (장바구니 담기한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 구매 전환율 = (상품 구매한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 행동 기반 세그먼트 비교
- 그룹 A : 검색 기능을 이용한 사용자
- 그룹 B : 검색 기능을 이용하지 않은 사용자
4) 이벤트/프로모션 페이지에서 유입된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
- 지표
- 장바구니 전환율 = (장바구니 담기한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 구매 전환율 = (상품 구매한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 행동 기반 세그먼트 비교
- 그룹 A : 이벤트/프로모션 페이지에서 유입된 사용자
- 그룹 B : 이벤트/프로모션 페이지 이외에서 유입된 사용자
5) 올리브영 앱 메인 개인화 추천 영역에서 유입된 상품된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)
- 지표
- 추천 영역 내 상품 클릭률 = (상품 클릭한 사용자 수) / (추천 영역이 노출된 세션 수)
- 장바구니 전환율 = (장바구니 담기한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 구매 전환율 = (상품 구매한 사용자 수) / (상품 상세 조회를 한 사용자 수)
- 행동 기반 세그먼트 비교
- 그룹 A : 개인화 추천 영역에서 상품을 클릭하여 조회한 사용자
- 그룹 B : 개인화 추천 영역 외 (카테고리, 검색 등)에서 상품을 클릭하여 조회한 사용자
3. 이벤트 택소노미 설계
가설 별로 지표를 정의해보았다. 이를 통해 대략적으로 어떤 이벤트를 수집해야 할지에 대해 감을 잡을 수 있다.
이것을 바탕으로 이제 이벤트를 설계해야 하는데, 그 전에 이벤트 택소노미를 먼저 구축해보고자 한다.
정의되어 있어야 이를 바탕으로 일관되게 이벤트 로그를 설계할 수 있기 때문이다.
✔ 표기법
- 스네이크 표기법 (snake_case)
- 단어 사이에 underscore(_)를 활용하는 표기법
✔ 이벤트명 구조
- 기본 : (object)_(verb)
- 필요할 경우 : (object)_(세부사항)_(verb)까지 허용
✔ 표준 용어
1) 목적어 (object)
| section | 메인 영역 / 개인화 섹션 |
| search | 검색 |
| product | 상품 |
| product_detail | 상품 상세 페이지 |
| tab_review | 리뷰&셔터 탭 |
| btn_more | 상품설명 더보기 버튼 |
| cart | 장바구니 |
| purchase | 구매 |
2) 동사 (verb)
| viewed | 노출/조회되다 |
| clicked | 클릭하다 |
| performed | 실행하다 |
| added | 담다/추가하다 |
| completed | 완료하다 |
✔ 이벤트 로그 정의서 구조
Amplitude의 가이드에 참고하였으며, 일부 수정하여 로그 정의서 구조를 잡았다.
| Events | Event Category |
| Event Name | |
| Description | |
| Scenario | |
| Object | |
| Verb | |
| Properties | Event_properties |
| User_properties | |
| timestamp | |
| Platform |
이렇게 구축한 이벤트 택소노미를 기반으로 이벤트를 설계해보자.
4. 이벤트 설계 (이벤트&속성 정의)
우선, 각 가설별로 어떤 이벤트를 수집해야 하는지 실제 서비스의 전반적인 플로우를 확인하였다.
그 플로우에서 수집해야 하는 이벤트를 발견하고 명확한 시점에 어떤 이벤트명으로 정의할지, 또 속성으로 수집해야 할 정보들에 대해 정의하였다.
가설이 전반적으로 "상세페이지 진입 → 장바구니 담기 → 구매 완료"의 플로우로 진행되기 때문에 수집하는 이벤트는 중복되는 경우가 많았다.
하지만 가설별로 수집해야 하는 속성 정보가 상이했기 때문에 1차적으로 가설별로 이벤트를 정의하였다.
가설별로 정의한 후,
전체 이벤트를 리스트업하고 중복되는 이벤트가 없으며, 필요한 속성 정보가 모두 반영되도록 정리하였다.
1) 상세페이지에서 ‘리뷰&셔터’ 버튼을 클릭한 사용자가 상품을 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)


여기서 중요한 이벤트는 ''리뷰&셔터'버튼을 클릭하다 (btn_review_clicked)'이다.
행동 기반 세그먼트를 나눌 때 활용된다 (해당 이벤트가 있는 사용자 vs 없는 사용자)
해당 이벤트만 있어도 기본적인 지표를 확인 가능하기에 속성은 기본적인 정보만을 담았다.
2) 상세페이지에서 ‘상품설명 더보기’ 버튼을 클릭한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)


여기서도 위와 마찬가지로 중요한 이벤트는 ''상품설명 더보기' 버튼을 클릭하다 (btn_more_clicked)'이다.
행동 기반 세그먼트를 나눌 때 활용된다 (해당 이벤트가 있는 사용자 vs 없는 사용자)
해당 이벤트만 있어도 기본적인 지표를 확인 가능하기에 속성은 기본적인 정보만을 담았다.
3) 검색 기능을 이용한 사용자가 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)


여기서도 '검색 기능을 실행하다 (search_performed)' 이벤트가 추가 된다.
나는 검색 기능을 이용한 사람들을 추리기 위함이기에 속성으로는 기본적으로 검색 단어(search_word), 검색 유형(search_type)만 추가하였다. 필요한 정보가 더 있으면 넣으면 된다.
'상품을 클릭하다 (product_clicked)' 이벤트도 추가하여 검색부터 상품 클릭, 주문 완료까지 가는 플로우에 구멍이 생기지 않도록 하였다.
4) 이벤트/프로모션 페이지에서 유입된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)


이 가설에서의 플로우는 다른 플랫폼에서의 콘텐츠를 통해 바로 상세페이지로 진입한 것이다.
그래서 '상품 상세페이지를 조회하다', '장바구니에 담다', '상품 구매를 완료하다' 이벤트만 있다.
하지만 속성으로 추가되어야 할 것이 있는데, 그것은 바로 utm 경로이다.
나는 기본적인 utm 속성 (utm_source, utm_medium, utm_campaign)을 추가했다.
이 속성은 3가지 이벤트에 다 추가를 하였다.
그 이유는 어떤 이벤트/프로모션/콘텐츠를 통해서 얼마나 많이 상세페이지를 조회했는지, 장바구니에 담았는지, 상품을 구매했는지 확인하기 위해 필요하기 때문이다.
5) 올리브영 앱 메인 개인화 추천 영역에서 유입된 상품된 사용자는 장바구니에 담을 확률이 더 높다 (구매 전환율이 더 높다)


마지막 가설은 개인화 추천에 대한 성과 측정을 하기 위해 정의한 것이다.
추천의 경우, 사용자마다 노출되는 것이 다르기 때문에 '영역이 노출되다 (section_viewed)'와 같은 이벤트를 수집해야 한다. 그래야 추천 영역 노출 대비 얼마나 클릭을 했는지, 주문을 했는지를 파악할 수 있기 때문이다.
그리고 추천 영역은 매우 다양하기 때문에 추천 영역에 대한 정보를 속성에 추가하였다.
→ page, section_id, section_name, viewed_products_id 등
[최종 이벤트 리스트]
동일한 이벤트가 중복되어서는 안되며, 필요한 속성이 잘 반영되어 있어야 한다.

실제 이커머스 서비스인 올리브영 앱을 기반으로 데이터 로그 설계를 해보았다.
데이터 로그 설계를 하면서 생각하고 고민해야 하는 부분이 굉장히 많았다.
고려해야 할 요소도 많고 누락되는 경우도 자주 발생하기 때문에 가능한 모든 케이스를 꼼꼼하게 생각하며 이벤트를 설계하는 과정이 매우 중요하다는 것을 느꼈다.
많이 수집하는 것보다 "정확하게 정의하는 것"이 훨씬 어렵다는 것도 다시 느꼈다.
그래도 이렇게 직접 가설을 세우고, 필요한 지표를 정의하며, 이벤트를 설계하는 과정을 다른 형태의 서비스를 기반으로 해보니 또 다른 공부가 되었다. (생각보다 많은 시간이 걸렸다..!)
로그 설계를 처음 접하는 분들도 이 포스팅을 보고 어떻게 설계할지 감을 잡는데에 도움이 되었으면 좋겠다.
(역시 제일 좋은 것은 직접 해보는 것이다!)
개인적으로 공부하고 정리하기 위해 작성한 포스팅으로 잘못된 부분이 있으면 댓글 주시면 감사하겠습니다 :)!
'Data Analysis > 이벤트 택소노미' 카테고리의 다른 글
| [데이터 로그 설계] 3. 이벤트 택소노미 기반 로그 설계 방법 (With. Amplitude) (1) | 2025.12.08 |
|---|---|
| [데이터 로그 설계] 2. 이벤트 택소노미(Event Taxonomy)의 중요성 (0) | 2025.11.11 |
| [데이터 로그 설계] 1. 이벤트 택소노미 (Event Taxonomy) 구조 이해하기 (0) | 2025.10.25 |
| 2. xAPI Statements (0) | 2024.04.10 |
| 1. 표준 데이터 xAPI란? (0) | 2024.04.10 |