Schema

View as Markdown

The following example shows how an event appears in Krenalis after it has been received and processed. It illustrates most of the fields defined in the event schema. In real scenarios, the actual set of fields varies depending on the type of event sent, the SDK used, and the user's state (authenticated or anonymous).

{
  "kpid": "8bde45c4-92a1-4d8a-a2ce-36f70cfd1f52",
  "connectionId": 129402661,
  "anonymousId": "f8d65981-a881-4fe4-b7fc-9e7c4a339019",
  "channel": "web",
  "category": "E-commerce",
  "context": {
    "app": {
      "name": "Krenalis Storefront",
      "version": "2.3.1",
      "build": "23104",
      "namespace": "com.krenalis.storefront"
    },
    "browser": {
      "name": "Chrome",
      "version": "129.0.6668"
    },
    "campaign": {
      "name": "Seasonal Promotion",
      "source": "newsletter",
      "medium": "email",
      "term": "fall-sale",
      "content": "header-banner"
    },
    "device": {
      "id": "A1B2C3D4E5F6",
      "advertisingId": "7e11a1dc-09c3-42a2-9414-87e5a4c8f1a7",
      "adTrackingEnabled": true,
      "manufacturer": "Apple",
      "model": "MacBookPro18,3",
      "name": "Mary's MacBook Pro",
      "type": "desktop",
      "token": "device-token-9d82f3"
    },
    "ip": "73.112.88.145",
    "library": {
      "name": "krenalis.js",
      "version": "1.0.0"
    },
    "locale": "en-US",
    "location": {
      "city": "San Francisco",
      "country": "United States",
      "latitude": 37.7749,
      "longitude": -122.4194,
      "speed": 0
    },
    "network": {
      "bluetooth": false,
      "carrier": "Verizon",
      "cellular": false,
      "wifi": true
    },
    "os": {
      "name": "macOS",
      "other": null,
      "version": "14.4.1"
    },
    "page": {
      "path": "/products/wool-jacket",
      "referrer": "https://www.mystore.com/",
      "search": "?color=navy&size=m",
      "title": "Wool Jacket – Krenalis",
      "url": "https://www.mystore.com/products/wool-jacket?color=navy&size=m"
    },
    "referrer": {
      "id": "newsletter-seasonal",
      "type": "email"
    },
    "screen": {
      "width": 2560,
      "height": 1600,
      "density": 2.00
    },
    "session": {
      "id": 1760443328460,
      "start": false
    },
    "timezone": "America/Los_Angeles",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.100 Safari/537.36"
  },
  "event": "Product Added",
  "groupId": "acme-inc",
  "messageId": "08fa701f-49b7-4253-b3c4-1504e49004ec",
  "properties": {
    "product_id": "SKU-001247",
    "product_name": "Women's Wool Jacket",
    "category": "Outerwear",
    "price": 149.99,
    "currency": "USD",
    "quantity": 1,
    "coupon": "SUMMER_SALE",
    "inventory_status": "in_stock",
    "color": "navy",
    "size": "M"
  },
  "receivedAt": "2025-10-14T15:32:48.985Z",
  "sentAt": "2025-10-14T15:32:47.610Z",
  "originalTimestamp": "2025-10-14T15:32:46.820Z",
  "timestamp": "2025-10-14T15:32:46.820Z",
  "traits": {
    "name": "Mary Johnson",
    "email": "mary.johnson@example.com",
    "gender": "female",
    "country": "United States",
    "city": "San Francisco",
    "plan": "premium",
    "age": 32
  },
  "type": "track",
  "previousId": "temp-548271",
  "userId": "user-982174"
}

The event schema

The event schema defines the structure of an event, similar to how the profile schema (Customer Model Schema) defines the structure of a user. Unlike the profile schema, which can be customized for each organization, the event schema is predefined.

The Optional column indicates whether a property may be missing from the event data after it is received and processed by Krenalis.

Property Type Optional Description
kpid uuid
Krenalis Profile ID. Identifies the user profile associated with this event.
connectionId int(32) Identifier of the source connection from which the event was received. Set by Krenalis when the event is sent via an SDK or the API using an event write key.
anonymousId string Unique identifier assigned to a user before authentication, used to track anonymous activity across sessions. Set by the SDK or, if missing, by Krenalis.
channel string
Source channel through which the event was received (e.g., web, mobile, server).
category string
Used to group related pages or screens for analysis and reporting.
context object
Information about the environment where the event occurred (device, app/OS, page/screen, network, locale, campaign, library). Populated automatically when events are sent using the JavaScript SDK, the Android SDK or the iOS SDK.
event string
Name of the user action in a track event. Examples: Product Viewed, Order Completed. Not to be confused with the name property used in page or screen events.
groupId string
Identifier of the group (e.g., account, company, organization) associated with the user.
messageId string Unique, immutable identifier for the event. Set by the SDK; if omitted, Krenalis automatically assigns one.
name string
Title of the viewed page or screen in page and screen events. Not to be confused with the event property used in track events.
properties json
Key–value pairs describing contextual details about the event (e.g., product_id, revenue, rating). Distinct from traits, which describe user attributes.
receivedAt datetime UTC timestamp indicating when the event was received. Set by Krenalis.
sentAt datetime UTC timestamp indicating when the event was sent by the client. Set by the SDK and not reliable for analysis due to potential client clock drift; use timestamp for analytics.
originalTimestamp datetime UTC timestamp indicating when the event occurred on the client, in ISO 8601 format. Pass this property if the event occurred in the past. Not recommended for analysis due to possible clock drift; use timestamp instead.
timestamp datetime UTC timestamp indicating when the event occurred, in ISO 8601 format. Set by the SDK and adjusted by Krenalis. Suitable for analysis.
traits json Key–value pairs containing user information (e.g., name, email, plan).
type string Event type: one of page, screen, track, identify, group, or alias. Set by the SDK.
previousId string
User's previous identifier, passed to Krenalis but not used.
userId string
Unique identifier assigned to a user after authentication. If absent, the user is anonymous.

Context

Information about the environment where the event occurred. Populated automatically when events are sent using the JavaScript SDK, the Android SDK or the iOS SDK.

Property Type
Optional
Description
context.app object
Information about the current application, including name, version, and build.
context.browser object
Information about the browser (name, version, type).
context.campaign object
Details about the campaign that originated the event, including name, source, medium, term, content, and custom UTM parameters.
context.device object
Information about the device, including ID, advertising ID, manufacturer, model, name, and type.
context.ip ip
User's current IP address. It is automatically set by the JavaScript SDK, the Android SDK and the iOS SDK. For more details see IP address.
context.library object
Information about the SDK library used to send the event, including name and version.
context.locale string
User's language and regional settings, such as en-US.
context.location object
Device location from which the event originated (city, country, latitude, longitude, speed).
context.network object
Network to which the device originating the event is connected. (Bluetooth, Wi-Fi, cellular, carrier). If both cellular and Wi-Fi are absent, the device is offline.
context.os object
OS of the device from which the event originated (name, version).
context.page object
Page information (path, referrer, title, URL).
context.referrer object
Referrer information (ID, type).
context.screen object
Display details (width, height, pixel density).
context.session object
Session details (ID, start flag).
context.timezone string
User's timezone as a tzdata string (e.g., America/New_York). May be unavailable due to privacy settings or lack of API support.
context.userAgent string
User agent string identifying the device or application sending the event.

App

Information about the current application.

Property Type
Optional
Description
context.app.name string
Application name.
context.app.version string
Application version.
context.app.build string
Application build identifier.
context.app.namespace string
Application namespace or internal identifier.

Browser

Information about the browser.

Property Type
Optional
Description
context.browser.name string
Browser name (e.g., Chrome, Safari, Firefox).
context.browser.other string
Custom or unrecognized browser name.
context.browser.version string
Browser version.

Campaign

Details about the campaign that originated the event.

Property Type
Optional
Description
context.campaign.name string
Campaign name.
context.campaign.source string
Campaign source.
context.campaign.medium string
Campaign medium (e.g., email, social).
context.campaign.term string
Campaign keyword or term.
context.campaign.content string
Campaign content or variation.

Device

Information about the device. For iOS, note that model identifiers may differ from marketed names (e.g., iPhone16,2 for iPhone 15 Pro Max).

Property Type
Optional
Description
context.device.id string
Device identifier.
context.device.advertisingId string
Advertising identifier.
context.device.adTrackingEnabled boolean
Indicates whether ad tracking is enabled.
context.device.manufacturer string
Device manufacturer.
context.device.model string
Device model.
context.device.name string
Device name.
context.device.type string
Device type (e.g., mobile, desktop).
context.device.token string
Unique device token.

Library

Information about the SDK library used to send the event.

Property Type
Optional
Description
context.library.name string
Name of the analytics library.
context.library.version string
Version of the analytics library.

Location

The device location from which the event originated.

Property Type
Optional
Description
context.location.city string
City.
context.location.country string
Country.
context.location.latitude float(64)
Latitude.
context.location.longitude float(64)
Longitude.
context.location.speed float(64)
Speed at which the device is moving, in meters per second.

Network

The network to which the device originating the event is connected. If both cellular and wifi are absent, the device is offline.

Property Type
Optional
Description
context.network.bluetooth boolean
Indicates whether Bluetooth is active.
context.network.carrier string
Mobile network carrier name.
context.network.cellular boolean
Indicates whether a cellular connection is active.
context.network.wifi boolean
Indicates whether Wi-Fi is active.

OS

OS of the device from which the event originated

Property Type
Optional
Description
context.os.name string
Operating system name (e.g., Android, iOS, Windows).
context.os.other string
Unrecognized operating system name.
context.os.version string
Operating system version.

Page

Page information.

Property Type
Optional
Description
context.page.path string
Page path.
context.page.referrer string
Referring URL.
context.page.search string
URL search parameters.
context.page.title string
Page title.
context.page.url string
Full page URL.

Referrer

Referrer information.

Property Type
Optional
Description
context.referrer.id string
Referrer source identifier.
context.referrer.type string
Referrer source type.

Screen

Display details.

Property Type
Optional
Description
context.screen.width int(16)
Screen width in pixels.
context.screen.height int(16)
Screen height in pixels.
context.screen.density decimal(3,2)
Screen pixel ratio.

Session

Session details. See also Session tracking.

Property Type
Optional
Description
context.session.id int(64)
Unique session identifier.
context.session.start boolean
Indicates whether the event starts a session.