One script, every framework
One script tag, on any stack.
Paste one deferred script into the `<head>` your pages share. Pageviews, sources, outbound clicks and single-page navigation are tracked from there, with a guide for each common framework and builder.
14-day free trial · No card required · From $9/month
A guide for your platform.
Each guide says which file or setting the snippet goes in, and what to watch for on that platform.
- JavaScript frameworks
- Next.js (App and Pages Router, with
next/script), React with Vite or Create React App, Vue.js and Nuxt, Astro and SvelteKit. - Server-rendered apps
- Laravel, in the Blade layout your pages extend, and Django, in your base template, each with a way to leave it out in development.
- Website builders
- WordPress, Webflow, Framer, Shopify, Ghost, Wix and Squarespace, each in its own custom code setting.
- Anything else
- Plain HTML with a shared head, Google Tag Manager with a Custom HTML tag, or a coding agent that finds the right file for you.
What the script does on its own.
No pageview calls to wire up and no router plugin to install.
- A pageview on load and on every
history.pushState,replaceStateand back or forward navigation, so client-side routing in React, Vue, Astro and SvelteKit is counted - Clicks on links to other websites, unless the tag has
supr-outbound="false" - A heartbeat every 30 seconds while the tab is visible and in use, for session time and the live view
- The visitor id added to Polar Checkout Links, Dodo Payments payment links and Paddle checkout buttons when they're clicked, so payments are tied to the visit
Know it's working.
Settings → General has the snippet with your website id and domain filled in, a Next.js version and a prompt for coding agents. Open your website in a normal browser window and the visit shows on the dashboard within seconds.
Ad blockers hide some visits: once the script works, the managed proxy serves it from a subdomain of yours. Weighing this up against building tracking yourself? See SuprAnalytics for developers.
Set it up.
Copy the snippet
From Settings → General of your website, with its id and domain already in it.
Paste it in the shared head
Follow the guide for your platform: one layout, template or custom code box.
Publish and visit
Open your website in a normal browser window and watch the visit arrive on the dashboard.
How it works, in detail.
The docs page “Installation guides for every platform” goes through it step by step.
Limits worth knowing
localhostand other local hosts are ignored unless Track localhost is on in Settings or the tag hassupr-allow-localhost="true"- Automated browsers such as Playwright, Cypress and Selenium are never counted
- Hash routes (
/#/pricing) needsupr-hash="true", otherwise every route counts as/ - Visits are only recorded on your domain, its subdomains and the additional domains you list
- Shopify's checkout pages don't run theme scripts, so orders are sent with the Payment API
- Wix and Squarespace only allow custom code on some of their plans
Questions, answered.
Where does the script go?
<head> of every page, which on most websites is one shared layout or template. The guide for your platform names the file or setting.Which platforms have a guide?
Do I need to send pageviews from my router?
window.supr("pageview"), and hash routers need supr-hash="true" on the tag.Will it slow my pages down?
defer, so the browser downloads it alongside the page and runs it after the HTML is parsed, without holding up rendering.Can I test it on localhost?
supr-allow-localhost="true" to the tag. Otherwise local hosts are ignored, so your development visits stay out of the reports.More features
- A prompt for coding agentsOne prompt sets up tracking, goals and checkout tagging with your coding agent.Open
- MCP serverAsk Claude, ChatGPT or any MCP client about anything on your dashboard in plain words.Open
- CLISee every website's traffic, revenue, uptime and what to fix from your terminal.Open
- REST APIRead every report, and send goals, payments and crawler hits from your server.Open
- Script configurationEvery supr-* attribute and window.supr() call: goals, identification and more.Open
- User identificationPut a name and an email on a visitor, so journeys and chats show who they are.Open
- Tracking parametersUTM tags and ref links, and how channels are worked out from them.Open
See it on your own website.
Every feature is on every plan, with a free trial and no card.
14-day free trial · No card requiredPricingHow it worksAll features