이벤트 설계 및 전송 가이드¶
이벤트 텍소노미란?¶
이벤트 텍소노미(Event Taxonomy)는 수집하는 이벤트와 속성을 일관된 구조와 명명 규칙으로 체계화한 분류 체계입니다.
게임에서 발생하는 수많은 행동 데이터(로그인, 구매, 레벨업 등)를 아무 규칙 없이 수집하면, 팀마다 다른 이름으로 같은 데이터를 보내거나 분석 시 어떤 데이터가 무엇을 의미하는지 파악하기 어려워집니다. 이벤트 텍소노미는 이러한 혼란을 방지하고, 수집된 데이터를 분석에 바로 활용할 수 있도록 돕습니다.
왜 필요한가요?¶
| 문제 상황 | 텍소노미 적용 시 |
|---|---|
| 같은 이벤트를 팀마다 다른 이름으로 전송 | 일관된 이름으로 데이터 통합 가능 |
| 어떤 속성이 어떤 이벤트에 포함되는지 불명확 | 속성 구조가 명확해 분석 범위를 빠르게 파악 |
| 새 이벤트 추가 시 기준 없이 임의로 정의 | 기존 규칙에 맞춰 일관성 있게 확장 가능 |
| 데이터 품질 문제를 뒤늦게 발견 | 스키마 기준으로 사전 검증 가능 |
구조¶
애널리틱스의 이벤트 텍소노미는 이벤트와 속성 두 계층으로 구성됩니다.
이벤트 (Event)
├── 플랫폼 속성 (Platform Attribute) ← SDK 연동만으로 자동 수집
└── 이벤트 속성 (Event Attribute) ← 이벤트와 함께 직접 전송
이벤트란?¶
이벤트는 유저가 게임 내에서 수행한 특정 행동을 데이터로 기록한 단위입니다. "언제, 누가, 무엇을 했는가"를 담고 있으며, 분석의 가장 기본 단위가 됩니다.
- 예: 유저가 아이템을 구매했다 →
item_purchase이벤트 발생 - 예: 유저가 특정 스테이지를 클리어했다 →
stage_clear이벤트 발생 - 예: 유저가 앱에 로그인했다 →
login이벤트 발생
속성이란?¶
속성은 이벤트가 발생했을 때 함께 기록되는 세부 정보입니다. 이벤트만으로는 "무슨 일이 일어났는지"만 알 수 있지만, 속성을 통해 "어떤 조건에서, 어떤 값으로" 발생했는지까지 파악할 수 있습니다.
- 예:
item_purchase이벤트의 속성 → 아이템 ID, 결제 금액, 통화 단위 - 예:
stage_clear이벤트의 속성 → 스테이지 번호, 클리어 시간, 사용 캐릭터
속성은 수집 주체에 따라 두 가지로 나뉩니다.
- 플랫폼 속성: 별도 설정 없이 SDK 연동만으로 Hive에서 기본 수집하는 속성입니다. 국가, OS, 앱 버전, 서버 ID 등이 포함됩니다.
- 이벤트 속성: 이벤트와 함께 직접 전송하는 속성입니다. 분석에 필요한 항목을 직접 정의하고 전송합니다.
사용자 정의 이벤트 전송¶
게임에서 직접 정의한 이벤트(사용자 정의 이벤트)는 아래 수집 스키마에 맞춰 전송하면 애널리틱스에서 분석에 활용할 수 있습니다.
실제 데이터 전송은 Hive SDK 클라이언트 로그 전송 방법을 사용합니다. 전송에 필요한 소스 코드는 이벤트의 [소스 생성] 탭에서 언어별로 자동 생성할 수 있습니다.
이벤트 전송 전에 이벤트에서 이벤트명과 속성을 미리 정의해두면 팀 내 공유와 관리가 편리합니다. 단, 사전 정의 없이 데이터를 전송하더라도 애널리틱스가 수신된 데이터를 자동으로 인식하며, 최대 1시간 이내에 이벤트 목록에 반영됩니다.
Note
자동 인식된 이벤트는 이벤트 목록에서 생성자가 system으로 표시되며, 이벤트 화면에서 설명·속성 정보를 추가로 입력하여 관리할 수 있습니다.
애널리틱스 수집 스키마¶
사용자 정의 이벤트를 전송할 때 사용하는 기본 스키마입니다. 모든 이벤트는 아래 형식으로 전송해야합니다.
| 필드 | 필수 여부 | 설명 |
|---|---|---|
| identifierProvider | 필수 | 유저 식별자 발급 시스템을 명시합니다. Hive SDK를 연동한 경우 hive로 입력합니다. |
| userId | 필수 | 계정 기준 유저 식별자입니다. 값이 없는 경우 null을 허용합니다. |
| deviceId | 필수 | 단말 기준 유저 식별자입니다. 값이 없는 경우 null을 허용합니다. |
| appId | 필수 | Hive 콘솔 > 앱센터에 등록된 앱 ID를 입력합니다. |
| dateTime | 필수 | 이벤트가 발생한 일시입니다. |
| timezone | 필수 | 이벤트 발생 시각의 타임존입니다. |
| category | 필수 | 데이터가 수집될 테이블을 결정하는 구분 값입니다. 사용자 정의 이벤트는 반드시 raw_event_log로 고정하여 전송해야 합니다. 다른 값을 입력하면 해당 이벤트 데이터가 올바른 테이블에 수집되지 않습니다. |
| eventName | 필수 | 이벤트를 분류하는 이벤트명입니다. |
| eventAttribute | 필수 | 이벤트와 함께 전송하는 속성 묶음입니다. 항목은 반드시 정의해야 하며, 값이 없는 경우 null을 허용합니다. |
| hiveAttribute | 필수 | Hive 프로비저닝 서버에서 제공하는 플랫폼 속성 묶음입니다. 현재는 개발자가 직접 값을 설정하여 전송해야 합니다. 항목은 반드시 정의해야 하며, 값이 없는 경우 null을 허용합니다. |
Warning
userId와 deviceId는 가급적 둘 다 null이 되지 않도록 주의하세요. 두 값이 모두 없으면 유저를 식별할 수 없어 코호트별 유저 분석이 어려울 수 있습니다.
이벤트명 명명 규칙¶
eventName에 사용할 이벤트명은 아래 규칙을 따라 작성할 것을 권고합니다.
- 권장 문자: 영문(a–z, A–Z, 대/소문자 구분), 숫자(0–9), 언더바(
_), 하이픈(-) - 구분자: 단어 사이는 공백이 아닌 언더바(
_)로 구분 - 형태: 이벤트를 명확하게 설명하는
명사_동사형태 권장 - 예시:
item_purchase,level_up,tutorial_complete,stage_start
Warning
위 규칙을 준수하지 않은 이벤트명은 분석에 활용하는 데 제한이 있을 수 있습니다.
hiveAttribute / eventAttribute 구조 예시¶
hiveAttribute와 eventAttribute는 각각 JSON 객체 형태로 전송합니다.
hiveAttribute — Hive 프로비저닝 서버에서 제공하는 플랫폼 속성입니다. 마켓, 서버 ID 등이 해당되며, 현재는 개발자가 직접 값을 설정하여 전송해야 합니다. 추후 자동 수집 방식으로 변경될 예정입니다.
eventAttribute — 이벤트와 함께 직접 전송하는 속성입니다. 해당 이벤트를 분석하는 데 필요한 세부 정보를 담습니다.
Note
속성값은 전송 형태에 관계없이 애널리틱스에서 기본적으로 문자형으로 인식됩니다. 숫자나 날짜형으로 집계가 필요한 속성은 이벤트 화면의 [속성] 탭에서 해당 속성의 자료형을 변경해주세요.
속성 명명 규칙¶
eventAttribute 및 hiveAttribute의 키 이름은 아래 규칙을 따라 작성할 것을 권고합니다.
- 권장 문자: 영문(a–z, A–Z, 대/소문자 구분), 숫자(0–9), 언더바(
_), 하이픈(-) - 구분자: 단어 사이는 공백이 아닌 언더바(
_)로 구분 - 예시:
item_id,contents-type,stage_level
Warning
위 규칙을 준수하지 않은 속성 키는 분석에 활용하는 데 제한이 있을 수 있습니다.
속성 키 변환 규칙¶
속성을 전송하면 시스템이 아래 규칙에 따라 일부 키 이름을 자동으로 변환합니다. 분석 시 실제로 조회되는 키 이름이 달라질 수 있으므로 주의하세요.
-Hive 접미사 (hiveAttribute)¶
hiveAttribute의 모든 키 끝에 -Hive가 자동으로 붙습니다.
| 전송 키 | 애널리틱스에서 표시되는 키 |
|---|---|
country | country-Hive |
market | market-Hive |
-Event 접미사 (eventAttribute)¶
eventAttribute의 키 중 아래 8개 공통 필드와 이름이 겹치는 경우에만 -Event가 자동으로 붙습니다.
- timezone, dateTime, identifierProvider, userId, deviceId, appId, category, eventName
| 전송 키 | 공통 필드 충돌 여부 | 애널리틱스 노출 키 |
|---|---|---|
category | O | category-Event |
level | X | level (변환 없음) |
Warning
hiveAttribute와 eventAttribute 모두 변환 후 키 이름 기준으로 데이터가 저장됩니다. 분석 시 변환된 이름(-Hive, -Event)으로 속성을 조회해야 합니다.
추천 이벤트¶
아래는 애널리틱스에서 분석 활용도가 높은 이벤트 예시입니다. 각 이벤트를 eventName과 eventAttribute에 맞춰 전송하면 차트·퍼널·리텐션 등 애널리틱스의 모든 기능으로 바로 분석할 수 있습니다.
레벨업¶
| eventName | 설명 |
|---|---|
account_level_up | 계정 레벨업 |
character_level_up | 캐릭터 레벨업 |
guild_level_up | 길드 레벨업 |
skill_level_up | 스킬 레벨업 |
eventAttribute (공통):
| 속성 | 설명 | 예시 |
|---|---|---|
levelPrev | 레벨업 이전 레벨 | 10 |
level | 레벨업 이후 레벨 | 11 |
재화¶
| eventName | 설명 |
|---|---|
asset_earn | 재화 획득 |
asset_spend | 재화 소모 |
eventAttribute (공통):
| 속성 | 설명 | 예시 |
|---|---|---|
assetName | 재화 이름 | diamond, gold |
actionName | 변동 사유 | inapp_purchase, quest_reward |
amountPrev | 변동 전 재화량 | 500 |
amountVar | 변동량 | 100 |
amountCurr | 변동 후 재화량 | 600 |
isPaid | 유료 재화 여부 | Y, N |
콘텐츠¶
| eventName | 설명 |
|---|---|
contents_start | 콘텐츠 수락·시작 |
contents_success | 콘텐츠 완료 |
contents_fail | 콘텐츠 실패 |
contents_cancel | 콘텐츠 취소 |
eventAttribute (공통):
| 속성 | 설명 | 예시 |
|---|---|---|
modeTypeName | 콘텐츠 유형 | raid, quest |
userLevel | 유저 레벨 | 50 |
playTimeSec | 플레이 시간(초) | 120 |
Tip
contents_start → contents_success / contents_fail / contents_cancel 흐름으로 퍼널을 구성하면 콘텐츠별 완료율과 이탈 구간을 분석할 수 있습니다.
인앱 상점¶
| eventName | 설명 |
|---|---|
store_view | 상점 상품 상세 조회 |
store_purchase_click | 상점 상품 구매 클릭 |
eventAttribute (공통):
| 속성 | 설명 | 예시 |
|---|---|---|
productLocation | 상품 노출 위치 | package, main_shop |
productType | 상품 유형 | pay, free, advertisement |
Tip
store_view → store_purchase_click 퍼널로 상품별 클릭 전환율을 분석할 수 있습니다.
메이트¶
| eventName | 설명 |
|---|---|
mate_earn | 메이트 획득 |
mate_spend | 메이트 소모·판매·삭제 |
eventAttribute (공통):
| 속성 | 설명 | 예시 |
|---|---|---|
mateId | 메이트 ID | pet_001 |
mateGrade | 메이트 등급 | rare, epic |
mateChangeFlag | 변동 경로 | gacha, purchase, upgrade, sell |
mateChangeAmount | 변동량 | 1 |
사회활동¶
| eventName | 설명 |
|---|---|
party_action | 파티 활동 (초대·가입·탈퇴) |
friend_action | 친구 활동 (추가·삭제) |
guild_action | 길드 활동 (가입·탈퇴·추방) |