# Savri / Besökskollen, Complete Documentation > Simple, privacy-friendly web analytics. No cookies, no personal data, GDPR-compliant. - Website: https://savri.io (international) / https://besokskollen.se (Swedish) - Dashboard: https://savri.io/login - Documentation: https://savri.io/docs - Demo: https://savri.io/demo - NPM Tracker: https://www.npmjs.com/package/@savri/tracker - NPM MCP Server: https://www.npmjs.com/package/@savri/mcp - Privacy policy: https://savri.io/privacy - Terms of service: https://savri.io/terms --- ## Key Features - **Real-time statistics**: Visitors, pageviews, traffic sources, countries, devices, browsers - **Custom events**: Track any interaction with `savri.event('name', { properties })` - **Event properties**: Add metadata to events for deeper analysis - **Goals & conversions**: Pageview-based and event-based goals with trend tracking - **Funnels**: Multi-step conversion funnel analysis with drop-off rates - **Site search analytics**: Top searches, zero-result searches and zero rate per site via the site_search events - **Google Search Console**: Integrated GSC data showing keywords, positions, CTR - **Revenue tracking**: Connect affiliate and ad revenue to traffic data - **Site groups**: Organize sites into groups with aggregated stats - **Reports**: Monthly email reports with key metrics - **Export**: CSV export of all data - **API**: Public REST API for programmatic access - **MCP Server**: AI assistants (Claude, Cursor) can read analytics directly - **Tracker SDK**: npm package with React hooks, Next.js support, TypeScript ## Technical Details - Tracking script: < 1KB gzipped - No cookies, no cookie banner required - SPA support: Automatic navigation tracking for React, Next.js, Vue - Bot filtering: Built-in filtering of known bots and crawlers - Data retention: 24 months of aggregated statistics, raw data deleted after 90 days - 30-day free trial, no credit card required --- ## Pricing ### Plans & Features | Plan | Sites | Features | |------|-------|----------| | **Starter** | 2 sites | Basic analytics, traffic sources, countries, devices | | **Basic** | 5 sites | + Custom events, event properties, Google Search Console | | **Growth** | 10 sites | + API access, CSV export, funnels, API keys | | **Business** | 15 sites | + Revenue tracking, team members (5), priority support | | **Enterprise** | Custom | + Unlimited team, SLA, custom integrations | ### USD Pricing (monthly) | Pageviews/mo | Starter | Basic | Growth | Business | |-------------|---------|-------|--------|----------| | 10,000 | $9 | $12 | $19 | $49 | | 100,000 | $15 | $19 | $29 | $79 | | 200,000 | $23 | $29 | $45 | $99 | | 500,000 | $35 | $45 | $69 | $129 | | 1,000,000 | $49 | $65 | $99 | $179 | | 2,000,000 | $69 | $89 | $139 | $249 | | 5,000,000 | $99 | $129 | $199 | $349 | | 10,000,000+ | Custom | Custom | Custom | Custom | ### SEK Pricing (monthly) | Pageviews/mo | Starter | Basic | Growth | Business | |-------------|---------|-------|--------|----------| | 10,000 | 79 kr | 99 kr | 159 kr | 499 kr | | 100,000 | 149 kr | 189 kr | 299 kr | 799 kr | | 200,000 | 229 kr | 289 kr | 449 kr | 999 kr | | 500,000 | 349 kr | 449 kr | 699 kr | 1 299 kr | | 1,000,000 | 499 kr | 649 kr | 999 kr | 1 799 kr | | 2,000,000 | 699 kr | 899 kr | 1 399 kr | 2 499 kr | | 5,000,000 | 999 kr | 1 299 kr | 1 999 kr | 3 499 kr | Yearly billing: 10x monthly price (2 months free). 30-day free trial on all plans. No credit card required. --- ## Comparison with Plausible Analytics | Feature | Savri | Plausible | |---------|-------|-----------| | Privacy-first, no cookies | Yes | Yes | | GDPR compliant | Yes | Yes | | Free trial | 30 days | 30 days | | MCP server for AI | Yes | No | | Revenue tracking | Yes | Yes (v2) | | Affiliate tracking | Yes | No | | Site groups | Yes | No | | Funnels | Yes | Yes | | Google Search Console | Yes | Yes | | Custom events | Yes | Yes | | API | Yes | Yes | | Self-hosted option | No | Yes | | Starting price | $9/mo | $9/mo | --- ## Getting Started ### Quick Start (5 minutes) 1. **Create an account**: Sign up free at https://savri.io/signup 2. **Add your site**: Enter your domain in the dashboard 3. **Copy the tracking script**: You'll get a unique script like: ```html ``` 4. **Paste in your site's `
`**: Add it to all pages you want to track 5. **Done!** Visit your site and check the dashboard, data appears within seconds The script is under 1KB and doesn't affect load time. No cookies, no cookie banner needed. ### Script Attributes | Attribute | Description | Required | |-----------|-------------|----------| | `data-site-id` | Your unique site ID from the dashboard | Yes | | `data-api` | API endpoint (https://savri.io or https://besokskollen.se) | Yes | | `defer` | Load asynchronously without blocking | Recommended | --- ## Script Extensions Extend tracking with data attributes on the script tag: | Extension | Attribute | What it tracks | |-----------|-----------|---------------| | Outbound links | `data-outbound-links` | Clicks on external links | | File downloads | `data-file-downloads` | Downloads of PDF, ZIP, etc. | | Form submissions | `data-forms` | Form submit events | | Scroll depth | `data-scroll-depth` | Scroll milestones (25%, 50%, 75%, 100%) | Example with all extensions: ```html ``` --- ## Custom Events Track any user interaction with the JavaScript API. ### Basic usage ```javascript savri.event('signup'); ``` ### With properties ```javascript savri.event('purchase', { product_id: '123', value: 299 }); ``` ### With revenue ```javascript savri.event('purchase', { value: 49.90, currency: 'USD' }); ``` Properties must be registered in the dashboard before they appear in reports. Custom events require the Basic plan or higher. ## Event Properties Add metadata to events for deeper analysis. Properties are key-value pairs attached to events. ### Registering properties Properties must be registered in Settings > Properties before use. Names must be lowercase, start with a letter, contain only letters, numbers, underscores and hyphens. ### Using properties ```javascript savri.event('purchase', { product_id: 'SKU-123', category: 'electronics', value: 299 }); ``` --- ## Goals & Conversions Goals track when important actions happen on your site. ### Pageview goals Track when a user visits a specific URL: - Match type: Exact, Contains, or Starts with - Example: Track visits to `/thank-you` as a conversion ### Event goals Track when a custom event fires: - Match on event name - Example: Track `signup` or `purchase` events ### Creating goals 1. Go to Goals in the dashboard 2. Click "Create goal" 3. Choose Pageview or Event type 4. Set the match pattern 5. Goals show completion count and trend vs previous period Goals are available on all plans. --- ## Funnels Analyze multi-step conversion flows to find where visitors drop off. ### How funnels work 1. Define 2+ steps (pageviews or events) 2. See how many sessions complete each step 3. Identify drop-off rates between steps 4. Optimize the weakest step ### Example funnel: E-commerce checkout 1. Product page viewed (pageview: `/products/*`) 2. Add to cart (event: `add_to_cart`) 3. Checkout started (pageview: `/checkout`) 4. Purchase completed (event: `purchase`) ### Match types - **Exact**: URL must match exactly - **Contains**: URL must contain the string - **Starts with**: URL must start with the string Funnels require the Growth plan or higher. --- ## Site Search Analytics Measure your site's internal search: what visitors look for, and what they cannot find. ### Events - `site_search`: sent on every completed search, with properties `query` (normalized phrase), `results_count` and `source` (autocomplete or results page) - `site_search_zero`: sent in addition when a search returns 0 results - `site_search_click` (optional): sent on search result clicks, enables search CTR ### What you get - **Top searches**: the most popular search phrases with share of sessions - **Zero-results list**: phrases visitors look for but do not find, an action list for catalog and synonyms - **Zero rate**: the share of searches with no results - **Search CTR**: the share of searches that lead to a result click (requires site_search_click) Register the properties under Settings, Properties, then send the events. Full guide: /docs/site-search Site search analytics requires the Basic plan or higher. --- ## Google Search Console Integration See search keywords, positions, CTR and impressions directly in Savri. ### How to connect 1. Go to your site in the dashboard 2. Click "Connect GSC" 3. Log in with your Google account and grant access 4. Data syncs automatically (weekly, with 2-3 day delay from Google) ### What you get - **Search queries**: Keywords that drive traffic - **Pages**: Which pages rank in Google - **Countries**: Geographic search distribution - **Devices**: Desktop vs mobile search performance - **Metrics**: Clicks, impressions, CTR, average position - **Trends**: Compare with previous period ### Data views Switch between Queries, Pages, Countries, and Devices tabs. Export any view as CSV. Data is cached and synced weekly. GSC integration requires the Basic plan or higher. --- ## Revenue Tracking Connect affiliate and ad revenue to your traffic data. ### Supported sources - **Affiliate networks**: Amazon, Adtraction, Awin, etc. - **Ad networks**: Google AdSense, Mediavine, etc. - **Manual entry**: Add revenue data manually ### How it works 1. Go to Revenue in the dashboard 2. Add revenue entries per site, source, and period 3. See total revenue, revenue per visitor, and revenue per pageview 4. Compare revenue across sites and time periods Revenue tracking requires the Business plan or higher. ## Affiliate Tracking Track affiliate link clicks and attribute revenue to traffic sources. ### Setup 1. Add `data-outbound-links` to your tracking script 2. Affiliate link clicks are tracked automatically 3. Match revenue data to click data in the Revenue dashboard ### Supported link patterns Automatically detects common affiliate link patterns from major networks. --- ## Site Groups Organize your sites into logical groups for aggregated statistics. ### Use cases - Group sites by client (for agencies) - Group sites by category (e.g., "E-commerce", "Blogs") - Group sites by region ### Features - Aggregated visitor and pageview counts per group - Color coding and emoji for visual organization - Click into a group to see individual site stats - Drag sites between groups --- ## Reports Automatic monthly email reports with key metrics. ### What's included - Total visitors and pageviews - Trend vs previous month - Top pages and traffic sources - One report per site ### Setup Enable monthly reports in Settings. Reports are sent on the 1st of each month. --- ## Export Data Download your analytics data as CSV files. ### What can be exported - Daily visitor/pageview data - Top pages - Traffic sources - Countries - Search Console data (queries, pages, countries, devices) Export requires the Growth plan or higher. --- ## Public REST API Programmatic access to all your analytics data. ### Authentication All requests require an API key in the `X-API-Key` header: ```bash curl -H "X-API-Key: YOUR_API_KEY" https://savri.io/api/v1/sites ``` ### Endpoints #### Sites - `GET /api/v1/sites`, List all sites - `GET /api/v1/sites/:id`, Get site details #### Stats - `GET /api/v1/stats/overview?siteId=X&period=7d`, Overview stats - `GET /api/v1/stats/pages?siteId=X&period=7d`, Top pages - `GET /api/v1/stats/referrers?siteId=X&period=7d`, Traffic sources - `GET /api/v1/stats/countries?siteId=X&period=7d`, Countries #### Goals - `GET /api/v1/goals?siteId=X`, List goals - `POST /api/v1/goals`, Create goal #### Funnels - `GET /api/v1/funnels?siteId=X`, List funnels - `GET /api/v1/funnels/:id/stats?period=30d`, Funnel statistics #### Properties - `GET /api/v1/properties?siteId=X`, List event properties - `GET /api/v1/properties/breakdown?site_id=X&property=query&event=site_search_zero`, Top values for a property, optionally filtered by event ### Periods - `today`, `7d`, `30d`, `90d` ### Rate limiting API requests are rate-limited per API key. API access requires the Growth plan or higher. ## API Keys Create and manage API keys in Settings > API Keys. - Each key has a name for identification - Keys can be revoked at any time - One key per purpose recommended (e.g., separate keys for different integrations) API keys require the Growth plan or higher. --- ## Tracker SDK (@savri/tracker) Official npm package for React, Next.js, and vanilla JavaScript. ### Installation ```bash npm install @savri/tracker ``` ### React / Next.js #### SavriProvider ```tsx import { SavriProvider } from '@savri/tracker/react'; export default function Layout({ children }) { return (