Intempt Docs

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

FieldRequiredDescription
eventIdYesUnique identifier enabling deduplication and traceability
profileIdYes*Identifies the user for profile unification and identity stitching
userIdYes*Identifies the user
sessionIdYesGroups multiple events into a single behavioral session
accountIdNoOptional account/workspace identifier for B2B or multi-tenant scenarios
pageIdNoPage or screen where the event occurred (primarily client-side)
nameYesLogical name of the event (for example, Purchase, Signup, Subscription Updated)
timestampYesEvent 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

ModuleRole
DiscoverEvents enable segmentation, behavioral analysis, funnels, and predictive models
EngageEvents trigger journeys, messages, and real-time engagement workflows
OptimizeEvents 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:

  • userId becomes optional
  • profileId becomes 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

IdentifierPurposeExample
eventIdGlobally unique, enables deduplication and prevents replay"evt_98ac13f01a2b"
profileIdIdentifies which user performed the event"usr_12ab45c99d77"
sessionIdGroups events into meaningful visits"sess_55f1a4c908e1"
accountIdAssociates events with accounts or organizations"acc_a9213fbb892"
pageIdIdentifies 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

SourceDescription
Client-side SDKsInteraction-driven attributes
Server-side APIsBusiness-critical attributes
Cloud integrationsCRM, commerce, billing systems

Product Catalog Schema

Defines how product data is structured inside Intempt for use in recommendations, feeds, personalizations, and optimization.

Required Fields

FieldTypeDescription
idstringUnique product identifier
titlestringProduct name
descriptionstringProduct description
urlstringProduct page URL
image_linkstringPrimary 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

  1. Events capture all meaningful actions
  2. Identifiers ensure correct unification
  3. Attributes form a unified customer model
  4. Product schemas standardize catalog ingestion

When implemented correctly, all Intempt tools operate from a single clean, real-time source of truth.

On this page