Docs·Other
Definitions
Most disagreements about an analytics number turn out to be about what was counted. This page defines every unit, metric and filter in Spreelytics, with the formula the app uses to work each one out, so you can tell exactly what a number means and why it may differ from another tool's.
How tracking works
Every report in Spreelytics is built from three things: the visitor, the session and one stream of events.
The visitor id
When someone first arrives, the tracking script gives their browser a random visitor id, vid_
followed by a UUID, and stores it in a first-party cookie called spreelytics_vid. The cookie is
written again on every visit and lasts 365 days from the latest one, so a visitor who keeps coming
back keeps the same id. By default the cookie is set on your root domain, so www.example.com and
app.example.com share it. The script also keeps two small entries of its own in the browser:
spreelytics_visitor, which remembers when the visitor was first seen, and spreelytics_session_data,
which holds the current session.
On an audience using cookieless tracking, the browser stores nothing. Spreelytics works out an anonymous visitor id from each request instead, and that id only lasts one UTC day.
The session
A session is one visit. It starts with the first page a visitor opens and ends after 30 minutes
without activity, measured in the browser and on the server. Each session has its own id, sess_
followed by a UUID. The script keeps the session in the browser tab, so opening your site in a second
tab, or moving to another subdomain, starts a new session.
Where a visit came from is decided by its first page: the channel, source, referrer and UTM fields of that page apply to everything that happens in the visit.
One stream of events
Pageviews, custom events and the events the script sends on its own all land in one stream, each one tagged with its visitor and its session. Every page in the app is a view of that stream, which is why a filter set on the Overview carries over to Sessions, Events and Profiles and means the same thing on each.
Units
Visitor
One browser, known by one visitor id. Almost every headline number counts visitors. A visitor is not a person: the same human on a phone and a laptop is two visitors, and stays two visitors in visitor counts even after you identify them on both. On a cookieless audience, the same human across a week is up to seven visitors, one per day.
Session
One visit by one visitor. A visitor who comes back next week has one visitor id and two sessions. Entry page, exit page, channel, source, UTM fields and bounce all describe a session, not a person.
Person
Someone you have identified with Spreelytics.identify(). A person can own several
visitors, one for each browser you identified them in, and their history includes what those browsers
did before they were identified. Goal conversions count people: an identified person counts once
whichever devices they used, and an anonymous visitor counts as their own person.
Identified
A visitor linked to a person by identify(). Identified profiles are listed on the Identified tab
of Profiles, with a tick next to them.
Audience
One site or app you track. Each audience has its own client key, its own settings and its own data. People are kept per audience, so the same email address on two audiences is two separate profiles.
Workspace
A group of people who share access to a set of audiences, each with a role: Viewer, Editor or Admin. Billing and the monthly events allowance belong to the workspace. Some screens call it a team. See Members and roles.
Metrics
Every metric counts what happened inside the date range you picked. Visitor and session metrics count the sessions that started in the range. Event and revenue metrics count events by the time they happened.
Change from the previous period
Most numbers carry a badge with their change against the previous period: a range of the same length that ends where yours begins. The badge shows (current minus previous) divided by previous, as a percentage. It is green when the change is good and red when it is bad, so a falling Bounce rate is green. When the previous period was zero, or nothing changed, there is no badge.
For a rate, the badge is the change of the rate itself, not a difference in points: a bounce rate that moves from 40% to 50% shows a 25.0% rise, because 10 is a quarter of 40.
Visitors
The number of distinct visitor ids with at least one session that started in the range. Shown as Visitors on the Overview and Unique Visitors on the Pages page.
Sessions
The number of sessions that started in the range. It is a line on the Overview's Visitors chart, and the first number on the Sessions page.
Returning
A line on the Overview's Visitors chart: of the visitors in each interval, those whose very first session started before that interval. Their first session is looked up across all time, not only in the selected range.
Pageviews
The number of pageviews recorded in the range, shown as Pageviews on the Pages page. A pageview is recorded on every page load and every move to a new page in an app that changes pages without reloading. In the Pages table, Views is the same count for one page, and Sessions is the number of sessions that viewed it.
Bounce rate
The share of sessions that bounced: bounced sessions divided by all sessions, as a percentage. A session bounces when it has at most one pageview and no events. Custom events and link clicks count as events. The automatic scroll event does not. Time spent does not matter either: a visitor who reads one long article for ten minutes and sends no event is a bounce.
It appears as Bounce rate on the Overview and Bounce Rate on the Pages and Sessions pages. On the Entry pages tab of the Pages table, Bounce is the same share for the sessions that started on that page.
Session time
The average length of a session: the total duration of the sessions that started in the range, divided by the number of those sessions. Only time the page was visible counts, so a tab left in the background adds nothing. The script reports it whenever the visitor leaves or switches tabs, so a session still in progress counts as zero until it first reports. On a cookieless audience the browser keeps no running total, so a session's length is the time from its first page to its latest report.
It is called Session Time on the Overview, Avg. Duration on the Sessions page and Avg. Time on the Pages page. All three are the same number. On the Entry pages tab, Avg. session averages only the sessions that started on that page and have reported their time.
Time on page
The Duration column of the Pages table: the average time spent on that page. The time on a page is known once the visitor moves to another page, or leaves and reports their session. Views where no time could be measured are left out of the average.
Pages / Session
The average number of pageviews per session: the pageviews of the sessions that started in the range, divided by the number of those sessions. Shown on the Sessions page.
Conversion rate
On the Overview: the share of visitors who paid. People who made at least one payment above 0 in the range, divided by Visitors. A free trial's first invoice of 0 does not count, and refunds are not payments, so they never count as a conversion either.
On the Goals page each goal has its own Conversion rate: the people who completed that goal, divided by everyone who was active in the range. See Goals.
Revenue
The money from payments in the range, net of refunds, in the audience's reporting currency. Each payment is converted once, at the time it happens, so past revenue does not move when exchange rates do. Changing the reporting currency converts every past payment again. On the revenue chart, the tooltip also shows refunds on their own as Refunded. Revenue only comes from a connected payment provider or from your server. See Revenue.
Revenue/visitor
Revenue divided by Visitors, for the same range. Both numbers come from the same figures shown in their own cells, so the three always agree.
Cohort Retention
Two different things carry this name on the Overview.
The number in the strip is the share of the range's visitors who had visited before: returning visitors divided by Visitors, where returning means their first session started before the range.
Click it and the chart becomes a retention grid. Each row is a cohort: the identified people first seen in one day, week or month of the range. Each cell shows how many of them came back at least that many periods later, so a row can only fall from left to right. The % and # switch shows the cells as a share of the cohort or as a count. The grid only counts identified people, so it stays empty until you identify your users.
Online
The number of visitors whose session was active in the last 5 minutes, shown as Online on the Overview and as the N online chip on most pages. A session stays active while the visitor opens pages, sends events, or comes back to the tab. A tab left idle in the background drops out after five minutes.
Entrances
On the Entry pages tab of the Pages table: the number of sessions that started on that page.
Exit rate
On the Exit pages tab of the Pages table. Exits is the number of sessions whose last page was this one, counting sessions that have reported their end. Exit rate is exits divided by the page's Views, as a percentage. A high exit rate means many of the views of that page were the last page of a visit.
Filter dimensions
Filter narrows a page to the visits that match. Every dimension except Segment and Goal offers the operators is, is not, contains, does not contain, starts with, ends with, is set and is not set. Segment and Goal offer is and is not. Not every page applies every dimension. Where one does not apply, its pill turns grey with the note "Filter not active for this page".
Channel
The kind of traffic a visit came from, worked out from its source, its UTM medium and campaign, and any ad click id on its first page. The rules are checked in this order, and the first one that matches wins:
| Channel | When a visit gets it |
|---|---|
| Cross-network | The UTM medium is cross-network. |
The source or the UTM medium is email (or e-mail, e_mail, e mail), or the source is gmail. | |
| SMS | The source or the UTM medium is sms. |
| Mobile Push Notifications | The source is firebase, or the UTM medium is mobile or notification, or ends in push. |
| Affiliates | The UTM medium is affiliate. |
| Audio | The UTM medium is audio. |
| Display | The UTM medium is display, banner, expandable, interstitial or cpm. |
| AI | The source is an AI assistant: ChatGPT, Perplexity, Claude, Gemini, Copilot, Meta AI, You.com, Poe, Phind, Grok, DeepSeek or Le Chat. |
| Paid Search | A search engine source with a paid medium, a Google visit with a gclid or a Bing visit with an msclkid. |
| Paid Social | A social network source with a paid medium. |
| Paid Video | A video site source with a paid medium. |
| Paid Shopping | A shopping site source, or a campaign whose name contains "shop", with a paid medium. |
| Paid Other | Any other paid medium. |
| Organic Search | A search engine source, such as Google, Bing or DuckDuckGo, or the UTM medium organic. |
| Organic Social | A social network source, such as Facebook, LinkedIn or Reddit, or a social UTM medium such as social or sm. |
| Organic Video | A video site source, such as YouTube or Vimeo, or a UTM medium containing video. |
| Organic Shopping | A shopping site source, such as Amazon or eBay, or a campaign whose name contains "shop". |
| Referral | The UTM medium is referral, app or link, or the visit has any other source that matched nothing above. |
| Direct | No source and no UTM medium. |
A paid medium is one that contains cp (such as cpc), is ppc or retargeting, or starts with
paid. A source whose name contains a search engine, a social network or a video site and ends in
"ad" or "ads", such as google-ads or fb-ads, counts as paid even without a paid medium, and so does
the source adwords. These rules follow the channel definitions Plausible publishes.
Source
Where a visit came from, by name. If the first page's address carries a utm_source, source or
ref parameter, that is the source. Otherwise it is the referring site, named when Spreelytics knows
it (Google, Facebook, ChatGPT) and given as a bare hostname when it does not. Known names are given one
spelling, so ?utm_source=google and a visit referred by Google land on the same row. A visit from your
own site or one of its subdomains, or back from a payment page such as Stripe or PayPal, has no source.
URL
The referring address: the hostname and path of the page that linked to the visit, without its query string. On the Overview it is the URLs tab of the acquisition card.
UTM source, UTM medium, UTM campaign, UTM term and UTM content
The values of the utm_source, utm_medium, utm_campaign, utm_term and utm_content parameters
on the first page of a visit, exactly as they were written.
Browser
The browser named in the visitor's user agent, such as Chrome or Safari. Mobile and desktop versions of a browser share one name, because the device is its own dimension.
OS
The operating system named in the user agent, such as macOS, Windows, iOS or Android.
Device
Desktop, Mobile or Tablet, as detected from the request when it reaches Spreelytics.
Country, Region and City
Where the visit was made from, looked up from the visitor's IP address as the request arrives. The address itself is not stored with your data. A visitor using a VPN or a proxy appears where that service is.
Page
The path of a page, without its query string, its # fragment or a trailing slash, so
/pricing/?plan=pro is recorded as /pricing. An app that changes pages with # routes, such as
/#/settings, is recorded as one page.
Entry page
The first page of a visit.
Exit page
The last page of a visit, as reported when the visitor left or switched tabs.
Event
The name of a custom event. Event is narrows a page to the visits that included that event.
Segment
The people in a saved segment. Segment is keeps only its members, and is not keeps everyone else.
Goal
The people who completed a goal in the date range. Goal is keeps only them, and is not keeps everyone else.
Event kinds
Pageview
Sent when a page loads, and each time an app moves to a new page without reloading. A change to the
query string alone, or a jump to an #anchor, is not a new page.
Custom event
Sent by Spreelytics.track() or by a click on an element tagged with data-spree-track. Payments from a
payment provider or your server are custom events too, carrying an amount. See
Track events.
Link Click
Sent when a visitor clicks a link, if you turned on track_links or set up a link with trackLink.
It always has the name Link Click, with the properties href, text and id.
Scroll
Sent automatically when a visitor leaves a page or switches tabs, with how far down the page they got, from 0 to 100 percent. Nothing is sent when the page is too short to scroll or the visitor did not scroll. If they come back and scroll further, another follows with the higher value. Scroll goals count these. See Autocapture.
Session end
Sent automatically each time a visitor leaves or switches tabs, with the running totals of the visit: its duration, its pages and its events. It is how Spreelytics learns a session's length and its exit page.
Scroll, Link Click and session end events do not count toward your monthly events. Pageviews and custom events do. See Billing.
Reporting timezone
Each audience has one, set in Settings → Details → Reporting timezone: "Which hours count as a day here." It decides where each day starts in the report builder and in the report cards on your dashboards, shared dashboards included, so everyone reading a report sees the same days. A new audience starts with the timezone of the browser that created it.
The built-in pages, such as the Overview, Pages and Sessions, group their days in UTC, and their Today and Yesterday start at midnight on your own computer's clock. A day on those pages can therefore start at a different hour from the same day in a report.
Why numbers differ from other tools
When Spreelytics and another tool disagree, it is usually one of these:
- Bots are dropped before they are stored. Crawlers, automated browsers, tools such as curl and traffic from cloud servers never reach your numbers here. See Filter traffic.
- Some visitors block the script. Some ad blockers and privacy tools stop analytics scripts from loading. The Proxy guide covers sending the requests through your own domain.
- Visitors are browsers, not people. One person on two devices is two visitors. On a cookieless audience, one person across a week can be seven.
- Sessions are per tab and end after 30 minutes idle. A second tab starts a second session.
- Bounce means one page and no events. Tools that judge a bounce by time on page will report a different rate.
- Session time only counts time the page was visible. A tab left open in the background adds nothing, except on a cookieless audience, where a session runs from its first page to its last report.
- Days start at different hours. The built-in pages use UTC days, reports use the audience's reporting timezone, and another tool may use a timezone of its own.
- Revenue is net of refunds and converted to one reporting currency at the time of each payment.
- Sessions are counted by when they started. A visit that begins at 23:50 and runs past midnight belongs to the day it began.
Related
- Tracking script: put the script on your site so all of this starts.
- Identify users: turn visitors into people.
- Filter traffic: what is dropped before it is counted.
- Overview: where most of these numbers live.