Event Design and Transmission Guide¶
What Is Event Taxonomy?¶
Event Taxonomy is a classification system that organizes collected events and attributes into a consistent structure with naming rules.
If the many actions that occur in a game, such as login, purchase, and leveling up, are collected without any rules, different teams may send the same data under different names, or it may become difficult to understand what each piece of data means during analysis. Event Taxonomy prevents this confusion and helps make collected data immediately usable for analysis.
Why Is It Needed?¶
| Problem | With Taxonomy Applied |
|---|---|
| The same event is sent under different names by different teams | Data can be unified under a consistent name |
| It is unclear which attributes are included in which events | The attribute structure becomes clear, making the analysis scope easy to understand |
| New events are defined arbitrarily without a standard | They can be expanded consistently according to existing rules |
| Data quality issues are discovered too late | Schema-based prevalidation becomes possible |
Structure¶
Analytics event taxonomy consists of two layers: Event and Attribute.
Event
├── Platform Attribute ← Automatically collected with SDK integration only
└── Event Attribute ← Sent directly with the event
What Is an Event?¶
An event is a unit that records a specific action performed by a user in the game as data. It contains "when, who, and what happened" and becomes the most basic unit of analysis.
- Example: A user purchased an item ->
item_purchaseevent occurs - Example: A user cleared a specific stage ->
stage_clearevent occurs - Example: A user logged into the app ->
loginevent occurs
What Is an Attribute?¶
An attribute is detailed information recorded together when an event occurs. With only the event, you can know only "what happened", but attributes let you understand "under what conditions and with what values" it happened.
- Example: Attributes of the
item_purchaseevent -> item ID, payment amount, currency unit - Example: Attributes of the
stage_clearevent -> stage number, clear time, used character
Attributes are divided into two types depending on who collects them.
- Platform Attribute: Attributes automatically collected by Hive through SDK integration only, without additional configuration. Includes country, OS, app version, server ID, etc.
- Event Attribute: Attributes sent directly with the event. You define and send the items needed for analysis.
Sending Custom Events¶
Custom events defined directly in the game can be used in Analytics for analysis if they are sent according to the collection schema below.
Actual data transmission uses Hive SDK Client Log Transmission. The source code required for transmission can be automatically generated by language in the [Source Generation] tab of Event.
Before sending events, if you define the event name and attributes in Event, it is convenient for sharing and management within the team. However, even if you send data without prior definition, Analytics automatically recognizes the received data and reflects it in the event list within up to 1 hour.
Note
Automatically recognized events are displayed with system as the creator in the event list, and you can further manage them by entering descriptions and attribute information in the event screen.
Analytics Collection Schema¶
This is the default schema used when sending custom events. All events must be sent in the format below.
| Field | Required | Description |
|---|---|---|
| identifierProvider | Required | Specifies the user identifier issuance system. If Hive SDK is integrated, enter hive. |
| userId | Required | User identifier based on account. If no value exists, null is allowed. |
| deviceId | Required | User identifier based on device. If no value exists, null is allowed. |
| appId | Required | Enter the app ID registered in Hive Console > App Center. |
| dateTime | Required | The date and time when the event occurred. |
| timezone | Required | The timezone at the time the event occurred. |
| category | Required | The category value that determines the table where the data is collected. Custom events must always be sent fixed as raw_event_log. If a different value is entered, the event data will not be collected into the correct table. |
| eventName | Required | The event name that classifies the event. |
| eventAttribute | Required | The bundle of attributes sent with the event. The items must be defined, and null is allowed if no value exists. |
| hiveAttribute | Required | The bundle of platform attributes provided by the Hive provisioning server. Currently, developers must set and send the values directly. The items must be defined, and null is allowed if no value exists. |
Warning
Be careful not to let both userId and deviceId be null if possible. If both values are missing, the user cannot be identified, which may make cohort-based user analysis difficult.
Event Name Naming Rules¶
It is recommended that event names used in eventName follow the rules below.
- Recommended characters: English letters (a-z, A-Z, case-sensitive), numbers (0-9), underscore (
_), hyphen (-) - Separator: Separate words with underscore (
_) rather than spaces - Form: A
noun_verbstructure that clearly describes the event is recommended - Examples:
item_purchase,level_up,tutorial_complete,stage_start
Warning
Event names that do not follow the rules above may have limitations when used in analysis.
Example Structure of hiveAttribute / eventAttribute¶
hiveAttribute and eventAttribute are each sent as JSON objects.
hiveAttribute - Platform attributes provided by the Hive provisioning server. Market, server ID, and similar values belong here. Currently, developers must set and send the values directly. This will be changed to an automatic collection method in the future.
eventAttribute - Attributes sent directly with the event. These contain detailed information needed to analyze the event.
Note
Regardless of transmission format, attribute values are recognized as strings by default in Analytics. For attributes that need to be aggregated as numeric or date types, change the attribute's data type in the [Attribute] tab of the Event screen.
Attribute Naming Rules¶
It is recommended that the key names of eventAttribute and hiveAttribute follow the rules below.
- Recommended characters: English letters (a-z, A-Z, case-sensitive), numbers (0-9), underscore (
_), hyphen (-) - Separator: Separate words with underscore (
_) rather than spaces - Examples:
item_id,contents-type,stage_level
Warning
Attribute keys that do not follow the rules above may have limitations when used in analysis.
Attribute Key Conversion Rules¶
When attributes are sent, the system automatically converts some key names according to the rules below. Be careful, because the actual key names queried during analysis may differ.
-Hive Suffix (hiveAttribute)¶
-Hive is automatically appended to the end of all keys in hiveAttribute.
| Sent Key | Key Displayed in Analytics |
|---|---|
country | country-Hive |
market | market-Hive |
-Event Suffix (eventAttribute)¶
-Event is automatically appended only when a key in eventAttribute overlaps with one of the following 8 common fields:
- timezone, dateTime, identifierProvider, userId, deviceId, appId, category, eventName
| Sent Key | Common Field Conflict | Key Exposed in Analytics |
|---|---|---|
category | O | category-Event |
level | X | level (no conversion) |
Warning
For both hiveAttribute and eventAttribute, data is stored based on the key name after conversion. During analysis, you must query attributes using the converted names (-Hive, -Event).
Recommended Events¶
Below are examples of events that are highly useful in Analytics. If you send each event according to eventName and eventAttribute, you can analyze them immediately using all Analytics features such as chart, funnel, and retention.
Level Up¶
| eventName | Description |
|---|---|
account_level_up | Account level up |
character_level_up | Character level up |
guild_level_up | Guild level up |
skill_level_up | Skill level up |
eventAttribute (common):
| Attribute | Description | Example |
|---|---|---|
levelPrev | Level before level up | 10 |
level | Level after level up | 11 |
Currency¶
| eventName | Description |
|---|---|
asset_earn | Currency acquired |
asset_spend | Currency spent |
eventAttribute (common):
| Attribute | Description | Example |
|---|---|---|
assetName | Currency name | diamond, gold |
actionName | Reason for change | inapp_purchase, quest_reward |
amountPrev | Currency amount before change | 500 |
amountVar | Amount of change | 100 |
amountCurr | Currency amount after change | 600 |
isPaid | Whether the currency is paid | Y, N |
Content¶
| eventName | Description |
|---|---|
contents_start | Content accepted/started |
contents_success | Content completed |
contents_fail | Content failed |
contents_cancel | Content canceled |
eventAttribute (common):
| Attribute | Description | Example |
|---|---|---|
modeTypeName | Content type | raid, quest |
userLevel | User level | 50 |
playTimeSec | Play time (seconds) | 120 |
Tip
If you build a funnel with the flow contents_start -> contents_success / contents_fail / contents_cancel, you can analyze completion rates and drop-off points by content type.
In-App Store¶
| eventName | Description |
|---|---|
store_view | View product detail in store |
store_purchase_click | Click purchase for store product |
eventAttribute (common):
| Attribute | Description | Example |
|---|---|---|
productLocation | Product exposure location | package, main_shop |
productType | Product type | pay, free, advertisement |
Tip
You can analyze product-specific click conversion rates with a store_view -> store_purchase_click funnel.
Mate¶
| eventName | Description |
|---|---|
mate_earn | Mate acquired |
mate_spend | Mate spent/sold/deleted |
eventAttribute (common):
| Attribute | Description | Example |
|---|---|---|
mateId | Mate ID | pet_001 |
mateGrade | Mate grade | rare, epic |
mateChangeFlag | Change path | gacha, purchase, upgrade, sell |
mateChangeAmount | Amount of change | 1 |
Social Activities¶
| eventName | Description |
|---|---|
party_action | Party activity (invite, join, leave) |
friend_action | Friend activity (add, remove) |
guild_action | Guild activity (join, leave, expel) |