This guide outlines how NotifyVisitors structures and manages events and user profiles, the core building blocks of your analytics data model. You’ll learn about the different attribute types (system, default, and custom), how they’re captured, and best practices for designing a scalable schema that remains consistent as your product evolves.
In data warehouse parlance, events represent your fact tables — the actions users take — while user profiles serve as dimension tables, providing context about who those users are. Together, they form a reliable foundation for accurate tracking, analysis, and personalization across your product.
A user profile represents a collection of properties associated with an individual user. It functions as a key–value store that maintains the current state of that user. User profiles are connected to events through a distinct id (nv_uid): event.nv_uid = user.nv_uid.
In NotifyVisitors, user profiles bring together system-generated identifiers, demographic details, and custom-defined attributes. At a minimum, each profile includes a distinct identifier (such as user_id, email, or mobile).
Behind the scenes, NotifyVisitors organizes user data in a structured table. Each row represents a single user profile, while columns represent user attributes (e.g., Name, Email, Department). These attributes can be updated as new information becomes available.
| nv_uid | Name | Department | |
|---|---|---|---|
| 101 | David | david@slack.com |
Engineering |
| 202 | Emma | emma@asana.com |
Product |
| 303 | Liam | liam@airtable.com |
Design |
System attributes:
Core identifiers and reserved fields such as nv_uid, name / first_name / last_name, email, mobile, and first/last seen timestamps.
Default attributes:
Automatically derived and maintained metadata, including City, Country, Region Code, Time Zone, etc., which are updated whenever a profile changes.
Custom attributes:
Business-specific traits that extend profile context — such as plan, account_tier, or LTV — allowing deeper segmentation and personalization beyond system and default fields.
Events represent actions that occur within your product. Each event includes details describing that action — such as time, device, browser, and location. At minimum, every event should include:
user_id, email, or mobile)Events can also be joined with user profiles to provide additional context and enrichment.
System attributes: