Tracker Reference¶
Script Size¶
~650 bytes minified. No external dependencies.
What It Collects¶
Data |
How |
Privacy |
|---|---|---|
Page URL |
|
No PII |
Referrer |
|
Domain only stored |
Viewport width |
|
Bucketed: mobile/tablet/desktop |
Time on page |
|
Seconds only |
Scroll depth |
|
Max percentage |
LCP |
|
Milliseconds |
INP |
|
Milliseconds |
CLS |
|
Score |
What It Does NOT Collect¶
Cookies (none set, none read)
localStorage / sessionStorage (never accessed)
IP address (used server-side for GeoIP, then discarded)
Device fingerprint (no canvas, font, or WebGL probing)
User identifiers (daily-rotating hash prevents cross-day tracking)
Form inputs or page content
Events Sent¶
Event |
When |
Payload |
|---|---|---|
Pageview |
Page load |
URL, referrer, viewport |
Navigation |
SPA pushState/replaceState |
URL, time on previous page |
|
|
Duration, scroll depth |
|
|
LCP, INP, CLS |
Custom |
|
Name + properties |
SPA Support¶
The tracker automatically intercepts history.pushState and history.replaceState to track SPA page transitions. Works with React Router, Vue Router, SvelteKit, Astro, and any framework that uses the History API.
Custom Events API¶
// Track a conversion
antics.event('signup', { plan: 'pro' });
// Track a download
antics.event('download', { file: 'whitepaper.pdf' });
// Track a form submission
antics.event('contact_form', { source: 'footer' });
Event properties are stored as JSON and can be viewed in the Events page of the dashboard.