What it is
Visits to your website, counted without cookies.
Page views, visitors and visits, where they came from (Google, an ad, Facebook, a newsletter…), where they are and on what network, what they use, how long they read each page, which links they click, and events you send yourself — for website projects, in Site → Analytics. Each visitor has their own page with every visit, page by page. One line of HTML on your site starts it.
Adding the tracker
Put this on every page of your site, in the head or before the end of the body.
<script src="https://mint-c5e1255519fc.herokuapp.com/public/track.js" data-key="<project key>" defer></script>- Replace
<project>with your project’s public name — or copy the snippet, filled in, from the Public API page. - Single-page sites (React, Next.js, Vue…) are handled: a page view is counted on every route change, not only on load.
- Events are sent in small batches in the background, so they don’t slow your pages.
Your domains
List your site’s domains on the project (Projects → ⋯ → Edit). Then only visits from them — and their subdomains — count, so nobody can fill your reports by copying the snippet elsewhere. example.com covers www.example.com and shop.example.com. With no domains listed, visits from any site count.
The Analytics page
Three tabs — Overview, Visitors and Live. Choose today, the last 7, 30 or 90 days, or 12 months.
- Overview: six numbers, each against the same length of time just before — page views, visitors, visits, pages per visit, average visit and bounce rate — and page views per day.
- Where visits come from: channels, sources, campaigns and referring sites.
- Pages: top pages with the average time on each, landing pages (where visits start), clicks and events.
- Where visitors are: countries, cities, internet providers and languages.
- What they use: devices, device models, browsers, operating systems and screen sizes.
- Visitors: everyone seen in the period — see below.
- Live: who is on the site right now.
Seeing it needs Records: View in your role (owners and admins always can). It counts only this project’s site.
What the numbers mean
| Number | Is |
|---|---|
| Page views | Every page shown — a visitor reading three pages is three. |
| Visitors | Different browsers. One person on a phone and a laptop counts twice. |
| Visits | Browsing sessions; a visit ends when its tab is closed. |
| Pages per visit | Page views ÷ visits. |
| Average visit | How long a visit lasts, from the time each page was on screen. Visits from before this was measured are left out. |
| Bounce rate | Visits that saw one page and left. |
| Time on page | How long the page was on screen (a tab in the background doesn’t count), and how far down it was scrolled. |
Where visits come from
Each visit is sorted by its first page: the address it arrived at and the site it came from.
| Channel | When |
|---|---|
| Paid search | A Google Ads or Microsoft Ads click (gclid, msclkid in the address), or utm_medium=cpc from a search engine. |
| Paid social | A TikTok, LinkedIn, X, Snapchat or Pinterest ad click, or a Facebook/Instagram link with a paid utm_medium. |
| Organic search | From Google, Bing, DuckDuckGo, Yahoo, Yandex, Baidu, Ecosia, Brave, Naver — or ChatGPT and Perplexity. |
| Social | From Facebook, Instagram, X, LinkedIn, YouTube, TikTok, WhatsApp, Telegram, Reddit… |
| utm_medium=email, or a newsletter tool as utm_source. | |
| Referral | Any other site that linked to yours. |
| Direct | Typed, bookmarked, or from an app that doesn’t say where it came from. |
Facebook adds fbclid to every link people click there, ads or not — so a Facebook visit only counts as Paid social when its link also says so, e.g. ?utm_medium=paid. Add utm_campaign (and utm_source, utm_medium) to the links in your ads and emails to see each campaign.
Visitors
Analytics → Visitors lists everyone seen in the period, newest first.
- Who: their name and email when the site knows them (a signed-in customer, or named by your code — see “Knowing who a visitor is”); otherwise “Visitor” and a short id.
- Location and timezone, internet provider and IP address, device and browser, and how they first arrived.
- Search by name, email, IP, city or internet provider; filter by channel or to known people; sort by last seen, newest, most visits or most pages.
Click a row to open their journey.
A visitor’s journey
One visitor’s page: everything known about them, and every visit page by page.
- Who — name, email, whether they’re signed in, first and last seen, visits and pages.
- Where — IP address, internet provider and network, place (with a map), timezone.
- On what — device and model, browser and system, screen size, language.
- How they first arrived — channel and source, the page that sent them, the landing page, the campaign and any ad click.
- Journey — every visit, newest first: its source, length and pages, then each step in order with its time — a page with how long it was read and how far down, a click, an event and its details.
Live
Analytics → Live shows anyone who did something on the site in the last five minutes, the page they’re on, where they are and where they came from. It updates every 15 seconds; click someone to open their journey.
Clicks and events
Links to other sites are counted as clicks automatically. To count a click on anything else, name it:
<button data-track="book-now">Book now</button>For things that aren’t clicks — a form sent, a video finished — send an event from your code:
MintAnalytics.track('signup', { plan: 'pro', yearly: true });
// a page view by hand, for routers the tracker doesn’t see:
MintAnalytics.pageview();Event properties are a flat object of up to 20 short text, number or yes/no values. Visits arriving with utm_source, utm_medium and utm_campaign in the address are recorded with them.
Knowing who a visitor is
Visitors show by name when your site knows them.
- Customers who sign in through MINT’s site widgets (mint.js) are recognised on their own — the tracker sends their sign-in, which is checked on the server.
- With your own sign-in, tell the tracker after someone signs in, and forget them when they sign out:
MintAnalytics.identify('user-123', { name: 'Nadia Rahman', email: 'nadia@example.com' });
// when they sign out:
MintAnalytics.reset();Their earlier visits on that browser join up with the name, so you see what they did before signing in too.
Privacy
- No cookies. A random visitor id is kept in the browser’s local storage, and a visit id that ends with the tab.
- Each visitor’s IP address is kept and shown on Visitors. In Site setup → Tracking → Visitor IP addresses you can keep only its first part (
203.0.113.0) or not keep it at all — the place and internet provider are still found either way. - Names and emails are only those your site gives: a signed-in customer, or MintAnalytics.identify.
- Visitors with “Do Not Track” on aren’t counted, and search-engine bots are left out.
- Add
data-no-trackto the script tag to switch it off — on a staging site, say.
Troubleshooting
| Symptom | Why, and what to do |
|---|---|
| “No visits recorded yet” | Check the snippet is on the pages and its data-key is the project key from API → Keys. |
| My own visits don’t show | Your domain isn’t in the project’s list, or your browser sends Do Not Track. |
| There’s no Analytics in the sidebar | The project is an app (analytics is for websites), or your role can’t read records. |
| Testing on localhost doesn’t count | localhost isn’t one of your domains. Test on the live site, or clear the domains while you test. |
| Numbers differ from another tool | Each tool counts its own way (bots, Do Not Track, ad blockers). Compare trends, not totals. |