Skip to main content

Userpilot Data Model

This reference describes the core data entities in Userpilot and how they relate to each other.

Entity Relationships

User

A User represents an individual who interacts with your application.

Required Fields

Reserved Fields

These fields have special meaning in Userpilot:

Custom Properties

Any additional fields passed to identify() become custom user properties:

Identity Rules

  • user_id must be unique per environment
  • user_id should be stable (don’t use session IDs or random values)
  • Calling identify() with the same user_id updates the existing user
  • Properties are merged, not replaced (existing properties persist unless overwritten)
  • To remove a property, set it to null

Company

A Company represents an organization that groups multiple users.

Required Fields

Reserved Fields

Custom Properties

Identity Rules

  • Company id must be unique per environment
  • Users are associated with a company via the company object in identify()
  • A user can only belong to one company at a time
  • Changing the company id in identify() moves the user to the new company
  • Company properties are merged, not replaced

Event

An Event represents a user action or occurrence.

Tracked Events

Sent via userpilot.track():

Auto-captured Events

Automatically recorded (if enabled):

Event Properties

Events automatically include:

Data Types

Data Limits

Environment Separation

  • Production and staging environments are completely separate
  • Users, companies, and events do not cross environments
  • Each environment has its own App Token and API Key
  • Content created in staging does not appear in production