Skip to content
IForevents Docs
IForevents Docs
InicioPanelGitHubPrivacidadTérminosSeguridadIntroducción
Data ModelEventsData Retention & TTL
Soporte y SLA
Data

Data Model

Events, users, properties and retention

IForevents stores event data in ClickHouse, one project per tenant scope. The core concepts:

  • Event: something a person did (page_view, purchase, signup). Every event has a name, a type, a timestamp and properties.
  • User: a tracked person, keyed by the custom_id you send with identify, plus optional name, email, phone and properties.
  • Property: a key/value pair attached to an event or a user. Values are stored as strings.
  • Event parent: the distinct event names seen in a project; the dashboard uses them for filters and top-event lists.
  • Retention: how long raw events and users are kept. See Data retention.

Tables

TableContents
eventsOne row per tracked event, partitioned by month, ordered by project and time
usersTracked end users, keyed by custom_id within a project
event_parentsDistinct event names per project with their counts
projects, organizationsTenancy; every row carries the organization it belongs to
audit_logWho changed what, per organization

Fourteen materialized views precompute daily counts, per-user daily activity and property values so dashboards never scan raw events.

Event schema

FieldTypeSet byNotes
uuidUUIDserverUnique per stored event
project_uuid, organization_uuidUUIDserverTenancy, from the project key
user_uuidUUIDserverThe profile named by X-User-Id (or the address-derived fallback profile when the header is missing)
parent_namestringyouThe event name (event_name at ingest)
typetrack, page_view, identifyyouDefaults to track
created_atdatetimeserver, or created_at in batch itemsEvent time
propertiesmap of string to stringyouFlattened at ingest

Property naming

Use snake_case keys and keep them stable across releases; the dashboard groups and filters by exact key. Put variants in values (plan: pro) rather than in event names.

Auto-collected properties

The Flutter SDK adds device brand and model, OS and version, app version and platform to every identify call, and the server stamps ingest time on events that carry none.

Isolation

Every query is scoped by the organization in the caller's session or project credentials; a project key can never read another project's data, and the dashboard only lists projects of the current organization.

HTTP Ingest (Server-Side)

Send events from your backend with plain HTTP

Events

Event schema, properties and naming conventions

On this page

TablesEvent schemaProperty namingAuto-collected propertiesIsolation