# Web Analytics: Overview

Web Analytics shows how people find and use your site: visitors, page views, traffic sources, pages, countries, devices and events. The data comes from your own Web Analytics script, so it stays yours.

## What Web Analytics does [#what-web-analytics-does]

Web Analytics counts the visits to your site and shows them in eleven pages under **Web Analytics** in the sidebar. The script sends each page view and each event to VitalSentinel. VitalSentinel then groups the data by source, page, country, device and event.

Web Analytics is privacy-first. By default, the script sets no cookies and stores nothing on the visitor's device. The data is pseudonymous: VitalSentinel does not know who a visitor is. For the data that VitalSentinel keeps, see [Data privacy](/help/data-privacy).

To install the script, or to send custom events and shop events, see [Analytics script](/connect/analytics-script).

## The Web Analytics pages [#the-web-analytics-pages]

| Sidebar entry | What it shows |
|---|---|
| **Overview** | Visitors, page views, sources, pages, countries, devices and events |
| [Realtime](/web-analytics/realtime) | Who is on your site now, and if tracking works |
| [Audience](/web-analytics/audience) | Countries, browser languages and reader groups |
| [Acquisition](/web-analytics/acquisition) | Which campaigns and sites bring readers who stay |
| [Engagement](/web-analytics/engagement) | How far people read, where they tap in vain and why they leave |
| [Authors](/web-analytics/authors) | Reads and reading depth for each author |
| [Journeys & Funnels](/web-analytics/journeys-and-funnels) | Paths through the site, funnels, site search and clicks to other sites |
| [Conversions](/web-analytics/conversions) | Goals, and the sources and pages that bring conversions |
| [Ecommerce](/web-analytics/ecommerce) | Revenue, orders, where shoppers drop out and products |
| [Performance & Reliability](/web-analytics/performance-and-reliability) | If slow pages, outages or broken pages cost you visitors |
| [Trends & Anomalies](/web-analytics/trends-and-anomalies) | Traffic changes and pages that lose or gain readers |

## Before you start [#before-you-start]

- Install the Web Analytics script on your site. See [Analytics script](/connect/analytics-script).
- Verify the domain. VitalSentinel monitors nothing until the domain is verified. See [Verify ownership](/getting-started/domain-setup/verify-ownership).
- Open the domain, then select **Web Analytics** in the **Search & traffic** group of the sidebar.
- Workspace owners and admins can change goals, funnels, search themes and tracking settings. Members see the pages read-only.

For the sidebar, the filter dock and the page tours, see [Using the app](/getting-started/using-the-app).

## Storage mode [#storage-mode]

The Web Analytics **Storage mode** controls what the script saves on the visitor's device. The mode changes some numbers that Web Analytics shows. You select it in the domain settings, on the **Tracking** tab. See [Domain settings](/domain/settings) and [Analytics script](/connect/analytics-script).

| Storage mode | What the script saves | Consent |
|---|---|---|
| **None** (default) | Nothing: no cookies, no local storage, no session storage | **No consent banner needed for storage.** |
| **Session** | One entry in the browser's session storage. The browser clears it when the visitor closes it. Also device details such as screen size | **Requires visitor consent before you enable it.** |
| **Persistent** | A few entries in the browser's local storage, so you can recognize returning visitors. Also device details such as screen size | **Requires visitor consent before you enable it.** |

Do Not Track and Global Privacy Control signals win over the storage mode in your snippet. The script counts these visitors without any storage, until the visitor accepts your consent banner and the banner calls `grantConsent()`.

### What the None mode changes in Web Analytics [#what-the-none-mode-changes-in-web-analytics]

- **Visitors** counts people fresh each day. The same person on two days counts two times, so over a long range **Visitors** comes close to **Visits**.
- VitalSentinel cannot tell a first visit from a repeat visit, or remember which campaign first brought a visitor.
- Journeys are approximate, because VitalSentinel cannot connect the pages of one person across days.
- **Screen sizes** shows only visitors who gave consent. Only the **Persistent** mode collects screen size.

## Plans and event limits [#plans-and-event-limits]

Each page view and each other action that the script records counts as one Web Analytics event. Each plan includes a monthly number of events.

| Plan | Web Analytics events per month |
|---|---|
| Free | 100K |
| Starter | 500K |
| Lite | 5M |
| Standard | 25M |
| Advanced | 50M |

If a domain reaches the monthly limit, a banner on the Web Analytics pages says **Web Analytics has reached this month's limit**. The data collected so far stays. New data is not stored until the limit resets.

Users who manage billing can click **Compare plans**. Admins without billing access can click **Ask your workspace owner** to copy a message for the owner. How far back you can select dates also depends on your plan. See [Plans and limits](/workspace/plans-and-limits).

## When the data updates [#when-the-data-updates]

Web Analytics numbers appear within minutes of the first visit. The **Realtime** page updates every 10 seconds.

The **Audience**, **Acquisition**, **Engagement**, **Journeys & Funnels**, **Performance & Reliability** and **Trends & Anomalies** pages show reports that VitalSentinel calculates in advance. These pages have no refresh button, because the reports update automatically. If you select other dates or add filters, the report calculates when you open the page. If a report takes longer, the card shows **Still computing – heavier reports (statistical models, clustering) can take longer.**

The default date range is **Last 28 days**. It ends yesterday, because today is still counting. If you select a range that includes today, the newest point on a chart shows **Today so far**.

## The Overview page [#the-overview-page]

The Web Analytics **Overview** page shows your traffic for the dates in the filter dock. From top to bottom, it shows these parts:

1. The live visitor count and the summary sentence.
2. The trend card with six figures and a chart.
3. **Where visitors come from**.
4. **Most read pages**.
5. **Visitors by country and language**.
6. **Devices**.
7. **Events**.
8. **Device breakdown**.
9. **Tracking gaps**, only if a part of your site has a gap.

To filter the whole page, click a row in any table. For example, click a country to see only its visitors. You cannot filter by **Unknown** or **Direct**.

### Live visitor count [#live-visitor-count]

The Web Analytics **Overview** header shows a button such as **3 visitors online now**. It counts the visitors of the last 5 minutes. Click it to open [Realtime](/web-analytics/realtime).

### Summary sentence [#summary-sentence]

When the comparison is on in the filter dock, the Overview shows one sentence about visits. Examples: **Visits are up 12% on the previous 28 days**, **Visits are down 8% on the same period last year** or **Visits are about the same as the previous 28 days**.

The sentence is green when visits are up, the same or down less than 10%. It turns orange when visits fall 10% or more, and red when they fall 30% or more. If the range includes today, the sentence adds **Today is still counting, so the newest numbers may rise.** If the comparison period has too few visits, no sentence shows.

### Issues banner and Insights feed [#issues-banner-and-insights-feed]

If Web Analytics data found problems, a banner such as **2 open issues from Web Analytics** shows. Click it to see the issues in [Site Health](/site-health/overview).

The Insights feed under the banner shows a setup prompt when Google Search Console is not connected: **Google Search Console is not connected yet**. Without it, Web Analytics cannot show which Google searches bring readers who stay. Click **Connect Google Search Console**. The first data arrives within 24 hours. See [Search Console](/connect/search-console).

## Trend card [#trend-card]

The Web Analytics trend card shows six figures above one chart. Click a figure to plot it. You can plot one or two figures. The second figure uses the axis on the right.

| Figure | What it means |
|---|---|
| **Page views** | How many pages were opened, repeat views included |
| **Visitors** | People counted once per day |
| **Visits** | One stretch of browsing. A visit ends after 30 minutes without activity |
| **Views per visit** | The average number of pages opened per visit |
| **Bounce rate** | Visits that ended after one page |
| **Time per visit** | The average length of a visit |

With the comparison on, each figure shows the change and the old value, such as **vs 1,204**. If the comparison period has no data, the figure shows **No data in the comparison period**. A figure that VitalSentinel could not measure shows **Not measured for this period**.

Use the control above the chart to show the data by hour, day, week or month. The choices depend on the length of the range.

### Marks on the trend chart [#marks-on-the-trend-chart]

The Web Analytics trend chart can show these marks:

- **Today so far**: the last point is today, which is still counting.
- A data note: a day when the meaning of a figure changed, or a period with known wrong data. Hover the chart to read the note.
- Amber pins: problems that VitalSentinel found on your pages. The legend shows a button such as **2 problems found on your pages in this period**. Click it to see each problem.

If the range has no data, the chart shows **No data available for the selected period**.

If you filter by a page, a note says: **Channels, countries and devices count every page view of the visits that viewed the page. They can add up to more than the page views above.**

## Where visitors come from [#where-visitors-come-from]

The Web Analytics card **Where visitors come from** shows how visits reached your site. It has four tabs.

| Tab | Columns |
|---|---|
| **Channels** | **Channel**, **Share**, **Views**, **Visitors**, **Bounce rate** |
| **Sources** | **Source**, **Medium**, **Campaign**, **Views**, **Visitors**, **Bounce rate** |
| **Referrers** | **Referrer**, **Visits**, **Visitors**, **Bounce rate** |
| **Campaigns** | **Campaign**, **Source**, **Medium**, **Views**, **Visitors**, **Bounce rate** |

Examples of channels are **Direct**, **Search**, **Social**, **Referral**, **Email**, **Paid search** and **AI search**. An **AI** chip marks a source that is an AI assistant or an AI search tool.

**Source** is the site or app that sent the visit (`utm_source`, or the linking website). **Medium** is the kind of link (`utm_medium`). **Campaign** is the campaign tag (`utm_campaign`). The **?** next to the title shows the biggest channel and its bounce rate against the whole site.

## Most read pages [#most-read-pages]

The Web Analytics card **Most read pages** lists your pages. It has three tabs.

| Tab | Columns |
|---|---|
| **All pages** | **Page**, **Views**, **Visitors**, **Entries**, **Exits**, **Bounce rate** |
| **Entry pages** | **Page**, **Entries**, **Visitors**, **Views** |
| **Exit pages** | **Page**, **Exits**, **Visitors**, **Views** |

**Entries** counts the visits that started on the page. **Exits** counts the visits that ended on the page. **Bounce rate** is the share of visits that started on the page and left after that page only.

A **Hub page** chip marks a page where readers start and come back, such as the home page. Short visits on a hub page are normal. [Journeys & Funnels](/web-analytics/journeys-and-funnels) shows how readers move through it.

## Visitors by country and language [#visitors-by-country-and-language]

The Web Analytics card **Visitors by country and language** has three tabs: **Countries**, **Continents** and **Languages**. Each tab shows **Share**, **Views**, **Visitors**, **Visits** and **Bounce rate**.

**Languages** shows the language of the visitor's browser. This is not always the country where the visitor lives. For a full language check, open [Audience](/web-analytics/audience).

## Devices [#devices]

The Web Analytics card **Devices** shows the kind of device: **Phone** or **Desktop**. Its columns are **Device type**, **Share**, **Visitors**, **Views**, **Visits** and **Bounce rate**.

Lower on the page, the card **Device breakdown** has the tabs **Browsers**, **Browser versions**, **OS**, **OS versions** and **Screen sizes**. **Screen sizes** shows the **Resolution** in pixels. It counts only visitors who gave consent.

## Events [#events]

The Web Analytics card **Events** shows what visitors do on your pages. It has five tabs.

| Tab | Name column | Count column |
|---|---|---|
| **All events** | **Event** | **Count** |
| **Custom events** | **Event name** | **Count** |
| **Outbound links** | **Link** | **Clicks** |
| **Downloads** | **File** | **Downloads** |
| **Site search** | **Search query** | **Searches** |

Each tab also shows **Visitors**. All tabs except **Site search** show **Conversion rate**: of the people who visited the pages where the event happened, the share who did it. If a rate cannot be measured, the cell shows **Not measurable**.

Use **Custom events** to check that a new button or form sends its event. To send custom events, see [Analytics script](/connect/analytics-script).

## Tracking gaps [#tracking-gaps]

The Web Analytics card **Tracking gaps** shows parts of your site where analytics records far fewer visits than before. It needs [RUM Monitoring](/rum-monitoring/overview), because VitalSentinel compares the page loads that RUM counts with the page views that Web Analytics records. If no part of the site has a gap, the card does not show.

| Column | What it shows |
|---|---|
| **Section** | A part of your site, or the purchase event |
| **Recorded, 28 days** | The share of RUM page loads that Web Analytics recorded, each day |
| **Recorded now** | How far below usual the share is now, such as **40% below usual** |
| **Started** | The first day of the gap. A **Stopped** chip shows if tracking stopped |
| **Missing** | About how many page views or orders analytics missed |

If Page Monitoring saw a change near the start of the gap, the card shows it as **Possibly related, not proven**. The card ignores the dock filters and says **This filter doesn't apply to this card.**

## Troubleshooting [#troubleshooting]

### Why does Web Analytics show no data? [#why-does-web-analytics-show-no-data]

If the domain is not verified, VitalSentinel does not monitor it. Verify the domain first. See [Verify ownership](/getting-started/domain-setup/verify-ownership).

If the page says **Install Web Analytics to see who visits your site**, the script is not on your site. Install it. See [Analytics script](/connect/analytics-script).

If the page says **A script is on your site, but it carries a different tracking ID**, replace the script with the snippet for this domain.

If you added the script with Google Tag Manager, publish the container. The install check cannot see scripts that Google Tag Manager adds.

### Why does Web Analytics say "Waiting for the first data"? [#why-does-web-analytics-say-waiting-for-the-first-data]

The script is on your site, but no visit arrived yet. Numbers appear within minutes of a visit. Open your site in a browser and load a page.

### Why does Web Analytics say "No new data from" my domain? [#why-does-web-analytics-say-no-new-data-from-my-domain]

Web Analytics received data before, but nothing new arrived recently. The script may have been removed in a deploy, or the site had no visitors. Check that the script is still on your pages. If it is missing, click **Reinstall the script**. Your history is kept.

### Why does the Overview say "No visits in this range"? [#why-does-the-overview-say-no-visits-in-this-range]

If the Overview shows **No visits in this range**, the script works but no visits arrived in the dates you selected. Select a longer date range in the filter dock.

### Why is Visitors almost the same as Visits? [#why-is-visitors-almost-the-same-as-visits]

In the default mode, the script sets no cookies. Web Analytics counts a person once per day, so a person on two days counts two times. Over a long range, **Visitors** comes close to **Visits**.

### Why are today's numbers low? [#why-are-todays-numbers-low]

Today is still counting. The point for today shows **Today so far** and grows during the day. The default range ends yesterday for this reason.

### Why do channels add up to more than the page views? [#why-do-channels-add-up-to-more-than-the-page-views]

If you filter by a page, the channel, country and device tables count every page view of the visits that viewed that page. These tables can add up to more than the page views in the trend card.

## Related [#related]

- [Analytics script](/connect/analytics-script) - install the script and send custom events
- [Realtime](/web-analytics/realtime) - see who is on your site now
- [Acquisition](/web-analytics/acquisition) - see which sources bring readers who stay
- [Trends & Anomalies](/web-analytics/trends-and-anomalies) - see the days when your traffic jumped or dropped
- [Using the app](/getting-started/using-the-app) - the filter dock, tours and module states
- [Billing](/workspace/billing) - plans and event limits
