Send event attributes
Overview
App event logs consist of required attributes and custom attributes.
Required attributes
These are the attributes that you must include when you send app event logs.
Naming rules for required attributes
You must send required attribute names in camelCase or lowercase. If you send them in snake_case, such as user_id, they are not processed normally and are isolated in the rescue table.
| Attribute name | Description | Data type | Example |
|---|---|---|---|
userId | Account-based user identifier | STRING | 100001 |
deviceId | Device-based user identifier | STRING | 100000 |
identifierProvider | The system that issues user identifiers. Always hive | STRING | hive |
appId | The Project ID registered in Hive Console > Project Settings > App ID | STRING | com.com2us.game.ios |
appIdGroup | The Game ID issued in Hive Console > Project Settings > App ID. Generated automatically when appId is sent | STRING | com.com2us.game |
eventTime | The time the event occurred. RFC 3339 international standard (including the time zone) | STRING | 2026-07-20T14:01:01+09:00 |
eventName | The event name that classifies the event | STRING | asset_drop |
appId / appIdGroup sending rules
When you send an event, you must include either appId or appIdGroup.
- If you know the
appId: Send onlyappId.appIdGroupis generated automatically. - If you do not know the
appId: SendappIdGroupyourself. - If you send both values at the same time,
appIdGroupis regenerated based onappId, so do not includeappIdGroupwhen you sendappId.
Cautions when sending required attributes
If any of the following conditions applies, the event log is isolated in the rescue table.
- Both
appIdandappIdGroupare missing - Any of the other required attributes (
userId,identifierProvider,deviceId,eventTime,eventName) is missing or empty - Even if you do not know a value, do not leave it empty. Fill it in with an arbitrary value such as
"0"or"unknown"and send it.
eventName naming rules
We recommend that you write the event names used in eventName according to the following rules.
- Recommended characters: English letters (a–z, A–Z, case-sensitive), numbers (0–9), and the underscore (
_) - Separator: Separate words with an underscore (
_), not a space - Form: The
noun_verbform 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 be limited in their use for analysis.
eventTime format rules (RFC 3339)
eventTime follows the RFC 3339 format and must include time zone information.
Format:
Allowed examples:
2026-07-20T14:01:01+09:00 (KST, Korea Standard Time)
2026-07-20T05:01:01Z (UTC)
2026-07-20T14:01:01.123+09:00 (including milliseconds)
2026-07-20T23:01:01-05:00 (US Eastern Time)
Examples that are not allowed:
2026-07-20 14:01:01 (no time zone → isolated)
2026-07-20 (no time → isolated)
1719835261 (Unix timestamp → isolated)
14:01:01 (no date → isolated)
eventTime
eventTimeis converted to UTC in the pipeline and stored in thedateTimecolumn of the table. The original value is preserved as is inattributes.eventAttributes.eventTime.
Cautions when sending eventTime
eventTime accepts only values within the range of 31 days in the past to 31 days in the future from the current time. If it is outside this range, the event log is isolated in the rescue table.
Custom attributes
Compose the information you want to send from the app as attribute names and attribute values, and send it yourself together with the required attributes.
Attribute name rules
| Rule | Description | Example |
|---|---|---|
| Starting character | Must start with an English lowercase or uppercase letter | level, Stage |
| Case sensitivity | Custom attributes are case-sensitive | market != Market != MARket |
| Allowed special characters | Only the underscore (_) is allowed as a special character | item_name |
Attribute names you cannot use (reserved words)
Cautions when sending custom attributes
If you use the following reserved words as attribute names, the log is isolated in the rescue table. This applies in the same way regardless of case.
| Reserved word | Remarks |
|---|---|
attributes | Case-insensitive (example: Attributes, ATTRIBUTES) |
eventAttributes | Case-insensitive |
hiveAttributes | Case-insensitive |
Attribute value rules
Cautions on attribute value formats
Attribute values can be sent in only two types: numeric and string. If you send them as a JSON object, a JSON array, or a string in JSON format, the log is isolated in the rescue table.
| Data type | Description | Example |
|---|---|---|
| Numeric | An integer or a decimal. Send it without quotation marks | "level": 10, "exp": 1.5 |
| String | Must be enclosed in double quotation marks ("") when sent | "character_name": "AA" |
If an attribute value is a JSON object, a JSON array, or a string in JSON format, the log is isolated in the rescue table.
// JSON object (not allowed)
"info": {"key": "value"}
// JSON array (not allowed)
"items": [1, 2, 3]
// String in JSON format (not allowed)
"data": "{\"key\": \"value\"}"
Sending the same attribute name more than once
If you send the same attribute name two or more times, one attribute value is selected at random and only one is saved.
Notes & tips
- You must send required attribute names in camelCase or lowercase. If you send them in snake_case (
user_id), they are isolated in the rescue table. - You must include either
appIdorappIdGroup. If both are missing, the log is isolated. eventTimeaccepts only the RFC 3339 format (including the time zone), and values more than 31 days in the past or future from the current time are isolated.- You cannot use
attributes,eventAttributes, orhiveAttributesas custom attribute names (case-insensitive). - Attribute values can only be numeric or string. JSON objects, JSON arrays, and strings in JSON format are isolated.
- For how to check and resend isolated logs, see Data isolation.
Learn more
- Send events — Introduction to event and attribute concepts
- Event template — List of events collected automatically by default for each category
- Send event logs — How to send with Hive Axyl, Fluentd, and HTTP
- Event storage structure — Table structure, attributes details, and data isolation