Lightweight, multi-domain website analytics powered by Cloudflare Workers. No cookies, no tracking pixels, GDPR compliant out of the box.
Runs on Cloudflare Workers with D1 database. Sub-millisecond latency, globally distributed.
Track unlimited domains from a single worker instance. Switch between sites in the dashboard.
No cookies. Daily-rotating visitor hashes. No personal data stored. GDPR compliant by default.
Ultra-lightweight npm package or script tag. SPA-aware with History API patching.
Live visitors, traffic charts, top pages, referrers, countries, devices, and browsers.
Full REST API to query stats programmatically. Build custom dashboards or integrations.
Choose your preferred method to add tracking to your site.
npm install vnoc-analytics
import { init } from 'vnoc-analytics';
init({
endpoint: 'https://your-worker.workers.dev'
});
<script
src="https://your-worker.workers.dev/tracker.js"
data-endpoint="https://your-worker.workers.dev"
defer
></script>
For emails or no-JS environments, use a tracking pixel:
<img src="https://your-worker.workers.dev/pixel.gif?d=example.com&p=/page" width="1" height="1" />
init({
endpoint: 'https://your-worker.workers.dev',
domain: 'example.com', // Override auto-detected domain
autoTrack: true, // Auto-track on page load (default: true)
trackSPA: true, // Track SPA route changes (default: true)
honorDNT: false // Respect Do Not Track header (default: false)
});
Sign in to the dashboard below with your API key. Stats appear within seconds of adding the tracker to your site.
All endpoints require Authorization: Bearer YOUR_API_KEY header. Periods: 24h, 7d, 30d, 90d
| Endpoint | Description |
|---|---|
GET /api/stats?domain=X&period=7d | Overview with timeseries chart data |
GET /api/stats/realtime?domain=X | Active visitors (last 5 minutes) |
GET /api/stats/pages?domain=X | Top pages ranked by views |
GET /api/stats/referrers?domain=X | Traffic sources / referrers |
GET /api/stats/countries?domain=X | Visitor country breakdown |
GET /api/stats/devices?domain=X | Desktop / mobile / tablet split |
GET /api/stats/browsers?domain=X | Browser breakdown |
GET /api/domains | List all tracked domains |
POST /api/domains | Register a new domain |