Documentation
The Nomada manual
Everything Nomada does, and how to use it — from your first pageview to widgets, public stats, alerts and the API.
Nomada is privacy-first, cookieless web analytics. You add one tiny script to your site, and your visitor data flows into a clean dashboard you can read in seconds — with no cookies, no consent banner and no personal data collected. This manual walks through every feature.
Quick start
You can be live in about a minute:
- Create a free account at https://nomada.xyz/app and click + Add site.
- Enter your domain, a display name and your timezone. (You can also make stats public now or later.)
- Copy the one-line snippet we generate and paste it into your site’s <head>.
- Open your site in a new tab — your first visit appears in the dashboard within seconds.
The tracking snippet
The snippet is a single deferred script. It’s served from neutral, first-party URLs (no “analytics” or “tracker” in the path) and sends its data to the same endpoint, so content blockers and ad-blockers leave it alone. Paste it once, just before the closing </head> tag, on every page you want measured:
<script defer data-cfasync="false"
data-site="YOUR_SITE_KEY"
data-api="https://nomada.xyz/nmd"
src="https://nomada.xyz/nmd"></script>
That’s the whole integration. The script weighs around 1.5 KB gzipped, loads without blocking, and sends one small request per pageview using a non-blocking beacon.
Install by platform
The snippet works anywhere you can add HTML to the <head>. Common setups:
WordPress
Add the snippet to your theme’s header (Appearance → Theme File Editor → header.php, before </head>), or use any “insert headers and footers” plugin and paste it into the header box. A dedicated Nomada WordPress plugin for one-click install is on the way.
React, Next.js & Vue
Drop the script into your root HTML head — for Next.js, the <head> in app/layout or pages/_document; for Vite/CRA, index.html. Client-side route changes are tracked automatically (see Single-page apps).
Shopify
Online Store → Themes → … → Edit code → layout/theme.liquid, and paste the snippet just before </head>.
Webflow, Framer & Ghost
Webflow: Project Settings → Custom Code → Head Code. Framer: Site Settings → General → Custom Code → End of <head>. Ghost: Settings → Code injection → Site Header. Paste and publish.
Plain HTML
Paste the snippet before </head> on every page, or in a shared header include so it appears site-wide.
Verify it works
- Open your site, then open the site in your Nomada dashboard — your visit should appear in Real-time within a few seconds.
- View source (or DevTools → Elements) and confirm the Nomada <script> is present in the <head>.
- In DevTools → Network, load a page and look for a request to /nmd returning 202.
Custom events & goals
Track signups, purchases, clicks — anything — by calling the global nomada() function. Any event you send becomes a goal in the dashboard.
nomada('Signup');
nomada('Purchase', { props: { plan: 'pro', amount: 29 } });
Pass props to break an event down — click the event in the dashboard to see a per-property breakdown (e.g. purchases by plan). You can call nomada() before the script has finished loading; calls are queued and sent once it’s ready.
Outbound links
Clicks on links that leave your site are tracked automatically — no markup needed. You’ll see them in the Outbound links report so you know which external links your visitors follow. To turn this off, add the data-no-outbound attribute to the snippet.
Single-page apps & hash routers
The tracker follows client-side navigation via the History API, so React, Vue, Next and similar apps record each route as its own pageview with no extra code. If your app routes with the URL hash (e.g. /#/pricing), add data-hash so hash changes count too:
<script defer data-site="YOUR_SITE_KEY" data-hash
src="https://nomada.xyz/nmd"></script>
Script attributes
| Attribute | Effect |
|---|---|
data-site | Required. Your 16-character site key. |
data-api | The ingest endpoint URL (included in your generated snippet). |
data-hash | Count URL hash changes as pageviews (for hash routers). |
data-no-outbound | Disable automatic outbound-link tracking. |
data-track-localhost | Also record visits on localhost (handy during development). |
Sites overview
The Sites tab lists every website on your account with its key numbers side by side — visitors, pageviews, views per visit, bounce rate and visit duration — plus a live “online now” count. Sort by visitors, pageviews or name, or drag rows into your own order. Pick a window (24h, 7 days, 30 days, 90 days or 12 months) and a sort metric at the top. Click any site to open its full dashboard.
A single site
Opening a site shows the full picture:
- Headline cards — unique visitors, pageviews, visits, views per visit, bounce rate and visit duration, each with its change versus the previous period.
- Trend chart — switch the metric and choose a line or bar style (Settings → Chart style).
- Breakdowns — Top pages (with entry & exit pages), Sources (referrers and UTM source/medium/campaign), Countries, Devices, Browsers, Operating systems, Screen sizes, Events and Outbound links.
Metrics explained
The relationship is almost always: pageviews ≥ visits ≥ unique visitors.
| Metric | What it counts |
|---|---|
| Unique visitors | Distinct people in the period, counted once no matter how often they return. Identified by a daily-rotating anonymous hash — never a cookie. |
| Total visits | Separate browsing sessions. A new visit begins after ~30 minutes of inactivity. Morning + evening = 1 visitor, 2 visits. |
| Total pageviews | Every page load, including refreshes and in-site navigation. One visit can produce many pageviews. |
| Views per visit | Average pageviews in a single visit — a quick read on engagement. |
| Bounce rate | Share of visits that were a single pageview — the visitor left without going further. |
| Visit duration | Average time between the first and last pageview of a visit. |
Example. One person reads 3 pages, leaves, returns that evening and reads 2 more: that’s 1 unique visitor, 2 visits, 5 pageviews.
Date ranges & comparisons
Switch between Today, Yesterday, 7 / 30 / 90 days, 12 months, or pick a Custom range. Every headline number shows its change versus the previous equal-length period, so you always have context.
Filter & segment
Click any row in a report — a page, source, country, browser or campaign — to filter the entire dashboard by it. Stack several filters to drill in, and click an active row again (or remove its chip) to clear it. It’s the fastest way to answer “where did my US mobile visitors land?”
Real-time
A live badge shows how many people are on the site right now; open it for a real-time breakdown of current pages and sources. It’s the quickest way to confirm tracking is live or watch a launch land.
Public web analytics
Share a clean, read-only stats page at a tidy link — great for clients, open startups or a public “stats” page. In the Share tab, flip a site to Public. Its public URL is:
https://nomada.xyz/app/your-domain
(That’s your domain without its extension — e.g. example.com becomes /app/example.) You decide exactly what’s visible: toggle whole sections (sources, countries, devices…) and even individual metric cards (like bounce rate or visit duration) on or off. Visitors only ever see what you choose, and there’s no personal data to expose.
Embeddable widgets
Put live stats on your own site. First make the site Public (above), then in the Share tab build a widget and copy its snippet. Load the widget script once, then drop in a tag per widget:
<script defer src="https://nomada.xyz/nmd-w"></script>
<div data-nomada-widget="online" data-site="YOUR_SITE_KEY"></div>
<div data-nomada-widget="counter" data-site="YOUR_SITE_KEY"
data-metric="visitors" data-period="30d"></div>
| Attribute | Values |
|---|---|
data-nomada-widget | online · counter · sparkline · trending · countries |
data-site | Your site key (the site must be public). |
data-metric | visitors · pageviews · visits |
data-period | today · 7d · 30d · 90d · 12mo |
data-theme | light · dark (defaults to match the page). |
data-accent | A hex colour to match your brand, e.g. #6366f1. |
Each widget is whole-clickable through to your public stats page, and the “online now” dot pulses live. Widgets are cookieless and only ever read public, aggregated numbers.
Embed the full dashboard
On a WordPress site you can embed a read-only copy of an entire public dashboard with a shortcode:
[nomada_embed site="YOUR_SITE_KEY"]
Alerts & email reports
The Alerts tab sends you an email when something needs attention. Notifications go to your account email. Per site you can enable:
- Tracking stopped — we email you once if a previously-live site suddenly goes silent (a sign the snippet was removed or a deploy dropped it). We go quiet again as soon as data resumes.
- Custom threshold alerts — get notified when a metric crosses a line — e.g. “Visitors drop below 50” or “Pageviews rise above 10,000”. Checked once daily against the previous day’s totals; at most one email per alert per day. Add up to ten per site.
- Weekly report — a Monday email summarising the last 7 days, with week-over-week change, your top page and top source.
Use “Send test email” on any site to confirm notifications reach your inbox.
Settings & themes
The Settings tab holds your personal preferences:
- Chart style — draw time-series as a line or as bars.
- Appearance — choose Light, Sepia, Dark or Neon. The theme is remembered on your device and applies across the dashboard and this site.
Exclude your own visits
Your own browsing can skew a low-traffic site. In Settings → “Exclude your own visits”, pick a site and click Exclude this device. It opens your site in a new tab and tags that browser cookielessly — you’ll see a confirmation there. Because it’s stored per device, repeat it on each browser or device you use. Click Re-enable to start counting yourself again.
Account & site settings
In the Account tab you can change your display name, email and password. To manage a single website, open its settings from the site dashboard:
- Rename it or change its timezone (the timezone sets how days are bucketed).
- Refresh the site icon if its favicon changed.
- Reset data wipes all collected stats but keeps the site and its snippet, so tracking continues from a clean slate.
- Delete site removes the website and all of its data permanently.
Import your history
Migrating from Google Analytics, Plausible or another tool? Nomada can backfill your long-term trend charts from a CSV of daily totals (date, visitors, pageviews). Export a daily report from your old tool and send it our way and we’ll import it for you — get in touch via Support.
Data retention
Raw event records can be automatically deleted after a chosen window, leaving only anonymous daily aggregates (totals by day, page, country, and so on). Your long-term trend charts keep working because they read from those aggregates — you keep the trends while the granular data is purged. We store as little as possible, for as short as possible.
Privacy & compliance
- No cookies and nothing stored on the visitor’s device — so no consent banner is needed for analytics.
- No IP addresses kept — an IP is used in memory to derive a coarse country, then dropped.
- Unique visitors are counted with a one-way hash and a salt that rotates every 24 hours, so yesterday’s visitors can’t be re-identified or linked across days.
- No personal data, no cross-site tracking, and nothing sold or shared with advertisers.
See the full Privacy & GDPR page for our data statement, lawful basis and DPA.
REST API
Build your own dashboards or exports against the read API, which returns aggregated JSON:
GET https://nomada.xyz/wp-json/nomada/v1/stats?site=SITE_KEY&period=7d&metric=visitors
Public sites can be read without authentication; private sites require you to be signed in. Parameters include period (today · 7d · 30d · 90d · 12mo · custom with from/to), metric, and filters.
Troubleshooting
I don’t see any data
Confirm the snippet is in the <head> and loads (Network tab → a request to /nmd returning 202). Remember localhost is skipped by default, and you may have excluded your own device. A privacy extension on your own browser can also block the request — test in a private window.
Do I really not need a cookie banner?
Correct, for Nomada’s analytics: it stores nothing on the device and collects no personal data, so there’s nothing to consent to. If other tools on your site set cookies, you may still need a banner for those.
Will it slow my site down?
No. The script is around 1.5 KB gzipped, loads deferred, and sends a non-blocking beacon. The impact is effectively zero.
My single-page app isn’t recording route changes
History-API navigation is tracked automatically. If you route with the URL hash, add data-hash to the snippet (see Single-page apps).
Get help
Still stuck or have a question this manual didn’t answer? Head to Support and send us a message — we’re happy to help.