> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsite.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics

> Traffic for every published page: views, visitors, referrers, countries, UTM, time on page.

GetSite records a view every time a published page is served to a non-bot visitor. Nothing to install. Available on every paid plan.

## Where to look

| | |
| - | - |
| **Site settings → Analytics** | Everything for one site: daily chart, per-page table, referrers, countries, UTM |
| **Site page** | 30-day visits sparkline; the change compares the last 15 days with the 15 before |
| **Domains page → Traffic** | Views and unique visitors across all your pages |
| **Dashboard → Overview** | 30-day visits, visitors, submissions, campaign emails sent, top site |
| **Domain page** | 30-day visits for that domain against the previous 30 |

Date ranges are 7 days, 1 month, 3 months and 1 year.

## What is measured

| | |
| - | - |
| **Views** | Loads of a published page's HTML |
| **Visitors** | First view from a browser without the page's cookie. Counted per page, so one person reading three pages is three visitors |
| **Time on page** | Sent when the tab is hidden or closed. Capped at 30 minutes |
| **Bounce rate** | Views that never sent a time-on-page signal (left in under a second, or the browser blocked it) |
| **Referrers** | The referring domain |
| **Countries** | Looked up from the IP afterwards. A job runs every 10 minutes and handles 100 views per run, so busy days fill in later |
| **UTM campaigns** | `utm_source`, `utm_medium`, `utm_campaign` |
| **Releases** | Markers on the chart for each publish |

Site analytics also shows **Conversions**, as a total and a per-page column, for pages that have a conversion goal. Goals have no UI. Set one with `PUT /v1/pages/PAGE_ID {"conversion_goal": {"enabled": true, "type": "click", "selector": "#buy"}}`. `type` can be `click` with a `selector`, `form_submission` for any form on the page, `pageview` with a `path`, or `custom`, which counts when your page calls `window.gsConvert()` or dispatches a DOM event named `event_name` on `document`. A visit converts at most once. This needs an [API key](/developers/api), so the Agency plan.

## How it works

* Tracking is server-side on the page load plus a small script for time on page. Single-page navigation inside a page is not tracked.
* A first-party cookie `gs_visitor_<pageId>` lasts one year. Analytics is not cookieless and the cookie banner does not switch it off.
* Bots and GetSite's own uptime monitor are excluded.
* Drafts and previews are not counted.
* New views can take up to an hour to appear. All-time totals update every 12 hours.
* Raw views are kept for 30 days, then rolled up to daily totals for a year and monthly totals after that. Top-10 lists (referrers, countries, UTM) survive the rollup.
* To stop recording for a site, set `analytics_enabled` to `false` with `PUT /v1/websites/:id`. API only; there is no switch in the app.

## Emails

* **Weekly site update** every Monday morning: visits and form submissions (the email calls them leads) per site for the past week. Paid plans with a verified email. Skipped when nothing happened.
* **Milestones** when a site passes 100, 1,000 and 10,000 visits.

Both are controlled by the **Notifications** switch in [Account](/account/billing#email-preferences).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.