VisitWatch documentation
How to install it, what to send it, and what it does and does not collect on the way.
Quick start
- 1.Create a workspace and add the site you want to measure.
- 2.Copy the tracker script from the site's settings.
- 3.Paste it into the <head> of every page.
- 4.Open the dashboard. The first event usually lands within seconds.
Get started
Tracking
Reading the reports
Privacy
Guides
VisitWatch is a privacy-friendly analytics dashboard for understanding your traffic. Its defaults count pageviews and the events you choose to send, without cookies, without a persistent identifier, and without anything that identifies a person.
Tracking
The script
One tag in the <head> of every page. It is deferred, so it never blocks a render, and it carries the id of the site events are filed against.
<script
defer
src="https://analytics.visitwatch.com/v.js"
data-website-id="YOUR-SITE-ID"
></script>Copy the real one from the site’s settings, where the id is already filled in. That screen also says whether the tracker is reporting and when the last event arrived, so installing it is something you confirm rather than something you hope worked.
The website id is not a credential. It names where events are filed and grants no read access, which is why it is safe in the page source of every page you serve.
Custom events
An event is anything worth counting that is not a page view: a signup, a purchase, a button you are watching. Call it by name and it appears in the events report, and becomes something you can build a funnel step on.
visitwatch.track("signup_completed")A name and nothing else. Nothing about the person is attached to it, because there is no identity layer here to attach anything to.
Your one goal
Name an event or a path as the conversion in site settings and it becomes a column beside visits on every breakdown — sources, countries, devices, pages. One goal per site, deliberately: a page with six conversion rates on it is a page nobody reads, while a single rate carried across every table is one you can compare.
Hash paths
Off until you turn them on. With Track hash changes enabled, an in-page anchor counts as its own pageview, which is what a router that navigates with # needs. Until then hash_fragment is listed as never collected on the settings screen, and it says so there rather than here.
Subdomains
The hostname a visit was served from is recorded with it, so one site can cover example.com, docs.example.com and a blog on a third subdomain. Sources has a Hostnames tab that splits them, and every other report adds them together.
Reporting timezone
Set per site, and it decides where a day begins. Every range, every trend line and every cohort is cut on that boundary rather than on the server’s, so a day means the same thing on every screen.
What you can see
The window, and the one before it
Nine windows, from today to all time. The window lives in the URL, so a link to what you are looking at is a link to what you are looking at. Comparison is not a switch you have to remember: the dotted line on every chart is the window before this one, and it moves when you change the range.
Breakdowns
Pages opens on top pages and switches to where visits began and where they ended. Sources switches between referrers as they arrived, the channels they group into, and which of your hostnames served the visit. Countries, devices and browsers are tabs on the same report. Each carries the conversion count beside the visit count, and opening a module takes it from four rows to the full list without leaving the page.
Funnels and retention
A funnel is built from the paths and events already arriving — no extra instrumentation. Each step shows how many reached it, what share that is, and the drop since the step before, with the worst one marked; scope the breakdown to one step to see the devices, browsers and countries of the people who stopped there. Retention is a cohort per week and the curve of how many came back.
Exports
Every report exports to CSV, selected rows or all of them. There is no export tier and no request to make.
Privacy by default
No cookies, no banner
Nothing is written to the visitor’s device. No cookie, no localStorage, no fingerprint. Sessions are counted with a key derived from the request and rotated daily, so there is no consent banner to click away — nobody is asked to agree to something in order to be counted, because nothing was stored on them in the first place.
What an event carries
The path and title of the page, the referrer, any UTM parameters on the landing URL, the country and — where the request carries it — the region and city, the device, browser, operating system, screen size and browser language, and the time.
The full list is in your own settings, all eighteen fields, generated from the same definition the tracker is built from. It cannot drift from what actually happens, which is the only reason a list like that is worth printing.
What is never collected
No cookie. No user id, because there is no identity layer to attach one to. No cross-site identifier, so a visit ends at your domain. The IP address derives the daily key and is then discarded — it never reaches the database, and no coordinate is stored against anybody.