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 toidentify() become custom user properties:
Identity Rules
user_idmust be unique per environmentuser_idshould be stable (don’t use session IDs or random values)- Calling
identify()with the sameuser_idupdates 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
idmust be unique per environment - Users are associated with a company via the
companyobject inidentify() - A user can only belong to one company at a time
- Changing the company
idinidentify()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 viauserpilot.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