Skip to content

Filters & dimensions

Filters are query-string parameters. The dashboard writes them when you click something; the API accepts exactly the same names. Every navigation keeps the range and the other active filters, so drilling in never loses context.

Key Chip label Selects
path Page Events on this exact pathname
query Query Events whose surviving query string matches exactly
title Title Events with this document.title
hostname Host Events on this hostname
entryPath Entry page Events whose visit started on this page
exitPath Exit page Events whose visit ended on this page
referrer Referrer Referrer domain. The literal Direct / none selects “no referrer”
utmSource UTM source utm_source, or the ref/source/via fallback
utmMedium UTM medium utm_medium
utmCampaign Campaign utm_campaign
utmTerm UTM term utm_term
utmContent UTM content utm_content
country Country ISO-3166 alpha-2 code, e.g. DE
region Region First subdivision, English name
city City English city name
language Language navigator.language as sent, e.g. en-GB
browser Browser Parsed browser name
os OS Parsed operating system
device Device desktop, mobile, tablet, bot or unknown
screen Screen A bucket label, not a resolution — see below
event Event Visitors who fired this named event
propKey Property Events carrying this property key
propValue Property value Narrows propKey to one value
traitKey Trait Visitors who have this identify trait
traitValue Trait value Narrows traitKey to one value
goal Converted Visitors who converted this goal inside the range

Parsing rules: a repeated parameter takes the first value, values are trimmed, and an empty value is dropped. Unknown parameters are ignored.

/dashboard/<siteId>?range=7d&country=DE&device=mobile&path=/pricing

Every filter is an AND. There is no OR, no negation and no multi-select; one value per key.

Filters are applied at the event level. Session-level metrics — bounce rate, average visit, views per visit — are then computed over the sessions those events belong to. That is what keeps “bounce rate for /pricing” meaningful: it is the bounce rate of the visits that touched /pricing, not a number about /pricing alone.

Three keys behave differently, on purpose:

  • entryPath / exitPath are read off the session row, so they select visits rather than events.
  • propKey / propValue are an EXISTS over the flattened property table, so an event with three matching properties is still counted once.
  • traitKey / traitValue are an EXISTS over the visitor’s traits, so the filter keeps everything that visitor did, not just the hits that carried the trait.

goal=<goal name> is the one filter that changes the meaning of the whole screen. It keeps only visitors who converted that goal inside the current range, so every other number then reads “…for people who converted”.

It is matched by name against your goals, and the match follows the goal’s own definition:

  • An event goal matches events of type custom, outbound or revenue whose name equals the goal’s event name.
  • A path goal matches pageviews whose path matches the pattern, with * as the only wildcard.

The Sessions screen links into it — “See visitors who converted” on a goal detail page opens /dashboard/<siteId>/sessions?goal=<name>.

Raw resolutions are not reported. screen is one of six labels, and the filter value is the label verbatim:

Label Width
XS (< 576px) under 576
SM (576-767px) 576–767
MD (768-991px) 768–991
LG (992-1199px) 992–1199
XL (1200-1599px) 1200–1599
XXL (1600px+) 1600 and up

A dimension is something you can group by. Twenty-one of them, and each one maps to the filter key of the same name — which is why clicking a row in a breakdown filters everything.

path entryPath exitPath title hostname query referrer
utmSource utmMedium utmCampaign utmTerm utmContent
country region city language browser os device screen event

Two have special columns:

  • referrer groups on the referrer domain, with Direct / none standing in for null. Filtering by that exact string selects the null rows.
  • event only ever groups over custom and outbound events; plain pageviews have no name and never appear.

Rows whose value is null are dropped, so a dimension never shows an empty label. entryPath and exitPath are counted once per session; every other dimension reports unique visitors as the ranked value, with the raw event count alongside.

Every breakdown row is a link. It sets that dimension’s filter to the row’s name and keeps everything else — range, other filters, and the page you are on.

  • The on a chip removes that one filter.
  • Clear all appears with two or more chips and removes all 26 keys.
  • Screens with their own paging (page) and selection (session, step) reset those when a filter changes, so you never land on page 9 of a four-row list.

A dashboard filter describes visits. A revenue event belongs to the visit it fired in, so on the Revenue screen a filter keeps the revenue events whose visit matches, using exactly the definition the visitor count beside them uses. A country filter narrows the money and the visitors together, and revenue per visitor stays a real ratio.

Every key on this page works as a query parameter on /api/v1/sites/:id/stats, /series, /breakdown and /events, and on the CSV export. See the filter parameter reference.

Terminal window
curl -s -H "Authorization: Bearer tk_live_…" \
"https://tracing.tools/api/v1/sites/pk_live_xxxxxxxx/stats?range=30d&country=DE&device=mobile"