Event Data Schema
Welcome to the Userpilot Event Data Schema documentation! This guide provides a comprehensive overview of the structure, attributes, and relationships of events exported from Userpilot. It is designed to help data analysts, engineers, and business users understand and utilize Userpilot event data for integration, analytics, and reporting purposes.
Below, you'll find detailed explanations of each event field, example payloads, and best practices for working with Userpilot data in your own systems.
Event Structure
Attribute | Type | Description |
---|---|---|
app_token |
String | Unique identifier for the app. |
event_type |
String | Type of event (identify_user , identify_company , interaction , track , track_feature , page_view ). |
event_name |
String | Name of the event. For some types, this is empty or contains details (see below). |
user_id |
String | Unique identifier for the user (for identify_user events). |
company_id |
String | Unique identifier for the company (for identify_company events). |
source |
String | Source of the event (web-client , backend-http , backend-hubspot , backend-salesforce , backend-segment ). |
inserted_at |
DateTime (UTC) | Timestamp of the event (microsecond precision). |
Auto-Captured Attributes | ||
hostname |
String | Hostname where the event took place. |
pathname |
String | Page path where the event occurred. |
screen_width |
Integer | User's screen width (px). |
screen_height |
Integer | User's screen height (px). |
device_type |
String | Device type (desktop , mobile , etc.). |
user_agent |
String | Browser's user agent string. |
operating_system |
String | User's operating system. |
browser |
String | Browser name (e.g., Chrome ). |
browser_language |
String | Browser language setting. |
session |
String | Session number (for SDK events, auto-updated for web-client ). |
country_code |
String | 2-letter country code. |
Custom Attributes | ||
metadata |
Object | The attributes object varies depending on the event_type (see next section for details). |
Event Name & Type
The event_name
field tracks the name of the event and varies depending on the event_type
:
- For
identify_user
,identify_company
, andpage_view
events: This field will be empty. - For
track
events: The value will represent the name of the event being passed programmatically or through the button-tracking feature. - For
track_feature
events: The value will contain theid
of the tracked feature tag. - For
interaction
events:- The format is
{entity_type}:{entity_id}:{entity_interaction_status}
- Example:
checklist:2:SEEN
,experience:448:DISMISSED
,resource_center:1:ENGAGED
.
- The format is
Source
The source
field indicates where the event was captured. The default value is web-client
, but it can vary depending on the source of the event:
- web-client: Captured through the web SDK.
- backend-http: Captured via HTTP endpoints.
- backend-hubspot: Captured through the HubSpot integration.
- backend-salesforce: Captured through the Salesforce integration.
- backend-segment: Captured through SegmentIO integration.
Attributes Schema
The attributes
field varies depending on the event type:
- For
identify_user
,identify_company
, andtrack
events: This field will contain custom attributes passed during the event tracking. - For
page_view
andtrack_feature
events: This field will be an empty object. - For
interaction
events: Attributes vary based on the engagement entity type and provide specific interaction details (e.g.,checklist:2:SEEN
,experience:448:DISMISSED
). (see next section for details)- Experience refers to flow
Interaction Attributes
For interaction events, the attributes vary based on the specific engagement entity and the event type. Below are common interaction events and the relevant attributes associated with each.
Surveys (survey_module
events)
These events track user interactions with survey modules, including responses, dismissals, and submissions.
Attribute | Type | Description |
---|---|---|
feedback |
String | Feedback provided by the user, often a unique identifier or actual feedback text. |
interaction_id |
String | Unique ID of the survey module (e.g., survey_module_49 ). |
is_dismissed |
String | Indicates whether the survey was dismissed by the user (1 for yes, 0 for no). |
parent_id |
String | The ID of the parent survey. |
status |
String | Current status of the survey interaction (e.g., COMPLETED , DISMISSED ). |
survey_question |
String | The question presented to the user. |
variant |
String | Survey type (e.g., multiple_choice , open_text ). |
Example:
{ "event_name": "survey_module:49:COMPLETED", "attributes": { "feedback": "318b72c9-b1ad-4bf6-854b-26d32ac9d281", "interaction_id": "survey_module_49", "is_dismissed": "0", "parent_id": "survey_13", "status": "COMPLETED", "survey_question": "", "variant": "multiple_choice" } }
Checklists (checklist
and checklist_task
events)
These events track user progress through checklists, including task engagement and completions.
Attribute | Type | Description |
---|---|---|
interaction_id |
String | Unique ID of the checklist or checklist task (e.g., checklist_10 ). |
is_dismissed |
String | Indicates whether the checklist or task was dismissed by the user (1 for yes, 0 for no). |
parent_id |
String | The ID of the parent checklist, if applicable. |
status |
String | Status of the checklist interaction (e.g., SEEN , ENGAGED ). |
Example:
{ "event_name": "checklist:10:SEEN", "attributes": { "interaction_id": "checklist_10", "is_dismissed": "", "parent_id": "", "status": "SEEN", } }
Resource Center and Articles (resource_center
, resource_center_article
events)
These events capture user interactions with the resource center or specific articles within it.
Attribute | Type | Description |
---|---|---|
article_title |
String | Title of the article the user engaged with. |
article_url |
String | URL of the article. |
interaction_id |
String | Unique ID for the resource center interaction or article (e.g., resource_center_article_6FAA69 ). |
is_dismissed |
String | Indicates if the resource center or article interaction was dismissed. |
parent_id |
String | The ID of the parent resource center entity (if applicable). |
status |
String | Status of the interaction (e.g., ENGAGED ). |
Example:
{ "event_name": "resource_center_article:6FAA69EBAFEEDF5E641ACF6D52847FC98AC44437591FC39D8BE67BDCF4570023:ENGAGED", "attributes": { "article_title": "How to Delete a Flow - Userpilot Knowledge Base", "article_url": "<https://docs.userpilot.com/article/224-how-to-delete-a-flow>", "interaction_id": "resource_center_article_6FAA69EBAFEEDF5E641ACF6D52847FC98AC44437591FC39D8BE67BDCF4570023", "is_dismissed": "0", "parent_id": "resource_center_1", "status": "ENGAGED" } }
NPS Events
These events capture feedback from users through NPS surveys, including scores, feedback, and follow-up questions.
Attribute | Type | Description |
---|---|---|
feedback |
String | Feedback provided by the user (can be text or a unique ID). |
follow_up_question |
String | A follow-up question posed to the user after providing the NPS score. |
interaction_id |
String | Unique ID for the NPS interaction (e.g., nps_1 ). |
score |
String | NPS score given by the user (typically between 0 and 10). |
status |
String | Status of the NPS interaction (e.g., SUBMITTED_FEEDBACK , SUBMITTED_SCORE ). |
survey_question |
String | The specific NPS question posed to the user (e.g., "How likely are you to recommend us?"). |
submission_id |
String | Unique identifier for the NPS submission. |
Example:
{ "event_name": "nps:1:SUBMITTED_FEEDBACK", "attributes": { "feedback": "Great tool, highly recommended!", "follow_up_question": "Is there anything else we can improve?", "interaction_id": "nps_1", "score": "9", "status": "COMPLETED", "submission_id": "2024-05-02", "survey_question": "How likely is it that you would recommend us to a friend or colleague?" } }
Flow and Flow Steps (experience
, experience_step
events)
These events track user interactions with experiences, such as onboarding or tutorials.
Attribute | Type | Description |
---|---|---|
interaction_id |
String | Unique ID of the experience or experience step (e.g., experience_493 ). |
is_dismissed |
String | Indicates if the experience was dismissed (1 for yes, 0 for no). |
status |
String | The status of the experience (e.g., COMPLETED , DISMISSED ). |
total_dismissed |
String | The total number of times the experience was dismissed by the user. |
Example:
{ "event_name": "experience:493:DISMISSED", "attributes": { "interaction_id": "experience_493", "is_dismissed": "1", "status": "DISMISSED", "total_dismissed": "1" } }
🏛️ Key Data Entities & Relationships
- Users: Identified by
user_id
, withmetadata
(traits likeemail
,signup_at
,plan_type
). - Companies: (B2B) Identified by
company_id
, with properties (e.g.,company_name
,industry
). - Events: Actions or occurrences, each as a JSON line.
- Sessions: Grouped events within a continuous user activity period, identified by
session
.
Relationships
- A User can perform many Events.
- Multiple Events can occur within a single Session.
- A User may belong to one Company.
If you encounter any problems or have questions not covered in this documentation, please reach out to the Userpilot support team through your usual support channels (e.g., in-app chat, email support@userpilot.com).
Provide as much detail as possible about your issue for a faster resolution.