Event log transmission¶
Overview¶
You can send event logs to Analytics. When configuring events to be sent, check the event structure provided by Event Template and whether Hive SDK is automatically collected.
Event logs that require further analysis can be sent from the client or server.
client-transfer¶
This is how to send event logs from the client via Hive SDK v4 or Hive Axyl.
Send event log via Hive SDK v4¶
This is how to send events from the client using the Hive SDK v4 event log transmission feature.
- Among the required attributes, only
eventNameneeds to be sent directly. The rest are automatically collected by the SDK.
Engine common settings¶
Engine settings needed to use SDK v4.
Depending on the engine (Unity, Unreal Engine, etc.), there are common settings required before using the SDK. This does not apply to Hive Axyl.
Note
For detailed settings for each engine, please refer to the Preparation Guide.
Transfer method¶
Uses the Hive SDK v4 Analytics event log transmission API.
JSONObject logData = new JSONObject();
// Required attributes (only send eventName directly, the rest are automatically collected by the SDK)
logData.AddField("eventName", "asset_drop");
// custom attributes
logData.AddField("level", 10);
logData.AddField("exp", 1.5f);
logData.AddField("character_name", "AA");
logData.AddField("stage_id", "stage_101");
Analytics.sendAnalyticsLog(logData);
#include "HiveAnalytics.h"
TSharedPtr<FJsonObject> LogData = MakeShareable(new FJsonObject);
// Required attributes (only send eventName directly, the rest are automatically collected by the SDK)
LogData->SetStringField(TEXT("eventName"), TEXT("asset_drop"));
// custom attributes
LogData->SetNumberField(TEXT("level"), 10);
LogData->SetNumberField(TEXT("exp"), 1.5);
LogData->SetStringField(TEXT("character_name"), TEXT("AA"));
LogData->SetStringField(TEXT("stage_id"), TEXT("stage_101"));
FHiveAnalytics::SendAnalyticsLog(LogData);
picojson::object logData;
// Required attributes (only send eventName directly, the rest are automatically collected by the SDK)
logData["eventName"] = picojson::value("asset_drop");
// custom attributes
logData["level"] = picojson::value((double)10);
logData["exp"] = picojson::value(1.5);
logData["character_name"] = picojson::value("AA");
logData["stage_id"] = picojson::value("stage_101");
Analytics::sendAnalyticsLog(logData);
Map<String, Object> logData = new HashMap<String, Object>();
// Required attributes (only send eventName directly, the rest are automatically collected by the SDK)
logData.put("eventName", "asset_drop");
// custom attributes
logData.put("level", 10);
logData.put("exp", 1.5);
logData.put("character_name", "AA");
logData.put("stage_id", "stage_101");
Analytics.sendAnalyticsLog(logData);
NSMutableDictionary* logData = [[NSMutableDictionary alloc] init];
// Required attributes (only send eventName directly, the rest are automatically collected by the SDK)
[logData setObject:@"asset_drop" forKey:@"eventName"];
// custom attributes
[logData setObject:@10 forKey:@"level"];
[logData setObject:@1.5 forKey:@"exp"];
[logData setObject:@"AA" forKey:@"character_name"];
[logData setObject:@"stage_101" forKey:@"stage_id"];
[HIVEAnalytics sendAnalyticsLog:logData];
Save result¶
If you send the above example, it will be saved in BigQuery as follows.
| Column name | value | Collection method |
|---|---|---|
userId | 100001 | SDK v4 Automatic collection |
identifierProvider | hive | SDK v4 Automatic collection |
deviceId | 100000 | SDK v4 Automatic collection |
appId | com.com2us.game.ios | SDK v4 Automatic collection |
appIdGroup | com.com2us.game | SDK v4 Automatic collection |
dateTime | 2026-07-20T05:01:01Z | Converting eventTime to UTC |
eventName | asset_drop | direct transfer |
checksum | b44jskqjwe99921jqe5 | automatically generated |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | automatically generated |
attributes | See below | SDK v4 Automatic collection + direct transfer |
attributes example
{
"hiveAttributes": {
"dataSource": "custom_sdk",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"exp": 1.5,
"character_name": "AA",
"stage_id": "stage_101",
"vid": 100001,
"uid": 1,
"vid_type": "v4",
"guid": "ecbfbd7fcdc340e1b8a433999c5290c1",
"server_id": "KR-1",
"model": "iPhone17,3",
"os": "I",
"os_version": "26.5.2"
}
}
| area | Save contents |
|---|---|
hiveAttributes | Pipeline autoprocessing attributes (dataSource, geoIpCountry) |
eventAttributes | Custom attributes (level, exp, character_name, stage_id) + SDK v4 Auto-collected attributes (vid, uid, model, os, etc.) |
Hive SDK v4 Precautions & Tips¶
- If you use the SDK v4 event log transmission function, basic collection attributes such as
vid,uid,did,model,os,market, andserver_idare sent automatically. For a detailed list, see Event attribute transmission > Hive SDK v4 Automatically collect attributes. - Please note that if you manually add and transmit the same attribute name as a basic collection attribute, the value automatically collected by SDK v4 may be overwritten by the value you set yourself.
Send event log via Hive Axyl¶
Note
The Hive Axyl event log transmission guide will be released on September 30, 2026.
server-transfer¶
This is a method of sending event logs from the game server via Fluentd, HTTP.
Send event log via Fluentd¶
This method involves sending events directly from the game server via Fluentd.
- You must manually configure and transmit all attributes, including Required Attribute.
Fluentd Server information¶
The Analytics Fluentd server address is: Event logs must be transmitted by referring to the table below.
| Category | location | Region | domain |
|---|---|---|---|
| commercial | Asia | Republic of Korea (Seoul) | analytics-hivelog-03.withhive.comanalytics-hivelog-04.withhive.comanalytics-hivelog-05.withhive.comanalytics-hivelog-06.withhive.com |
| commercial | Asia | Singapore | analytics-hivelog-as-sg-01.withhive.comanalytics-hivelog-as-sg-02.withhive.com |
| commercial | North America | United States (Eastern) | analytics-hivelog-us-east-01.withhive.comanalytics-hivelog-us-east-02.withhive.com |
| commercial | North America | USA (West) | analytics-hivelog-us-west-01.withhive.comanalytics-hivelog-us-west-02.withhive.com |
| commercial | Europe | Frankfurt | analytics-hivelog-eu-ff-01.withhive.comanalytics-hivelog-eu-ff-02.withhive.com |
| Sandbox | Asia | Republic of Korea (Seoul) | sandbox-analytics-hivelog.withhive.com |
Fluentd Transfer method¶
On the game server, configure an event log of the form JSON and send it via Fluentd.
fluentd tag Rule:
Transfer JSON example:
{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
Fluentd Save result¶
If you send the above example, it will be saved in BigQuery as follows.
| Column name | value | Collection method |
|---|---|---|
userId | 100001 | direct transfer |
identifierProvider | hive | direct transfer |
deviceId | 100000 | direct transfer |
appId | com.com2us.game.ios | direct transfer |
appIdGroup | com.com2us.game | Automatic collection based on appId |
dateTime | 2026-07-20T05:01:01Z | Converting eventTime to UTC |
eventName | asset_drop | direct transfer |
checksum | b44jskqjwe99921jqe5 | automatically generated |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | automatically generated |
attributes | See below | Direct transfer + automatic collection |
attributes example
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
}
| area | Save contents |
|---|---|
hiveAttributes | Pipeline autoprocessing attributes (dataSource, geoIpCountry) |
eventAttributes | Custom Attributes (level, character_name, stage_id) |
Note
Server submissions (Fluentd) do not include attributes automatically collected by the SDK, so only attributes directly submitted by the user are stored in eventAttributes.
Fluentd User Guide¶
Event logs can be sent in various ways using Fluentd. Click the link below to find out more.
- Fluentd User Guide
- Send event log using application library
- Read a specific log file and transmit the event log
Fluentd Precautions & Tips¶
- In server transmission (Fluentd), attributes automatically collected by the SDK are not included, so you must manually configure and transmit all necessary attributes.
- Must include all required attributes (
userId,identifierProvider,deviceId,appId,appIdGroup,eventTime,eventName).
Send event log via HTTP¶
How to send events directly from the game server or client via HTTP API.
- Suitable for transmitting server event logs in environments where Fluentd cannot be installed.
- Directly transmit JSON data in the form of REST and API.
- You must manually configure and transmit all attributes, including Required Attribute.
Receiving server information¶
The Analytics web server address is:
| Category | URL |
|---|---|
| commercial | https://analytics-log.withhive.com/v1/server-recv |
| Sandbox | https://sandbox-analytics-log.withhive.com/v1/server-recv |
Header Information:
| Item | value | Remarks |
|---|---|---|
| Method | POST | |
| Content-Type | application/json; charset=utf8 | Required |
| Content-Encoding | gzip | Used when putting compressed binary in body |
HTTP Transfer method¶
Request JSON data POST from the above receiving server URL.
HTTP Request:
Request Body (JSON):
{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA"
}
HTTP Transmission example¶
cURL:
curl -X POST https://analytics-log.withhive.com/v1/server-recv \
-H "Content-Type: application/json" \
-d '{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA"
}'
Python:
import requests
import json
url = "{Analytics Receiving server URL}"
data = {
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA",
}
response = requests.post(url, json=data)
print(response.status_code)
HTTP Save result¶
If you send the above example, it will be saved in BigQuery as follows.
| Column name | value | Collection method |
|---|---|---|
userId | 100001 | direct transfer |
identifierProvider | hive | direct transfer |
deviceId | 100000 | direct transfer |
appId | com.com2us.game.ios | direct transfer |
appIdGroup | com.com2us.game | Automatic mapping based on appId |
dateTime | 2026-07-20T05:01:01Z | Converting eventTime to UTC |
eventName | asset_drop | direct transfer |
checksum | b44jskqjwe99921jqe5 | automatically generated |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | automatically generated |
attributes | See below | Direct transfer + automatic processing |
attributes example
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA"
}
}
| area | Save contents |
|---|---|
hiveAttributes | Pipeline autoprocessing attributes (dataSource, geoIpCountry) |
eventAttributes | Custom Attributes (level, character_name) |
Note
Server submissions (HTTP) do not include attributes automatically collected by the SDK, so only attributes directly submitted by the user are stored in eventAttributes.
HTTP Precautions & Tips¶
- Must include all required attributes (
userId,identifierProvider,deviceId,appId,appIdGroup,eventTime,eventName). Content-Typemust be set toapplication/json.- If you use a JSON object (
{}) or an array ([]) as an attribute value, it will be isolated into the rescue table. - In server transmission (HTTP), attributes automatically collected by the SDK are not included, so you must manually configure and transmit all necessary attributes.
Related menu¶
- Event attribute transmission — Detailed rules for required/automatically collected/custom-defined attributes
- Event storage structure > Table structure — BigQuery storage structure
- Event storage structure > Data isolation — rescue Table isolation reason and search method