Skip to main content
Staminads collects data into two tables, each with its own set of metrics and dimensions.

Sessions

Session-level aggregated data. One row per visitor session. Use for traffic analysis, channel comparison, and engagement metrics.

Pages

Per-page view data with duration tracking. One row per page viewed. Use for content performance and exit analysis.

Metrics

Session Metrics

MetricDescriptionExample
sessionsTotal number of sessions1,234
median_durationMedian session duration in seconds (TimeScore)38.0
avg_durationAverage session duration in seconds45.3
bounce_ratePercentage of sessions under bounce threshold34.56%
pageviewsTotal pageviews across all sessions3,456
pages_per_sessionAverage pages viewed per session2.81
median_scrollMedian max scroll depth percentage72.0%
max_scrollAverage max scroll depth percentage67.2%
median_page_durationSession-weighted median time on page (seconds)23.0
The primary engagement metric in Staminads. Represents the median time users spend actively engaged in a session.Why median? Medians are resistant to outliers. A single visitor leaving a tab open for hours won’t skew your data.Example: If sessions have durations [10, 20, 30, 120, 300], the median is 30s (not 96s average).
Sessions shorter than the bounce threshold (default: 10 seconds) are considered “bounces.”The threshold is configurable in workspace settings. Lower bounce rate is generally better.
Session-weighted: Each session contributes equally regardless of page count.Useful for comparing engagement quality across traffic sources. Different from page_duration (pages table) which is page-weighted.

Page Metrics

MetricDescriptionExample
page_countTotal page views5,678
unique_pagesNumber of unique page paths42
page_durationMedian time on page in seconds28.0
page_scrollMedian scroll depth percentage65.0%
landing_page_countNumber of landing page views1,234
exit_page_countNumber of exit page views1,234
exit_ratePercentage of views that are exits45.67%
Exit rate context matters:
  • High exit rate on checkout page = problem
  • High exit rate on “thank you” page = expected

Dimensions

Traffic Source

DimensionDescriptionExample Values
referrerFull referrer URLhttps://google.com/search?q=...
referrer_domainReferrer domain onlygoogle.com, facebook.com
referrer_pathReferrer URL path/search, /posts/123
is_directWhether traffic is direct (no referrer)true, false

UTM Parameters

DimensionDescriptionExample Values
utm_sourceTraffic sourcegoogle, newsletter, facebook
utm_mediumMarketing mediumcpc, email, social, organic
utm_campaignCampaign namesummer_sale, product_launch
utm_termPaid search keywordsrunning shoes, analytics tool
utm_contentAd content identifierbanner_v1, text_link
utm_idAd network click ID valueCj0KCAiAxea5..., fb.1.123...
utm_id_fromOrigin of the click IDgclid, gbraid, wbraid, fbclid, msclkid
utm_id_from is useful for identifying paid traffic from specific ad networks. See Traffic Categorization for the full list of supported click IDs.

Channel

Channels are set via Traffic Categorization filters.
DimensionDescriptionExample Values
channelTraffic channelOrganic Search, Paid Search, Direct
channel_groupChannel groupingSearch, Social, Referral, Direct
Common channel values:
  • Direct — No referrer, typed URL
  • Organic Search — Google, Bing, etc. without ads
  • Paid Search — Google Ads, Bing Ads
  • Social — Facebook, Twitter, LinkedIn, etc.
  • Referral — Links from other websites
  • Email — Email campaigns
  • Display — Display advertising

Landing & Exit Pages

DimensionDescriptionExample Values
landing_pageFull landing page URLhttps://example.com/products
landing_domainLanding page domainexample.com
landing_pathLanding page path/, /products, /blog/post-1
exit_pathLast page path in session/checkout, /thank-you

Page (Pages Table)

DimensionDescriptionExample Values
page_pathPage URL path/, /products, /about
is_landing_pageWhether this was the entry pagetrue, false
is_exit_pageWhether this was the exit pagetrue, false
page_entry_typeHow user arrived at pagelanding, navigation

Device

DimensionDescriptionExample Values
deviceDevice categorydesktop, mobile, tablet
browserBrowser nameChrome, Safari, Firefox, Edge
browser_typeBrowser engine typechromium, webkit, gecko
osOperating systemWindows, macOS, iOS, Android, Linux
screen_widthScreen width in pixels1920, 1440, 375
screen_heightScreen height in pixels1080, 900, 812
viewport_widthBrowser viewport width1920, 1200, 375
viewport_heightBrowser viewport height969, 800, 667
connection_typeNetwork connection type4g, 3g, wifi, slow-2g

Geographic

DimensionDescriptionExample Values
countryCountry code (ISO 3166-1 alpha-2)US, GB, FR, DE, JP
regionRegion/stateCalifornia, England, Île-de-France
cityCity nameSan Francisco, London, Paris
latitudeLatitude coordinate37.7749, 51.5074
longitudeLongitude coordinate-122.4194, -0.1278
languageBrowser languageen-US, fr-FR, de-DE, ja-JP
timezoneUser timezoneAmerica/Los_Angeles, Europe/London

Time

DimensionDescriptionExample Values
yearYear of session2024, 2025, 2026
monthMonth (1-12)1, 6, 12
dayDay of month (1-31)1, 15, 31
day_of_weekDay of week (1=Monday, 7=Sunday)1, 5, 7
week_numberISO week number (1-53)1, 26, 52
hourHour of day (0-23)0, 12, 23
is_weekendWhether session was on weekendtrue, false

Session

DimensionDescriptionExample Values
durationSession duration in seconds0, 30, 120, 600
pageview_countPages viewed in session1, 3, 10

Custom Dimensions

10 custom dimension slots are available for your own data. Set via filters or the SDK.
DimensionDescription
stm_1Custom dimension 1
stm_2Custom dimension 2
stm_3Custom dimension 3
stm_4Custom dimension 4
stm_5Custom dimension 5
stm_6Custom dimension 6
stm_7Custom dimension 7
stm_8Custom dimension 8
stm_9Custom dimension 9
stm_10Custom dimension 10
Setting via SDK:
staminads.setDimension(1, 'premium');      // stm_1 = 'premium'
staminads.setDimension(2, 'logged_in');    // stm_2 = 'logged_in'
Setting via Filters: See Traffic Categorization for rule-based dimension assignment.

Quick Reference

Which metric for which question?

QuestionMetricsTable
How many visitors?sessionssessions
How engaged are users?median_duration, median_scrollsessions
Are users bouncing?bounce_ratesessions
Which pages perform best?page_duration, page_scrollpages
Where do users exit?exit_rate, exit_page_countpages
Traffic source quality?median_page_duration, pages_per_sessionsessions
Content depth?pages_per_session, max_scrollsessions

Metrics We Don’t Support

Staminads is built on a fundamental principle: we won’t show you data we can’t measure accurately. Some metrics that other analytics tools display are technically impossible to track reliably in a cookieless, privacy-first world. Rather than showing you misleading numbers, we don’t include them at all.
Why we don’t support it: Counting unique users requires identifying the same person across multiple sessions. Without cookies or persistent identifiers, this is technically impossible.A person visiting from their phone, then their laptop, then their work computer appears as three separate visitors. There’s no privacy-respecting way to link these sessions.What to use instead: sessions — the number of sessions is accurate and meaningful. Focus on session quality (TimeScore) rather than trying to count people you can’t identify.
Why we don’t support it: Identifying returning visitors requires recognizing someone who visited before. Without cookies, we can’t know if a session is from a new or returning visitor.What to use instead: Focus on engagement metrics. A highly engaged session (high TimeScore) often indicates familiarity with your content, regardless of whether we can technically label it as “returning.”
Why we don’t support it: Return on Ad Spend requires tracking conversions back to the ad click that caused them. This is broken for multiple reasons:
  • Cross-device journeys — Someone clicks an ad on mobile, converts on desktop
  • Multi-touch attribution — Multiple channels contribute to a conversion
  • Cookie restrictions — Safari limits cookies to 7 days, adblockers delete them
  • Consent requirements — Users who decline tracking can’t be attributed
Your ROAS numbers in other tools are incomplete — they only count conversions they can track, which is a shrinking percentage of actual conversions.What to use instead: TimeScore and engagement metrics. Measure whether your ads bring engaged visitors. Engagement is measurable on every session, not just the ones that happen to convert within a trackable window.
This isn’t a limitation of Staminads — it’s a limitation of the modern web. Any tool claiming to accurately count unique users or attribute conversions without cookies is either using fingerprinting (privacy-invasive) or showing you incomplete data. We choose transparency over false precision.