Skip to main content

Getting Started - Core

Core Content Block is the necessary content block for dealing with basic building blocks of your application. Core content block provides the core functionality for the Kenkai SDK in order to set up the SDK and also helps with the nudge listening mechanism.

Core content block mainly focus on events related to app navigation of your application, such as events related to app -> app opening, app closing or moving to background. Also for the screen related events, how much time a user spends on a screen and also some basic functional events as well such as login, media related or search related events.

To use the SDK, Core is mandatory to include as it contains the elements regarding the basic app navigation and workflow including nudges. Moreover, all the modules require the core to be integrated to successfully log the events.

To initialise the core SDK, you can jump over to Getting Started Section



As per the SDK structure, content blocks are further divided into 2 main categories: Ingest Events and Catalog Events.

  • Ingest Events helps with time sensitive elements such as when an event is happening.
  • Catalog/Dimension Events helps with static content that provide details about the elements in the events.

To get into more details, You can view both Ingest events and Catalog Events for Core Module.

Ingest ModuleCatalog Module

Main Log Format

Kenkai SDK automatically starts tracking user data (e.g., OS version, device IDs, online/offline status) and engagement with the basic setup above. This data can be stored on the device and uploaded in batches to reduce network and power usage, and to increase the likelihood of successful uploads while you can also upload the events as soon as they happen. The upload is done when the user device session ends. SDK also starts tracking user sessions with this basic setup.

This enables you to gain in-depth insights into user interactions across partner's app. You can also leverage this data to segment users, personalize messages and configure campaign targeting.

We have several predefined actions that users can perform while interacting with partner's app. These actions are referred to as System Events that help in tracking elements on partner's app with user interaction. Some of these events are automated so that partner's don’t have to spend time integrating them.

Below is the Main Body Log Format and its sections that are dependent on it.

Main Log Body Format:

ParamUsabilityFormatDescription
id:REQUIREDSTRINGUnique id for a user, provided by the partner
tzREQUIREDSTRING
(ISO 8601 format - Timezone)
Timezone, auto-provided by SDK
internalREQUIREDInternalObjectTimezone, auto-provided by SDK
dataREQUIREDARRAY DataObjectContains the logs that happened in the session, more details follow.

Internal Info Object Format:

ParamUsabilityFormatDescription
s_id:REQUIREDSTRING
<u_id>_startTimeInMillis_endTimeInMillis)
Unique id for each session, autogenerated by SDK. endTimeInMillis will be 0 for immediate events
sdkREQUIREDSTRING
<os_name>
Version of sdk in use, auto-provided by the SDK.
app_idREQUIREDSTRINGUnique id for the app using which the app is released on the play stores/website url.
app_versionREQUIREDSTRINGComplete version name for the app : <major_version>.<minor_version>.<patch_version> (<version_code>)
device_idREQUIREDSTRINGUnique Id for the device being used, auto-provided by SDK.
device_osREQUIREDSTRINGOS name of the phone being used, auto-provided by SDK.

Data Object Format:

ParamUsabilityEnumFormatDescription
timeREQUIRED--STRING
(ISO 8601 format)
Timestamp (including milliseconds) with timezone when event is triggered, auto-provided by SDK.
__olREQUIRED--BOOLEANOnline status of the device when the event was triggered.
nameREQUIREDEvent NameSTRINGType of log/event being triggered.
propertyREQUIRED--STRINGTop level property value in the event.
ctxREQUIRED--OBJECTA free form <Key-Value> schema depending on the value of type, Value should be of primitive type.

Schema Overview of the Whole Object


{
"id": "user123",
"tz": "+02:00",
"internal": {
"s_id": "user123_1674728022000_1674728030000",
"sdk": "android/0.0.1",
"a_id": "io.kenkai.android.sdk",
"a_ver": "0.0.8 (1)",
"d_id": "91aebf68ce6140dc",
"os": "android"
},
"data": [
{
"time": "2025-10-02 15:04:05.122",
"__ol": true,
"name": "app",
"property": "open",
"ctx": {
"action": "open",
"start_time": 229
}
},
{
"time": "2025-10-02 15:04:06.144",
"name": "page",
"__ol": true,
"property": "Page Title",
"ctx": {
"title": "Page Title",
"path": "some_path.inner_path",
"render_time": 300
}
}
]
}