| event_type | event_name | Trigger | Key Fields |
|---|
| pageview | pv | Page load / SPA navigation | url, path, referrer_url, page_title, utm_* |
| scroll | scroll_25, scroll_50, scroll_75, scroll_100 | Scroll milestone reached | url, path |
| click | outbound | External link clicked | props.target (destination URL) |
| engagement | page_exit | Visitor leaves page | page_duration, props.total_time_ms, props.visible_time_ms, props.scroll_depth |
| custom | (user-defined) | etiquetta.track() call | props (user-defined JSON) |
| performance | — | Page unload | lcp, fcp, cls, inp, ttfb, page_load_time |
| error | — | JS error / rejection | error_message, error_stack, script_url, line_number |
Fields Included With Every Event
| Field | Description |
|---|
| event_id | Unique event identifier |
| timestamp | Unix timestamp in milliseconds |
| site_id | Domain identifier |
| domain | Hostname |
| visitor_hash | Deterministic visitor fingerprint |
| has_scroll | Whether visitor scrolled (0/1) |
| has_mouse_move | Whether mouse movement detected (0/1) |
| has_click | Whether visitor clicked (0/1) |
| has_touch | Whether touch events detected (0/1) |
| bot_signals | Client-side bot detection signals |
Server-Side Enrichment
These fields are added server-side during ingestion:
| Field | Description |
|---|
| geo_country | Country (from GeoIP) |
| geo_city | City |
| geo_region | Region/state |
| geo_latitude | Latitude |
| geo_longitude | Longitude |
| browser_name | Browser (from User-Agent) |
| os_name | Operating system |
| device_type | mobile, desktop, or tablet |
| is_bot | Bot classification (score > 50) |
| bot_score | Bot probability score (0–100) |
| bot_category | human, good_bot, bad_bot, suspicious |
| session_id | Server-computed session identifier |
| ip_hash | Salted hash of client IP |