See what your visitors did next to what your server served.
Google Analytics measures the visits its tag was allowed to run for: sessions, engagement, key events and revenue. Your logs record every request your server answered. Salience puts the two side by side for each landing page and shows how much human traffic GA never recorded.
Read-only access through Google sign-in. No tag, code or DNS changes. GA4 data syncs nightly and runs about a day behind.
The Google Analytics page for demo-site.example once Google Analytics is connected through Official Google Analytics Data API: the Website setup strip shows Google Analytics Connected, the tiles read Sessions 585, Active users 518, Engagement 66.7%, Unmeasured 84%, and the Landing pages table fills with /, 110 sessions, 83 users, 37.3% engagement; /guides/pricing-2026, 53 sessions, 49 users, 81.1% engagement; /products/overview, 41 sessions, 36 users, 75.6% engagement; /blog/ai-search-2026, 23 sessions, 22 users, 73.9% engagement. Last sync 2 h ago · data through 15 Sept.
Google Analytics and your server logs count different things
GA records a visit when its JavaScript runs. Your server records every request, whether or not a tag ever fired. Most teams look at one or the other and treat the difference as noise.
Reading a fall in GA sessions as a fall in traffic, when the server answered as many human requests as the week before.
Seeing which pages AI assistants send people to in the logs, with no way to tell whether those people stayed, converted or bought.
Exporting a GA landing-page report and a log report and matching URLs between them by hand.
Guessing how much of your audience blocks the tag, declines consent or leaves before it loads.
Sessions, engagement and revenue for each landing page, next to the requests behind it
Once a GA4 property is connected, every landing page shows what GA measured for it and what your logs recorded for the same path, and the gap between the two is shown per day.
The Salience dashboard for demo-site.example, last 24 hours. Website setup 5 of 6 completed. Traffic over time in fifteen-minute buckets, human and bot requests stacked. Bot identity evidence: 12.1K verified requests, 762 unverified claims, 2.7K with verification unknown. Total requests 34.2K, up 7.0% on the previous period. Unique IPs 15.3K, up 2.0%. Bot traffic 45.5%, down 1.9 points. AI crawlers 18.5%, down 8.0 points.
GA4 data syncs nightly and runs about a day behind. The request side comes from your logs as they arrive.
Every landing page shows outcomes beside requests
Each landing page in GA is matched to the same path in your logs. Sessions, users, engagement rate, average engaged time, key events and revenue sit beside the request record, and each row opens the URL's own page, where the GA block sits next to the Search Console block and the crawl record.
Path Analysis on demo-site.example, last 24 hours: Total Requests 34,163, Unique Paths 17,700, 4xx Errors 3,272, 5xx Errors 28. Top paths: / 1,704 requests, 5.0% of total, importance 7; /page-8a5da5 1,245 requests, 3.6% of total; /robots.txt 376 requests, 1.1% of total; /page-29d247/page-08a441 202 requests, 0.6% of total, importance 5; /favicon.ico 183 requests, 0.5% of total; /page-29d247/page-900bc8 161 requests, 0.5% of total, importance 5; /apple-touch-icon.png 120 requests, 0.4% of total.
The share of human traffic GA never saw, per day
For each day, Salience counts human HTML page requests in your logs and sets them against the pageviews GA4 reported. The unmeasured share is shown per day and per page. Ad blockers, declined consent, browsers that block third-party scripts and pages that never finish loading all leave requests in your logs that GA does not record. A sudden change in the share usually points to a tag or consent change.
Google Analytics on demo-site.example, Last sync 2 h ago: Sessions 585, -43% vs prev; Active users 518, -42% vs prev; Engagement 66.7%, -2.0 pp vs prev; Key events 0, 0% of sessions. Measured vs actual: Unmeasured 84%, Log requests 5,802, GA pageviews 916, Days compared 1. Human-classified HTML page requests in your logs that Google Analytics did not record as pageviews. Read it as a ceiling and watch the trend; GA counts are modelled where consent mode is on.
What the people AI assistants send actually did
The logs show which assistants send visitors and to which pages. With GA connected, the AI assistants table shows sessions, engagement, key events and revenue for visitors from ChatGPT, Perplexity, Claude, Gemini, Copilot and the rest, and the AI landing pages view gains a key-events column.
The Alerts page for demo-site.example: 2 open · 8 cleared · 10 alerts. Error spike · critical: 15,000 404s on /products/* from Googlebot since the 14:00 deploy. Next step: Roll back or fix the URL structure. Crawler blocked · warning: ClaudeBot refused with 403 on 32 URLs under /collections since the WAF rule change. Next step: Review the rule if you want those pages in AI answers.
How it works
Connect
Sign in with a Google account that has at least Viewer access on the GA4 property and pick the property for this site. Salience asks for read-only access and the first sync starts straight away.
Join
Sessions, users, engagement, key events and revenue are matched to the request stream from your log source, landing page by landing page, and GA pageviews are set against human page requests for each day.
Compare
Outcomes beside requests for every landing page, the unmeasured share per day, and AI and search sources with what their visitors did, in the dashboard, on each URL's page, and through the API, CLI and MCP server.
Specification
- Collection method
- A read-only connection to the official Google Analytics Data API, authorised by Google sign-in
- Data freshness
- Synced nightly, or on demand from settings. GA4 finalises each day after it ends, so the data runs about a day behind
- Typical setup time
- A Google sign-in and a GA4 property pick
- Plan requirement
- None on Google's side. Any GA4 property works; Universal Analytics properties are not supported
- Permissions needed
- A Google account with at least Viewer access on the GA4 property. Salience asks for read-only scopes
- Code or DNS changes
- None. No tag, code or DNS changes
- Historical import
- The first sync pulls history; the connection card shows how many days it holds
- Key limitation
- GA4 report totals, about a day behind, with modelled sessions where consent mode is on. Salience shows them beside your logs as human outcomes and never counts them as traffic.
Which of these is you?
Marketing teams
GA says sessions are down 40%. Did we lose traffic, or did we lose measurement?
Human page requests from your logs beside GA pageviews for each day, so a tag or consent change shows up as a change in the unmeasured share.
AI agent intelligence
E-commerce teams
ChatGPT is sending people to our product pages. Do any of them buy?
Sessions, engagement, key events and revenue per AI assistant and per landing page, from your GA4 property.
E-commerce
SEO teams
Which of the pages Google crawls most are the ones that earn sessions?
Crawl record, Search Console performance and GA outcomes on one page per URL.
Search crawler intelligence
Publishers
How much of our readership is invisible to analytics?
The unmeasured share per day and per page, with the log count and the GA count that produced it.
Publishers
Doesn't Google Analytics already tell me this?
It tells you what its tag measured, and for sessions, engagement, key events and revenue it is the source. Salience reads those totals through the official Data API and adds the part a client-side tag cannot see: every request your server answered, including the ones where the tag never ran.
Sessions, engagement, key events, revenue
- Google Analytics alone
- GA's own report, and the source Salience reads
- Salience
- Synced nightly and shown beside your logs
Visits where the tag did not run
- Google Analytics alone
- Absent from the report
- Salience
- In the logs, counted per day and per page as the unmeasured share
Crawlers and AI agents
- Google Analytics alone
- Filtered out by design
- Salience
- Every request, verified against published ranges
Visitors sent by AI assistants
- Google Analytics alone
- Sessions by source
- Salience
- Sessions and outcomes per assistant, beside the fetches those assistants made
What the server returned
- Google Analytics alone
- Outside its scope
- Salience
- Status code and response time for each request
One page per URL
- Google Analytics alone
- Landing-page report
- Salience
- GA outcomes, Search Console data, crawl record and request log together
How current the data is
- Google Analytics alone
- About a day behind
- Salience
- GA figures a day behind; requests as your server logs them
When the native tooling is all you need
If your question is how visitors behaved on the site, what they converted on and what they spent, Google Analytics answers it and Salience reads the same answer. The join earns its place when GA's numbers move and you need to know whether the audience changed or the measurement did, and when you want to know what the people crawlers send actually did.
Facts about the connection
Each of these is a property of the connection you can check on the free plan.
Illustrative example
GA sessions fall by a third in a week. The logs show human page requests level with the week before, and the unmeasured share jumps from 22% to 51% on the day a new consent banner went live. The audience did not change; the measurement did.
Everything included
One connection, one request stream. No per-feature setup and no second pipeline to maintain.
Outcomes per landing page
Sessions, users, engagement rate, average engaged time, key events and revenue for each landing page, with a search filter, each row opening the URL's own page.
Measured vs actual
GA pageviews against human page requests from your logs, per day, with the unmeasured share, the log count and the GA count that produced it.
Sources and mediums
Sessions, engagement, key events and revenue by source and medium from your GA4 property, next to the referrers your logs record.
AI assistants
Sessions and outcomes for visitors from ChatGPT, Perplexity, Claude, Gemini, Copilot and the rest, beside the fetches those assistants made against your site.
Human behaviour on each URL
A GA block on every URL's page: sessions, engagement rate, key events, revenue, pageviews, the page's own unmeasured share, and its top AI and search sources.
AI landing pages with outcomes
The pages AI assistants send people to, with sessions, engagement and key events per assistant and a key-events column on the pages table.
Dashboard, API, CLI and MCP
The Google Analytics page in the app, GET /ga/overview and GET /ga/pages on the public API, salience ga overview and salience ga pages in the CLI, and get_ga_overview and get_ga_pages as MCP tools.
Website setup
The Google Analytics step on the dashboard's setup strip shows whether a property is connected, when it last synced and how many days of history it holds.
Trust & data protection
Privacy and data protectionYou are the controller
We process only on your instructions. GDPR Art. 28 DPA on every account, nothing to sign.
UK data residency
AWS eu-west-2 (London). Encrypted in transit (TLS 1.2+) and at rest (AES-256).
Server-side collection
No browser tracking script and no client-side pixel.
No sale, no pooling
Your logs are never sold, never used for advertising, never shared between customers. DPA, sub-processor list and security overview available.
What is collected
- Sessions, active users, engagement rate, key events and revenue
- GA4 pageviews per day, set against human page requests in your logs
- Sources and mediums, and sessions from AI assistants
- Landing pages, joined to each URL's own page
What is never collected
- Visitor identifiers, IP addresses or per-hit data: report totals only
- Bot traffic: GA never records it, the logs do
- Any write access: Salience never changes property settings or sends data to GA
The Google Analytics connection is included on every plan, and GA4 itself is free from Google. Plans are priced on the requests your log source sends.
Crawler intelligence from $19/mo.
Priced on requests, not seats. Unlimited users on every plan except Solo. Start on the free tier and upgrade when your traffic does. Free trial, no card needed.
- 500K requests/mo
- 1 site
- 30 days history
- Unlimited users
- Real-time analytics, bot and AI detection
- 20M requests/mo
- 5 sites (+5)
- 1 year history
- Unlimited users
- Real-time analytics with bot and AI-crawler verification
- 100M requests/mo
- 15 sites (+15)
- 2 years history
- Unlimited users
- AI allowance: ~600 answers or ~60 reports a month
- 500M requests/mo
- 50 sites, no ceiling
- 4 years history
- Unlimited users
- AI allowance: ~3,000 answers or ~300 reports a month
- 1B requests/mo
- Unlimited sites
- Custom history
- Unlimited users
- SSO / SAML and audit log
Common questions
Does Salience replace Google Analytics?
No. Google Analytics is the source for sessions, engagement, key events and revenue, and Salience reads those totals through the official Data API. Salience adds the requests your server answered, including the ones GA never measured, and shows the two together for each landing page.
How do I connect it, and do I need a developer?
Go to Settings, Integrations, Google Analytics, click Connect and sign in with a Google account that has at least Viewer access on the GA4 property, then pick the property. The first sync starts straight away. There are no tag, code or DNS changes, and the Google account can be different from the one used for Search Console.
What does Salience pull, and can it change anything?
Report totals only: sessions, active users, engagement, key events, revenue, pageviews, sources and landing pages, through the Data API with read-only access. No visitor identifiers, no IP addresses and no per-hit data. Salience cannot change property settings, create key events or send data to GA.
How often does the data refresh?
The sync runs nightly, and you can run it on demand from Settings. GA4 finalises each day after it ends, so the page window ends on the latest complete day and the header states the lag. The connection card shows the sync status, the last sync time and how many days of history it holds.
How is the unmeasured share worked out?
For each day, Salience counts human page requests in your logs (requests classified as human, for HTML pages, with static assets, bots and known scrapers excluded) and sets them against the pageviews GA4 reports for the same day. The unmeasured share is the proportion GA did not record. A gap of 15 to 40% is common; the size depends on your audience and your consent set-up.
Why would GA miss a visit that is in my logs?
GA can only measure a visit when its tag runs. Ad and tracker blockers, browsers that block third-party scripts, visitors who decline the consent banner, slow or abandoned page loads and JavaScript errors all remove real visits from GA's numbers while the request stays in your logs. Watch the share over time: a sudden jump usually means a tag or consent change.
What if my property uses consent mode?
With behavioural modelling on, GA's sessions and key events include modelled estimates for visitors who declined consent. The unmeasured share uses GA's reported pageviews as given, so modelled data narrows the gap without those visits having been observed.
Does it work with Universal Analytics?
No. GA4 properties only, one property per site.
What are key events, and which currency is revenue in?
Key events are GA4's name for conversions; what counts as one is whatever you have marked as a key event in the property. Revenue is in the property's reporting currency.
Do I need a log source connected as well?
Yes, for the join. Google Analytics supplies what its tag measured and a log source supplies your server's side. Cloudflare, Vercel, CloudFront, Netlify, Kinsta, Shopify, Apache and Nginx all work.
What happens to our data, and where is it stored?
You are the controller and Salience processes data on your instructions under a GDPR Article 28 DPA on every account. Data is stored encrypted in AWS eu-west-2 (London), never sold, never used for advertising and never pooled between customers.
How do I disconnect?
Click Disconnect on the Google Analytics card in Settings, or revoke Salience's access from your Google account. Either stops the sync, the cached data is removed, and your log analysis continues as before.
Your logs already show what Google and the AI crawlers are doing.
Read-only access through Google sign-in. No tag, code or DNS changes. GA4 data syncs nightly and runs about a day behind.