Event Schema Overview
Intempt's event-centric data model: event structure, required fields, attribute schemas, and product catalog schema.
Event Schema Overview
Intempt operates on an event-centric data model where every meaningful action becomes an event.
"An event is the smallest unit of truth in Intempt."
Events enable unified customer behavior tracking across devices and platforms, real-time data processing, and power analytics, journeys, personalization, experiments, and recommendations.
Event Processing Guarantees
Once successfully ingested, events are validated against the schema and become available across Intempt tools in near real time. The system automatically deduplicates events using eventId to prevent double-counting. Developers need not manage batching, ordering, retries, or delivery guarantees manually. The platform ensures events are processed deterministically.
Event Object Structure
All events conform to this structure:
{
"eventId": "string",
"profileId": "string",
"userId": "string",
"sessionId": "string",
"accountId": "string",
"pageId": "string",
"name": "string",
"timestamp": 1714631904000
}Field Reference
| Field | Required | Description |
|---|---|---|
eventId | Yes | Unique identifier enabling deduplication and traceability |
profileId | Yes* | Identifies the user for profile unification and identity stitching |
userId | Yes* | Identifies the user |
sessionId | Yes | Groups multiple events into a single behavioral session |
accountId | No | Optional account/workspace identifier for B2B or multi-tenant scenarios |
pageId | No | Page or screen where the event occurred (primarily client-side) |
name | Yes | Logical name of the event (for example, Purchase, Signup, Subscription Updated) |
timestamp | Yes | Event timestamp in milliseconds since epoch (Unix time). Defaults to the current time if omitted. |
* profileId and userId become optional when productId is provided. In that case, the event is treated as product ingestion, not a behavioral event.
How Events Power Intempt
| Module | Role |
|---|---|
| Discover | Events enable segmentation, behavioral analysis, funnels, and predictive models |
| Engage | Events trigger journeys, messages, and real-time engagement workflows |
| Optimize | Events power experiments, dashboards, conversion analysis, and performance insights |
Required Fields
Core identifiers allow Intempt to:
- Unify users across devices and sessions
- Group actions into meaningful sessions
- Associate events with accounts
- Process events safely without duplication
- Distinguish behavioral events from product ingestion
Product-Specific Rule
If productId is included in the payload:
userIdbecomes optionalprofileIdbecomes optional- No anonymous user profiles are created
- The payload is treated as product ingestion, not a behavioral event
{
"productId": "123",
"data": {
"name": "Wine",
"amount": 150,
"quantity": 4
}
}Identifier Details
| Identifier | Purpose | Example |
|---|---|---|
eventId | Globally unique, enables deduplication and prevents replay | "evt_98ac13f01a2b" |
profileId | Identifies which user performed the event | "usr_12ab45c99d77" |
sessionId | Groups events into meaningful visits | "sess_55f1a4c908e1" |
accountId | Associates events with accounts or organizations | "acc_a9213fbb892" |
pageId | Identifies page or screen context | "page_dashboard_home" |
Attribute Schemas
Attributes represent everything Intempt knows about a profile or account over time. They enable personalization, segmentation, journeys, and experimentation.
Attributes describe:
- Stable properties: email, country, plan
- Evolving states: engagement score, LTV, usage metrics
They are continuously updated and merged. Attributes always reflect the latest known state; changes are immediately usable in journeys and experiments.
Attribute Ingestion Sources
| Source | Description |
|---|---|
| Client-side SDKs | Interaction-driven attributes |
| Server-side APIs | Business-critical attributes |
| Cloud integrations | CRM, commerce, billing systems |
Product Catalog Schema
Defines how product data is structured inside Intempt for use in recommendations, feeds, personalizations, and optimization.
Required Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique product identifier |
title | string | Product name |
description | string | Product description |
url | string | Product page URL |
image_link | string | Primary product image URL |
{
"id": "SKU12345",
"title": "Cotton Hoodie",
"description": "Soft-touch premium cotton hoodie.",
"url": "https://yourstore.com/products/hoodie",
"image_link": "https://yourstore.com/products/hoodie.jpg"
}Optional Fields
price, brand, category, tags, availability, rating
Feed Structure (JSON)
{
"products": [
{
"product": {
"id": "SKU12345",
"title": "Cotton Hoodie",
"description": "Soft-touch premium cotton hoodie.",
"url": "https://yourstore.com/products/hoodie",
"image_link": "https://yourstore.com/products/hoodie.jpg"
}
}
]
}Feed Structure (XML)
<catalog>
<products>
<product>
<id>SKU12345</id>
<title>Cotton Hoodie</title>
<description>Soft-touch premium cotton hoodie.</description>
<url>https://yourstore.com/products/hoodie</url>
<image_link>https://yourstore.com/products/hoodie.jpg</image_link>
</product>
</products>
</catalog>Summary
- Events capture all meaningful actions
- Identifiers ensure correct unification
- Attributes form a unified customer model
- Product schemas standardize catalog ingestion
When implemented correctly, all Intempt tools operate from a single clean, real-time source of truth.
