Auto-Properties
Properties automatically attached to events by SDKs and the backend. All auto-properties are prefixed with $ to distinguish them from user-defined properties.
You never need to set these manually — the SDK and server add them automatically. Sending them yourself creates duplicates.
SDK-enriched (client-side)
Attached by the Web SDK before sending to the API.
| Property | Source | Description | Example |
|---|---|---|---|
$url | Web SDK | Current page URL | https://app.com/pricing |
$referrer | Web SDK | Document referrer | https://google.com |
$title | Web SDK | Page title | Pricing — Acme |
$screen | SDK | Screen dimensions | 1920x1080 |
$utm_source | Web SDK | UTM source parameter | google |
$utm_medium | Web SDK | UTM medium parameter | cpc |
$utm_campaign | Web SDK | UTM campaign parameter | spring_sale |
$utm_term | Web SDK | UTM term parameter | analytics+software |
$utm_content | Web SDK | UTM content parameter | banner_a |
$sdkVersion | SDK | SDK version string | 1.2.0 |
UTM parameters are parsed from the page URL on each event. They persist for the session once captured.
Server-enriched (ingestion workers)
Added by event workers after BatchCreate — not present in the SDK payload.
| Property | Description | Example |
|---|---|---|
$geo.country | Country from IP geolocation | US |
$geo.city | City from IP | San Francisco |
$geo.region | Region/state from IP | California |
$browser | Browser name | Chrome |
$browserVersion | Browser version | 120.0.0 |
$os | Operating system | macOS |
$device | Device type | desktop, mobile, tablet |
$botScore | Bot likelihood (0–1) | 0.02 |
Server enrichment requires the request to include client IP (standard behind a load balancer). Self-hosted deployments must forward X-Forwarded-For correctly.
Usage in queries
Reference auto-properties in Insights filters and breakdowns exactly like custom properties:
Breakdown by country
Events: page_view
Breakdown: $geo.country
Aggregation: Unique usersFilter to Chrome users
Events: purchase
Filter: $browser = "Chrome"
Aggregation: Sum (revenue)UTM campaign performance
Events: signup_completed
Breakdown: $utm_campaign
Aggregation: Count
Filter: $utm_source = "google"Exclude bots
Events: page_view
Filter: $botScore < 0.5
Aggregation: Unique usersAuto-properties vs custom properties
| Auto-properties | Custom properties | |
|---|---|---|
| Prefix | $ | None |
| Set by | SDK or server | Your code |
| Available on | All events | Events where you send them |
| Schema | Fixed | Any key-value |
Custom properties you define (e.g. plan, product_id) are separate from auto-properties and appear without the $ prefix.
Privacy
| Property | Privacy consideration |
|---|---|
$url | May contain query params with sensitive data — review URL structure |
$geo.* | Derived from IP — disclose in privacy policy |
$referrer | May reveal referring site with user context |
$botScore | Internal signal — safe to use for filtering |
For GDPR/CCPA compliance:
- Review which auto-trackers are enabled — see Auto-tracking
- Disable form and click trackers if element text may contain PII
- Add consent before calling
init()if required by your jurisdiction - Geo enrichment uses IP address — document this in your privacy policy
Further reading
- Auto-tracking — which events trigger auto-properties
- Insights — using properties in queries
- Tracking events — custom properties alongside auto-properties