Reading the dashboard
What every tile counts, how a range is bounded, how filters narrow the whole page at once, and where the time zone applies.
A site opens on six tabs: Analytics, AI, Visitors, Goals, Funnels and Search. The Search tab is absent on a server with neither Google Search Console nor Bing configured, which leaves five. This page is about the first one, and about the vocabulary the rest of them borrow.
The range control in the header travels with you across all of them. The count of active filters beside it belongs to the Analytics tab alone, because no other tab has a filter model.
The tiles
| Tile | What it counts |
|---|---|
| People | How many people visited, counted once per day. Somebody who comes back on another day counts again. |
| Visits | How many separate times people arrived. A visit ends after 30 minutes with no new page. |
| Page views | How many pages were opened in total, including the same page more than once. |
| Time on site | How long an average visit lasts, from the first page to the last. |
| Left after one page | The share of visits where somebody opened one page and went no further. |
| Online | How many people have a page open right now. |
Every tile explains itself behind its question mark, in a little more detail than the table above, so the page can always tell you what a number means without you coming here.
Three of them deserve a paragraph.
People is a sum of daily uniques. Peeko has no cookie and no account to count with, so a person is a one way hash of their address and browser that is re-salted every day. Within one day that is enough to tell two people apart. Across two days it deliberately is not, which is the privacy property the whole product rests on. So a 30 day People number is not "how many different humans", it is the sum of each day's distinct people, and somebody who visits every week counts four times a month. It is the honest version of a number most analytics tools round off.
Time on site is measured between page views. The last page of a visit has no next timestamp, so a visit that opened one page contributes zero to the average. That is why it reads lower than you might expect on a site where people read one article and leave.
Left after one page is not automatically bad. An answer found on the first page looks exactly like a visitor who lost interest.
Once a site has recorded revenue, the Revenue tile joins the row and Left after one page steps out, so the row stays six wide.
Comparisons
Each tile compares its window against the equal window immediately before it, and the tile you have selected says "vs previous period" under the number. Counts move in percent, Time on site moves in minutes and seconds, and Left after one page moves in points.
Deltas disappear when there is nothing honest to compare against: the range is All time, or the
site recorded nothing before the previous window began, or that previous window held fewer than ten
people. The selected tile then says "Nothing to compare with yet" instead of showing a number that
means nothing. Revenue never carries a delta at all.
The chart
Select a tile and the chart draws it. A muted dashed line behind it is the same metric in the previous period. When the last bucket is still filling, the line finishes dotted and the legend adds a so far swatch, so a half finished day is never read as a collapse in traffic.
Hovering a bucket gives the numbers for that bucket, the new and returning split when you are looking at People, and the same day in the previous period.
Ranges
Today, Last 24 hours, Last 7 days, Last 30 days, Last 90 days and All time, plus Custom
range, which opens a two month calendar.
The presets are calendar days in the site's own time zone, except Last 24 hours, which is a rolling
day and means the same thing in any zone. Last 7 days means today and the six days before it, so its
last bucket is still filling.
A custom range is written into the address as ?range=2026-08-01..2026-08-31, both days included. It
can cover at most 731 days, two years and a day, and it cannot end in the future. A completed window
is compared against the same number of calendar days immediately before it.
The range travels with you: every link on the page keeps it, so moving between tabs or opening a visitor never silently changes the window you are reading.
The time zone, and the one place it does not reach
A site's time zone is set in its settings, and it decides where a day starts: the bucket boundaries,
their labels, and what Today means. The legend under the chart names the zone it drew.
Visitor counts still reset at UTC midnight, because that is when the daily hash rotates. On a site far from UTC, somebody who visits on both sides of your local midnight is counted twice on that day. Search Console and Bing days are the engines' own Pacific days, which is a third calendar again. These are stated on the surfaces that use them rather than hidden.
A site with no zone set uses UTC, and offers you your account's zone as a nudge above the dashboard. The nudge stays until you answer it, either way: taking the zone and keeping UTC are both answers, and there is no third state where it simply goes away.
Filters
Click a row in a breakdown and the whole page narrows to it: the tiles, the chart, every other card and the visit list. Click it again to remove it. A country on the map filters the same way. Thirteen dimensions can be filtered.
page · source · country · device · browser · browser_version · os · os_version ·
screen · viewport · utm_source · utm_medium · utm_campaign
Filters combine with and, one value each, and they live in the address, so a filtered view is a link you can send. Active filters appear as chips under the tiles, each with its own remove button, and a Clear all appears once there are two.
Two numbers are deliberately outside the filter model, and the page says so where it matters. Revenue is range scoped only, because a sale belongs to a whole journey rather than to the last page of it. Online now is a live snapshot of the site, not of the filtered slice.
The breakdown cards
Four cards, each with tabs.
- Pages: the pages people read, plus Entry and Exit pages, the Clicks Peeko recorded, a Broken tab of paths that returned 404, and a Revenue tab once money is attributed.
- Sources: Referrers, Campaigns from UTM tagged links, AI for people arriving from an assistant, Social, and Revenue. AI and Social are subsets of Referrers, never a reclassification, so everything in them is also in the main list. When a site is linked to Search Console or Bing, a search row sits above the list.
- Where people are: a world map, and the countries as a list. Country comes from an edge header, never from an address Peeko stored.
- Devices: Browser, OS, Device, Screen and Appearance, which is the share of page views in dark mode and in light.
Four lists are display only, because Peeko has no filter key behind them: Appearance, the screen size buckets, the Clicks list and the Revenue tabs. Every other row filters.
The percentages do not all share a denominator, on purpose. Pages, Referrers, Countries and Devices are a share of the window's page views. Entry and Exit are a share of visits, because that is the question those tabs answer. Broken pages are counted, not shared.
"Direct" means no external referrer was recorded, which covers a typed address, a bookmark, most
apps and anything that stripped the referrer on the way. A referrer that was recorded is stored as its
hostname alone, with www. removed, and never a full URL.
The Broken tab is an undercount and can be blind. The response status comes from the visitor's own browser, and only Chrome and Edge report one. An empty list is not a promise that nothing is broken, and the card says which of the two situations it is in.
See all opens the full list, up to a thousand rows, with a search box over what it fetched, and the footer tells you how many of how many you are looking at. It is an owner's control: a demo or a shared page prints "top 10" and offers no dialog.
People and visits
The Visitors tab holds two rosters, and it opens on visits.
- Visits is every visit in the range, newest first: who, where from, how many pages, how long, and the ordered trail of pages when you expand it.
- People groups those visits by a person, with their first and last visit, their countries and devices, and their journey across the range.
The name beside each one, something like "Cobalt Heron", is generated from the hash and is not an identity. The hash fragments when somebody changes network or browser, and it merges people who share an address and an identical browser. Peeko says the fragmenting half itself, in the detail pane beside a selected visit, along with the fact that the identity resets whenever the salt is rotated. The merging half is worth adding here: this is the resolution cookieless measurement has, and anything more precise on offer elsewhere is a cookie or a fingerprint.
The dashboard itself carries a Recent visits card. It shows ten at a time and pages through them in place, up to fifty pages, with a link to the full roster beside it.
Online now
The Online tile counts people with a page open right now, from a heartbeat their browser sends every 45 seconds while the tab is visible. Anybody whose last heartbeat is under two minutes old is online.
That is a different question from "who clicked recently", and the difference shows: somebody reading one long article for ten minutes is online and has opened nothing. Owners can open the tile to see what those people are reading; a share link can publish the count alone.
Your own visits
Open your site once with ?me=1 and that browser is tagged as yours, by a flag kept in the browser's
own storage. ?me=0 untags it. Tagged visits are badged You wherever visits are listed.
Count my own visits in the site's settings decides whether they count. Off, they are left out of every number on the dashboard and still shown, badged, in the visit lists, so you can see your own testing without it moving the numbers.
What is not on this page
Two reads that exist in the product have no dashboard card: time on page, per path, and the raw
engagement list behind it. They are on the command line as peeko engagement and over
MCP as get_engagement.