One lightweight script, no cookie banner, and a proxy through your own domain so adblockers don't blind you — privacy-first analytics that takes minutes, not a consent audit.
Published June 27, 2026 · ~3 min read
The process
The full path from zero analytics to accurate, cookie-free numbers. The proxy step at the end is optional but is the difference between seeing ~60% and ~95% of your traffic.
Directions
1Add your site in Plausible
Create an account at plausible.io (or self-host the CE version — same steps apply) and add your site by domain name. Plausible is per-domain: subdomains can be tracked into the same site or split out, your choice at add time.
Because Plausible uses no cookies and stores no personal identifiers, in most jurisdictions this is the setup that doesn't require a consent banner — which is why it's on the shortlist every year.
2Add the script tag
Copy the one-line script into your site's <head>. It's ~1KB, async, and doesn't touch page performance budgets. On an Astro or static site this goes in the base layout once.
Deploy, visit your site, and the dashboard shows the visit within seconds — Plausible is real-time by default, no 24-hour processing delay.
Pageviews come free; conversions need one line each. Use the tagged-events script variant and add a CSS class like plausible-event-name=Signup to buttons you care about, or call window.plausible('Signup') from code.
Define each event as a goal in the site settings so it charts on the dashboard. A handful of goals — signup, purchase, contact — usually answers every question a landing site has.
4Proxy through your own domain
Adblockers block third-party analytics hosts wholesale, silently hiding a third or more of your (technical) audience. The fix is serving the script and its event endpoint from your own domain via a proxy — a few lines in a Cloudflare Worker, or a rewrite rule on Netlify/Vercel/nginx.
Point the script src at your proxied path and set data-api to the proxied event endpoint. Traffic now flows first-party and the numbers stop lying.
Need to show a client or teammate the dashboard? Create a shared link (optionally password-protected) instead of another account. Public stats pages are one toggle if you want radical transparency.
Check the data retention setting matches your needs, and if you're self-hosting, put the instance behind TLS and back up its database like any other production datastore.
Common issues & fixes
Dashboard shows zero visits after install.
The script is blocked (try a browser without adblock), the data-domain doesn't exactly match the site name in Plausible, or a CSP is blocking the script host — add it to script-src.
Numbers look implausibly low vs. server logs.
Adblockers. Set up the first-party proxy in step four; expect a visible jump, especially on developer-heavy audiences.
Custom events don't appear.
You added the CSS class but kept the plain script — swap to the tagged-events variant. Also confirm the goal is defined in settings; events without goals don't chart.
Localhost development polutes production stats.
Plausible ignores localhost by default with the standard script; if you proxied it, use the script.exclusions variant or exclude your own IPs/paths in settings.
SPA route changes aren't counted.
Pageviews fire on load, not on pushState, unless you use the default script (which handles it) — custom setups need plausible('pageview') on route change.
Honesty note: articles are drafted with AI assistance, then a human
checks each one against the vendor's current setup flow before it
publishes — nothing goes live unreviewed. Vendor interfaces still
change; if a step looks different, the underlying record is what
matters.