# Web Analytics



VitalSentinel Web Analytics gives you privacy-focused insights into your website traffic. In its default storage mode the script stores nothing on the visitor's device, so it needs no consent banner for storage.

## Getting Started [#getting-started]

Web Analytics requires the Web Analytics script installed on your website:

```html
<script
  src="https://analytics.vitalsentinel.com/analytics.js"
  data-key="YOUR_TRACKING_ID"
  async
></script>
```

See [Web Analytics Script Installation](/installation/analytics-script) for full details.

## Dashboard Overview [#dashboard-overview]

Web Analytics is organized into several views inside the domain dashboard (**Domain** → **Analytics**):

* **Overview** - Aggregated traffic, sources, behavior, and device data for any time range.
* **[Realtime](#realtime-view)** - A live view of active visitors, current pages, recent activity, and where visitors are coming from right now.
* **[Audience](#audience)** - Visitor segments, geo/language checks, and visitor anomalies.
* **[Acquisition](#acquisition)** - Referrer quality, campaign efficiency, and the search-to-visit bridge.
* **[Engagement](#engagement)** - Scroll depth, rage clicks, bounce diagnosis, and the engagement quadrant.
* **[Journeys & Goals](#journeys--goals)** - User journeys, custom funnels, site-search insights, and outbound-click hubs.
* **[Ecommerce](#ecommerce-view)** - Revenue, orders, conversion funnel, and per-product performance (only populated when the analytics script detects a supported store).
* **[Ecommerce funnel](#ecommerce-funnel)** - A per-product breakdown of the shopping funnel.
* **[Performance & Reliability](#performance--reliability)** - How Core Web Vitals relate to conversion.
* **[Trends & Anomalies](#trends--anomalies)** - Page decay, traffic anomalies, and search clusters.
* **[Experiments](#experiments)** - Statistical before/after tests for site changes.

Every view can be filtered by date range, and most support period-over-period comparison.

### Key Metrics [#key-metrics]

The Overview's headline cards:

| Metric            | Description                      |
| ----------------- | -------------------------------- |
| Total views       | Total pages viewed               |
| Unique visitors   | Unique visitors in the period    |
| Total sessions    | Number of sessions               |
| Views per session | Average pages viewed per session |
| Bounce rate       | Single-page sessions             |
| Session duration  | Mean session length              |

<Callout type="info">
  Visitors whose browser sends a Do Not Track or Global Privacy Control signal are counted in **Total views** but get no session record, because without an identity a session cannot be measured. **Total sessions**, **Views per session**, **Bounce rate**, and **Session duration** therefore exclude that cohort. The RUM Engagement page counts sessions from a different pipeline and does include them.
</Callout>

### Main Chart [#main-chart]

Pick up to **two metrics** from the headline list to plot on a dual-axis chart. Toggle comparison mode to overlay the previous period.

### Tabs [#tabs]

Below the chart, the Overview surfaces five drill-down tabs:

| Tab             | What's inside                                                                              |
| --------------- | ------------------------------------------------------------------------------------------ |
| Traffic Sources | Channel breakdown, individual sources, referring domains, and UTM campaigns                |
| Pages           | All pages, entry pages, and exit pages                                                     |
| Geography       | Countries, continents, and language preferences                                            |
| Devices         | Device type, browsers (with versions), operating systems (with versions), and screen sizes |
| Events          | Custom events, outbound link clicks, file downloads, and site search queries               |

Click any row in the tables to apply it as a filter – for example, click "Mobile" in the Devices tab to scope the entire dashboard to mobile traffic.

## Traffic Sources [#traffic-sources]

### Source Types [#source-types]

Visitors are categorized by how they arrived:

| Source      | Description                                         |
| ----------- | --------------------------------------------------- |
| Direct      | Typed URL or bookmark                               |
| Search      | Organic search engine results                       |
| Social      | Social media platforms                              |
| Referral    | Links from other sites                              |
| Email       | Email marketing                                     |
| Newsletter  | Newsletter links                                    |
| Paid        | Advertising campaigns                               |
| Paid Search | Paid search ads                                     |
| Paid Social | Paid social ads                                     |
| AI Search   | AI assistants and tools (ChatGPT, Perplexity, etc.) |
| Internal    | Navigation from within your own site                |

### Referrer Details [#referrer-details]

For each source, see:

* Specific referring domains
* Landing pages
* Conversion rates

### UTM Tracking [#utm-tracking]

Track campaign effectiveness with UTM parameters:

| Parameter     | Purpose                             |
| ------------- | ----------------------------------- |
| utm\_source   | Traffic source (google, newsletter) |
| utm\_medium   | Marketing medium (cpc, email)       |
| utm\_campaign | Campaign name                       |
| utm\_term     | Paid keywords                       |
| utm\_content  | Ad variation                        |

Example URL:

```
https://example.com?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale
```

## User Behavior [#user-behavior]

### Top Pages [#top-pages]

See which pages get the most traffic:

* Page views per page
* Average time on page
* Bounce rate per page
* Entry and exit rates

### Engagement Metrics [#engagement-metrics]

* **Scroll Depth** - How far visitors scroll (25%, 50%, 75%, 90%, 100%)
* **Time on Page** - Active engagement time
* **Pages per Session** - Average pages viewed

### Site Search [#site-search]

If your site has search functionality, track:

* Search queries used
* Search result clicks
* No-result searches

<Callout type="info">
  Site search is automatically detected from common query parameters (q, s, search, query, keyword, term, k). You can stop search terms being stored at all, per domain - see [Page Titles and Search Terms](#page-titles-and-search-terms).
</Callout>

## Device & Location [#device--location]

### Device Breakdown [#device-breakdown]

* **Desktop** vs **Mobile** vs **Tablet**
* Operating systems
* Browsers and versions
* Screen sizes - collected only from visitors under **Persistent** storage, so the Screen Sizes tab covers a subset of your traffic

### Geographic Data [#geographic-data]

* Country-level breakdown
* Continent-level breakdown
* Browser language breakdown
* Performance by location

## Realtime View [#realtime-view]

The Realtime page (**Domain** → **Analytics** → **Realtime**) is a live snapshot of what's happening on your site right now. It's useful for confirming that a campaign launch, deploy, or marketing push is landing.

### Active Visitors [#active-visitors]

A live **Active visitors** count in the page header shows visitors active in the last 5 minutes.

### Sections [#sections]

| Section         | What it shows                                                            |
| --------------- | ------------------------------------------------------------------------ |
| Recent Activity | Feed of the latest pageviews – device icon, country name, path, time-ago |
| Active Pages    | Paths currently being viewed, with visitor counts and proportional bars  |
| Active Events   | Events firing right now (clicks, scrolls, and custom events)             |
| Traffic Sources | Channels driving live traffic                                            |
| Top Referrers   | Domains sending visitors right now                                       |
| Devices         | Live device type breakdown                                               |
| Countries       | Where active visitors are located                                        |

The page polls every 10 seconds. A **Live / Paused** toggle lets you freeze the view if you want to read a snapshot without it shifting under you.

## Audience [#audience]

The Audience view (**Domain** → **Analytics** → **Audience**) groups your visitors and flags unusual patterns.

* **Visitor segments** - Compare cohorts such as new vs returning, mobile vs desktop, and by traffic source.
* **Geo/language mismatch** - Surfaces visitors whose country and browser language don't line up, which is useful for spotting localization gaps.
* **Visitor anomalies** - Highlights unexpected spikes or drops in visitor counts.

Cards support period-over-period comparison.

## Acquisition [#acquisition]

The Acquisition view (**Domain** → **Analytics** → **Acquisition**) focuses on where traffic comes from and how well it performs.

* **Referrer quality** - Ranks referring domains by engagement and conversion, not just volume.
* **Campaign efficiency** - Compares UTM campaigns on engagement and conversion signals.
* **Search bridge** - Connects search-driven visits to on-site behavior.

## Engagement [#engagement]

The Engagement view (**Domain** → **Analytics** → **Engagement**) shows how deeply visitors interact with your pages.

* **Scroll-depth map** - How far visitors scroll on each page.
* **Rage-click hotspots** - Pages and elements where visitors click repeatedly in frustration.
* **Bounce diagnosis** - Explains why specific pages bounce.
* **Engagement quadrant** - Plots pages by traffic vs engagement to find high-traffic, low-engagement pages.

## Journeys & Goals [#journeys--goals]

The Journeys & Goals view (**Domain** → **Analytics** → **Journeys & Goals**) maps the paths visitors take and the goals they reach.

* **User journeys** - Common page-to-page paths through your site.
* **Custom funnel builder** - Define your own multi-step funnels and measure drop-off.
* **Site-search insights** - What visitors search for on your site, including no-result queries.
* **Outbound-click hubs** - Pages that send the most traffic to external destinations.

## Ecommerce View [#ecommerce-view]

If your site has the analytics script installed and the script detects a supported store, the Ecommerce page (**Domain** → **Analytics** → **Ecommerce**) fills with revenue and conversion data.

### Headline Metrics [#headline-metrics]

| Metric              | Description                                       |
| ------------------- | ------------------------------------------------- |
| Revenue             | Total revenue in the workspace's display currency |
| Orders              | Number of completed purchases                     |
| Average order value | Revenue / orders                                  |
| Conversion rate     | Purchases / visitors, expressed as a %            |
| Items sold          | Total units sold across all orders                |

Each metric supports comparison mode for period-over-period change.

### Main Chart [#main-chart-1]

Pick which of the four headline metrics to plot. Comparison overlay is available.

### Conversion Funnel [#conversion-funnel]

A four-stage funnel showing how many users reach each step:

1. **Product Views**
2. **Add to Cart**
3. **Checkout**
4. **Purchase**

Each stage shows the count and its share as a percentage of Product Views (the first stage), so you can spot the biggest drop-off.

### All Products Table [#all-products-table]

Per-product breakdown with views, add-to-carts, purchases, revenue, and per-product conversion rate.

### Tracked Events [#tracked-events]

The script automatically detects the following events on supported platforms:

| Event            | Description             |
| ---------------- | ----------------------- |
| Product View     | Visitor views a product |
| Add to Cart      | Item added to cart      |
| Remove from Cart | Item removed from cart  |
| View Cart        | Cart page viewed        |
| Begin Checkout   | Checkout started        |
| Purchase         | Order completed         |

### Supported Platforms [#supported-platforms]

* Shopify
* WooCommerce
* Magento
* Squarespace

See [Web Analytics Script Installation](/installation/analytics-script) for setup details.

## Ecommerce funnel [#ecommerce-funnel]

The Ecommerce funnel view (**Domain** → **Analytics** → **Ecommerce funnel**) breaks the standard shopping funnel (product view to add to cart to checkout to purchase) down per product, so you can see which products lose the most visitors at each step.

## Performance & Reliability [#performance--reliability]

The Performance & Reliability view (**Domain** → **Analytics** → **Performance & Reliability**) connects site speed to business outcomes.

* **Core Web Vitals vs conversion** - Whether faster pages convert better.

## Trends & Anomalies [#trends--anomalies]

The Trends & Anomalies view (**Domain** → **Analytics** → **Trends & Anomalies**) watches your metrics over time and calls out what changed.

* **Page decay** - Pages steadily losing traffic.
* **Traffic anomalies** - Statistically unusual spikes or drops.
* **Search clusters** - Groups of related on-site search queries.

## Experiments [#experiments]

The Experiments view (**Domain** → **Analytics** → **Experiments**) runs statistical before/after tests so you can tell whether a change (a redesign, a new campaign, a content update) actually moved a metric. It supports difference-in-differences, Bayesian structural time series, and Mann-Whitney tests.

## Custom Events [#custom-events]

Track custom actions using the JavaScript API:

```javascript
// Track a button click
window.VitalSentinelAnalytics.track('button_click', {
  button_id: 'signup-cta',
  location: 'homepage'
});

// Track a form submission
window.VitalSentinelAnalytics.track('form_submit', {
  form_name: 'contact',
  success: true
});
```

### Data Attribute Tracking [#data-attribute-tracking]

Track events without JavaScript:

```html
<button data-vs-event="signup_click" data-vs-plan="free">
  Sign Up Free
</button>
```

## Filtering & Segmentation [#filtering--segmentation]

### Filter by: [#filter-by]

* Date range
* Traffic source
* Device type
* Country
* Page URL

### Segment Analysis [#segment-analysis]

Compare performance across segments:

* Mobile vs Desktop
* New vs Returning
* By traffic source

## Privacy Features [#privacy-features]

### No Cookies by Default [#no-cookies-by-default]

In its default storage mode (`data-storage="none"`) the Web Analytics script works without cookies:

* Nothing is stored on the visitor's device, so no consent banner is required for storage
* No cross-site tracking

If you switch to `data-storage="session"` or `data-storage="persistent"`, the script stores an identifier on the visitor's device, so you must obtain your visitors' consent before you enable either.

### Data Collection [#data-collection]

What we collect:

* Pseudonymous session and visitor identifiers
* Page views and events
* Device type, browser, and operating system, derived on our servers from the User-Agent header the browser already sends
* Country (no region and no city-level data)

What we don't collect:

* Cross-site tracking data
* City-level location

IP addresses are not stored in your analytics data. They are used in memory to look up the country and as one input to the server-side key that stitches a visit together, then discarded.

<Callout type="warn">
  This is not the same as "no personal data". Page paths, query strings, page titles, UTM values, and custom event properties are your own content - we store what your site sends us. Automatic redaction catches structured identifiers such as emails and card numbers, not names or free text. Design your URLs, titles, and events so they do not carry personal data.
</Callout>

### Page Titles and Search Terms [#page-titles-and-search-terms]

Page titles and site-search terms are free text your own pages produce, so they can carry details that pattern-based redaction cannot catch. You can switch both off for a whole domain.

Go to **Domain Settings** → **Web Analytics** → **Advanced settings** → **Page titles and search terms**, then tick **Do not store page titles or site-search terms**. Both are stored by default.

* Enforced on our servers at ingestion, not in the browser, so there is no snippet change and no redeploy. It applies to all traffic on that domain, including visitors already on a page.
* It takes effect within about a minute, not on the click. Events arriving inside that window are still handled under the previous setting.
* It covers both pipelines. Page titles stop being stored for Web Analytics and for [RUM](/features/rum-monitoring), and the search term is stripped from the site-search event and from the results-page URL, in Web Analytics and in RUM.
* It is not retroactive. Rows already stored keep the values they were stored with.
* Owners and admins only. Members do not have access to domain settings.

With it switched on, your reports identify pages by URL only and you lose site-search reporting: searches aggregate under a single results-page path.

### Consent Levels [#consent-levels]

If you want enhanced tracking (returning visitors), use consent. Wire both calls into your banner - the first when a visitor accepts, the second when they refuse or later change their mind:

```javascript
// Visitor accepted
window.VitalSentinelAnalytics.grantConsent('persistent');

// Visitor rejected, or withdrew a previous acceptance
window.VitalSentinelAnalytics.revokeConsent();
```

No page reload is needed. The next event carries the new basis.

<Callout type="warn">
  A browser privacy signal outranks your banner. The grant call is ignored for a visitor sending Do Not Track or Global Privacy Control: they are still counted, but without any storage.
</Callout>

See [Privacy & Consent](/installation/analytics-script#privacy--consent) for details.

## Best Practices [#best-practices]

### Focus on Key Metrics [#focus-on-key-metrics]

* **Traffic** - Are you attracting visitors?
* **Engagement** - Are they interested?
* **Conversion** - Are they taking action?

### Set Up Custom Events [#set-up-custom-events]

Track actions that matter to your business:

* Sign-ups
* Downloads
* Video plays
* Feature usage

### Monitor Trends [#monitor-trends]

Look for:

* Traffic changes over time
* Seasonal patterns
* Campaign effectiveness
* Content performance

## Related Features [#related-features]

<Cards>
  <Card title="Web Analytics Script Installation" href="/installation/analytics-script">
    Set up web analytics
  </Card>

  <Card title="RUM Monitoring" href="/features/rum-monitoring">
    Track performance metrics
  </Card>
</Cards>
