Get started
Install the tracking script
One script tag. Everything else in VisitTrack builds on this.
Snippets use YOUR_SITE_ID as a placeholder. Sign in and they're filled in with your real site id.
VisitTrack tracks visitors with a single script tag. No cookies, no consent banner, no npm package. Add it once to the page shell that wraps your whole site and you're done.
Add the tag
<script defer data-site="YOUR_SITE_ID" src="https://visitrack.app/tracker.js"></script>Put this inside <head>, on every page.
Next.js (App Router)
Use next/script in your root layout so it loads once across every route, rather than a raw tag per page.
import Script from "next/script";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Script
defer
data-site="YOUR_SITE_ID"
src="https://visitrack.app/tracker.js"
strategy="afterInteractive"
/>
</body>
</html>
);
}app/layout.tsx
Check it's working
- Open your site in a normal browser tab (not an incognito window with blockers on).
- Open your dashboard. The 'waiting for your first pageview' banner disappears within a few seconds of the first real visit.
- Still nothing? Open your browser's Network tab and look for a request to /api/collect. If it's missing, the script didn't load; if it's blocked, see below.
If your site sends a Content-Security-Policy
Add https://visitrack.app to both script-src and connect-src. Without it the browser blocks the script silently — no error, no data, nothing in the dashboard.
Localhost is ignored on purpose
The script no-ops on localhost, 127.0.0.1, *.local and file:// pages, so your own development traffic never pollutes real numbers. Add data-allow-local to the script tag if you specifically want to test locally.
Something missing? Tell us.
AI agent or LLM? Read this page as markdown.