{"_id":"@alfredgrondrup/tracker","name":"@alfredgrondrup/tracker","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@alfredgrondrup/tracker","version":"1.0.0","description":"Tiny (~1kb), cookieless, SPA-aware analytics tracker. Pageviews, custom events, and revenue.","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","unpkg":"./dist/clarity.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./clarity.js":"./dist/clarity.js"},"sideEffects":false,"keywords":["analytics","privacy","cookieless","tracker","pageviews","revenue-attribution"],"license":"MIT","scripts":{"build":"node build.js"},"devDependencies":{"esbuild":"^0.23.0"},"_id":"@alfredgrondrup/tracker@1.0.0","_nodeVersion":"22.13.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-/NbhJ0mooeWFqOS+O2r2srW8C0fhLRa8eDaPlZYRRgsyTQZpLLlWgrWzv7BKhOgFXL/khLOw7LcdcbbIShlaMw==","shasum":"a8b9957db6fe1f8dda0d44ae488e87dc0e82cea8","tarball":"https://registry.npmjs.org/@alfredgrondrup/tracker/-/tracker-1.0.0.tgz","fileCount":6,"unpackedSize":11600,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD0x9lF6XgRtHDC9c0btskFaXK8UcA+SWmH4RtzJM6n8AIhAPzabPn04eHCzdEumjIe/Js6TjQHzFw7VgdAK2mnIG4n"}]},"_npmUser":{"name":"alfredgrondrup","email":"alfredgrondrup@gmail.com"},"directories":{},"maintainers":[{"name":"alfredgrondrup","email":"alfredgrondrup@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tracker_1.0.0_1784667733610_0.8354255116019529"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T21:02:13.442Z","1.0.0":"2026-07-21T21:02:13.741Z","modified":"2026-07-21T21:02:13.884Z"},"maintainers":[{"name":"alfredgrondrup","email":"alfredgrondrup@gmail.com"}],"description":"Tiny (~1kb), cookieless, SPA-aware analytics tracker. Pageviews, custom events, and revenue.","keywords":["analytics","privacy","cookieless","tracker","pageviews","revenue-attribution"],"license":"MIT","readme":"# @clarity/tracker\n\nTiny (~1kb gzip), cookieless, SPA-aware analytics tracker. No cookies, no\nlocalStorage, no persistent IDs. Respects Do-Not-Track / Global Privacy Control.\nPairs with the self-hosted [clarity](../../README.md) collector, but will POST\nto any endpoint that accepts its JSON.\n\n## Install\n\n```bash\nnpm i @clarity/tracker\n```\n\n```js\nimport clarity from \"@clarity/tracker\";\n\nclarity.init({\n  site: \"myapp.com\",\n  endpoint: \"https://analytics.example.com/api/event\", // default \"/api/event\"\n});\n\n// custom events\nclarity.track(\"Signup\");\nclarity.track(\"Trial Started\", { props: { plan: \"pro\" } });\n\n// revenue attribution\nclarity.revenue(49, { name: \"Purchase\" });\n// or\nclarity.track(\"Purchase\", { revenue: 49 });\n```\n\nPageviews (including SPA route changes via `history.pushState`) are tracked\nautomatically. Disable with `autoPageviews: false`.\n\n## Script tag (no build step)\n\n```html\n<script defer\n  data-site=\"myapp.com\"\n  data-endpoint=\"https://analytics.example.com/api/event\"\n  src=\"https://unpkg.com/@clarity/tracker/dist/clarity.js\"></script>\n```\n\nThen anywhere: `window.clarity.track(\"Purchase\", { revenue: 49 })`.\n\n### `data-*` attributes\n\n| Attribute        | Default        | Meaning                                  |\n| ---------------- | -------------- | ---------------------------------------- |\n| `data-site`      | —              | Required property id                     |\n| `data-endpoint`  | `/api/event`   | Collector URL                            |\n| `data-auto`      | `true`         | Auto pageviews; `false` to disable       |\n| `data-hash`      | `false`        | Count hash changes as pageviews          |\n| `data-localhost` | `false`        | Send events from localhost too           |\n\n## API\n\n```ts\ninit(options: ClarityOptions): ClarityApi\ntrack(name: string, opts?: { revenue?: number; props?: object; path?: string }): void\nrevenue(amount: number, opts?: { name?: string; props?: object }): void\n```\n\n## What it sends\n\n```jsonc\n{\n  \"site\": \"myapp.com\",\n  \"name\": \"pageview\",          // or your event name\n  \"path\": \"/pricing\",\n  \"referrer\": \"https://news.ycombinator.com/\",\n  \"utm\": { \"source\": \"newsletter\", \"medium\": \"email\" },\n  \"width\": 1440,\n  \"ts\": 1721563200000,\n  \"revenue\": 49                // only on revenue events\n}\n```\n\nNo IP address, cookie, or fingerprint is sent. The collector derives an\nanonymous, daily-rotating visitor hash server-side and never stores raw IPs.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-3155d497ecf07b45c128c1f97720abab"}