Skip to content

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.


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, and server_id are 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.


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.com
analytics-hivelog-04.withhive.com
analytics-hivelog-05.withhive.com
analytics-hivelog-06.withhive.com
commercial Asia Singapore analytics-hivelog-as-sg-01.withhive.com
analytics-hivelog-as-sg-02.withhive.com
commercial North America United States (Eastern) analytics-hivelog-us-east-01.withhive.com
analytics-hivelog-us-east-02.withhive.com
commercial North America USA (West) analytics-hivelog-us-west-01.withhive.com
analytics-hivelog-us-west-02.withhive.com
commercial Europe Frankfurt analytics-hivelog-eu-ff-01.withhive.com
analytics-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:

event.{gameName}.{eventName}

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 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:

POST https://analytics-log.withhive.com/v1/server-recv
Content-Type: application/json; charset=utf8

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-Type must be set to application/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.