# Web analytics (/docs/web-analytics)

**Web analytics** answers the questions a marketing site or web app asks every day: how many visitors, from where, landing on which pages, on which devices, and how that compares to last period. It works as soon as the [browser SDK](/docs/getting-started/install#browser) is installed. There's nothing to set up.

## The page [#the-page]

- **Overview**: visitors, pageviews, sessions, views per session, bounce rate and session duration, each compared with the previous period of the same length.
- **Trend**: visitors and pageviews over time.
- **Pages**: top pages, entry pages and exit pages.
- **Sources**: channel, referrer, and UTM source, medium and campaign.
- **Devices**: device type, browser and OS.
- **Geography**: countries.

The default range is the last 7 days.

## What the numbers mean [#what-the-numbers-mean]

| Metric | Meaning |
| --- | --- |
| **Visitors** | Unique people. A visitor who later signs up isn't counted twice. |
| **Pageviews** | Pages viewed. |
| **Sessions** | Visits. A session ends after 30 minutes without activity. |
| **Views per session** | Pageviews ÷ sessions. |
| **Bounce rate** | Share of sessions with one pageview that lasted under 10 seconds. Someone who reads one article for two minutes isn't a bounce. |
| **Session duration** | Average time from the first to the last activity in a session, including time on the last page. |

Events sent from your server don't count as visits.

## Channels [#channels]

Each session gets one channel, based on where the visit came from. The first matching rule wins:

| Channel | When |
| --- | --- |
| **Paid** | `utm_medium` is `cpc`, `ppc`, `paid`, `paid_search`, `paid_social`, `display` or `cpm` (and similar spellings) |
| **Email** | `utm_medium` is `email` or `newsletter`, or `utm_source` is `email` or `newsletter` |
| **Social** | `utm_medium` is `social`, or the visitor came from a social site (X, Facebook, Instagram, LinkedIn, Reddit, YouTube, TikTok, Hacker News, Product Hunt, Threads, Bluesky, Discord, Pinterest, Mastodon) |
| **Organic search** | The visitor came from a search engine (Google, Bing, DuckDuckGo, Yahoo, Baidu, Yandex, Ecosia, Brave, Kagi) |
| **Affiliate** | `utm_medium` is `affiliate` |
| **Direct** | No referrer and no `utm_source` |
| **Referral** | Everything else |

UTM tags are checked first, so tag your campaigns. A Facebook ad tagged `utm_medium=paid_social` counts as **Paid**, not Social.

## Filter by clicking [#filter-by-clicking]

**Click any row to filter the whole page by it.** Click `/pricing` in Top pages to see only traffic to that page, then click *Germany* to narrow it to German visitors. Active filters show as chips under the header. Remove one with its ×.

- Clicking another row in the same table replaces that table's filter.
- **(none)** and **Direct** rows filter on "not set".
- Channel rows can't be clicked.

Country is detected automatically for browser visits. Events from your server have no country unless you send `$geoip_country_code`.

## Beyond web analytics [#beyond-web-analytics]

Web analytics is built for traffic. For anything else on the same pageviews, use [insights](/docs/product-analytics/insights): a funnel from landing page to sign-up, retention of visitors, or traffic broken down by plan. Agents can read web analytics too, for example *"Which sources brought the visitors who went on to buy?"*.
