Web analytics
analytics counts visits without cookies and without storing anything that
identifies a person.
Add a site
Link the alias to a site (one click in analytics or on the alias): pages puts the script into every HTML
page.
<script defer src="https://analytics.xvii.network/js/<site key>.js"></script>
Plausible-compatible trackers work too, with data-domain set to the site key.
Turn on counting for a web app: apps reports its requests (pages and API calls) on the server, with
crawlers and monitors dropped. No script, but no single-page navigations or goals either.
Pick one way per application. If a site and its API are both counted, the same visit shows twice.
Goals and custom events
xvii.track("signup", { plan: "team" })
The script also records single-page navigations, outbound links, file downloads and 404 pages, and
respects Do Not Track.
What is stored
A visitor is a hash of the day's salt (deleted the next day), the site, the address and the user agent.
Countries come from DB-IP's free database; device, browser and system from the user agent. Raw events
are kept 30 days by default; daily totals for good.
The dashboard
Visitors, page views, bounce rate, visit duration and visitors right now, by hour or day; top pages,
entry and exit pages, hosts, referrers, UTM parameters, countries, devices, browsers, systems and goals.
Clicking any row filters everything.
Share makes a public read-only dashboard at https://analytics.xvii.network/share/<token>, or under
your own name through domains.
Limits
analytics.sites, and analytics.events per month: past it, events are dropped quietly.