Google Analytics and server log monitoring

Compare Google Analytics with every request your server answered.

GA4 measures the visits its tag was allowed to run for. Salience puts its sessions, key events and revenue beside your server logs and shows the share of human visits GA4 did not record.

  • Read-only Google sign-in
  • No tag or code changes
  • Log source connection required

Explore sample data

Example Log Explorer rows for a website: Chrome and Safari visitors on the pricing and signup pages, verified Googlebot, ChatGPT-User, GPTBot and Bingbot requests, and a 403 returned to verified PerplexityBot on a guide page, with an alert about AI crawl errors.

Log Explorer

www.example · requests in real time

Example
  • Chrome 141Human/pricing200
  • GooglebotVerified/guides/log-file-analysis200
  • PerplexityBotVerifiedAI search/guides/robots-txt403
  • ChatGPT-UserVerifiedUser-triggered/guides/crawl-budget200
  • GPTBotVerifiedTraining/blog/october-release-notes200
  • Safari 26Human/signup200
  • BingbotVerified/changelog200
WarningAI Crawl Errors High

Verified PerplexityBot received 403 on 41% of its requests in the last hour, most of them to /guides/ pages.

Recommended: check the bot rules at your CDN or firewall and allow verified PerplexityBot.

GA4 and Salience answer different questions

GA4 counts a visit when its tag runs in the visitor's browser. Your server logs record every request the server answered, from people, search crawlers, AI systems and scrapers, whether or not a tag ran.

Google Analytics 4

The GA4 tag in each visitor's browser and the events it sends

  • How many sessions and users came, and from which sources and mediums?
  • Which landing pages lead to key events and revenue?
  • How engaged were visitors, and for how long?
  • Which channels and campaigns get credit for a conversion?

GA4 stays the source for sessions, key events and revenue. Salience reads its report totals.

Salience

Every request from your log source, with GA4 totals beside it

  • How many human page requests did GA4 not record, day by day?
  • Which crawlers and AI systems requested each page, and were they who they said they were?
  • What status code did each request get back?
  • Which pages do AI systems fetch, and what did the visitors AI assistants sent do next?

Salience reads no visitor identifiers, IP addresses or per-hit data from GA4.

Questions your GA4 reports can't answer

Four examples from the four teams that use Salience. The site, addresses and figures in the panels are examples.

01Search and SEO

Is Googlebot crawling the pages that bring in organic sessions?

GA4 shows organic sessions by landing page and records nothing about Googlebot. When a page's organic sessions fall, GA4 cannot show whether Googlebot stopped fetching it or started receiving errors.

Salience records every verified Googlebot request with the URL, the status code it received and the time, groups the requests by section, and compares the URLs Googlebot fetched with the URLs in your sitemap. Each URL's page puts its Googlebot fetches beside its GA4 sessions and Search Console figures.

Find sitemap pages Googlebot has not fetched, see how much crawling goes to tag pages and campaign-parameter URLs, and check a page's crawl record when its organic sessions change.

How Salience reports search crawler activity

Verified Googlebot by section

www.example · last 7 days

Example
Verified Googlebot requests by site section over 7 days, the URLs fetched, and sitemap URLs with no Googlebot request (example data)
Guides/guides/*3,284URLs fetched412Sitemap URLs not fetched17
Blog/blog/*2,156URLs fetched538Sitemap URLs not fetched0
Tag pages/tag/*1,873URLs fetched902Sitemap URLs not fetchedNot in sitemap
Campaign parameters?utm_1,207URLs fetched655Sitemap URLs not fetchedNot in sitemap
36%of 8,520 verified Googlebot requests went to tag pages and URLs with campaign parameters
17guide URLs in the sitemap had no Googlebot request in 7 days

Automated sources requesting pages

www.example · last 24 hours

Example

Requests per hour from unverified automation

peak 1,784

Unverified automated requests ran at 40 an hour, rose to between 1,728 and 1,784 an hour from 01:00 to 07:59, then returned to 40.

  • 203.0.113.0/24Not a crawler9,644

    Hosting provider · 3 rotating browser user agents · Every /guides/* and /blog/* page in order, no images or scripts

  • 198.51.100.61Unverified2,318

    Hosting provider · GPTBot (claimed) · /blog/?page=1 to 54

  • GooglebotVerified1,488

    Google · Googlebot · Guides, blog and tag pages, follows robots.txt

  • 192.0.2.140Not a crawler960

    Hosting provider · HeadlessChrome/141 · /pricing every 90 seconds, around the clock

02Security and bot threats

Which automated sources are working through your site?

Scrapers request page after page from datacentre addresses, often with rotating browser user agents or a borrowed crawler name. GA4 excludes known bots and records nothing from clients that do not run its tag, so this traffic is missing from your reports.

Salience groups requests by source address and user agent, checks every claimed crawler name against the operator's published addresses, and shows each source's paths, request rate and timing. The evidence is the address, the network, the user agent and the pattern of requests.

Block or rate-limit the sources at your CDN or web server. Recommendations list the addresses and fake crawler user agents and turn them into a rule for Cloudflare, CloudFront, Nginx, Apache, Netlify or Vercel for you to paste.

How Salience evidences scrapers and bot threats

03AI search and discovery

Do the visitors AI assistants send go on to convert?

GA4 can show sessions referred by chatgpt.com or perplexity.ai. It records nothing about the AI crawlers that requested your pages, which run separately for training data, for an AI search index and for fetches made when someone asks an assistant a question.

Salience puts every AI crawler in one of those three classes, verifies it where the operator publishes its addresses, and lists the pages each one requested.

A recorded request shows that a page was fetched. It does not show whether an answer used or cited the page.

The AI referral traffic report counts the human visits that arrive from ChatGPT, Perplexity, Claude, Gemini, Copilot and other assistants, by landing page. With GA4 connected it adds sessions, engagement, key events and revenue for each assistant, and a key-events column for each page.

How Salience reports AI crawler activity

AI crawlers by purpose

www.example · last 7 days · verified requests

Example
Training
  • GPTBot1,642
  • ClaudeBot1,107

Most requested /blog/october-release-notes

AI search
  • OAI-SearchBot534
  • PerplexityBot389

Most requested /guides/log-file-analysis

User-triggered
  • ChatGPT-User276
  • Claude-User58

Most requested /pricing

23GA4 key events from sessions referred by ChatGPT and Perplexity, across 11 landing pages · AI referral traffic with GA4

04Engineering and operations

Did your last release lose visitors, or did GA4 stop counting them?

A release can rename URLs, break a template or remove the GA4 tag. In GA4 each of these shows up as fewer sessions and key events, and GA4 records nothing about the responses your server sent.

Salience tracks status codes per path and per type of client against your own history, and Site Events mark your releases on every chart. The Measured vs actual chart sets GA4 pageviews against the human page requests in your logs for each day, and a sudden jump in the unmeasured share usually means a tag or consent change.

The Elevated 404s alert names the date and the paths involved, with a recommended next step.

How Salience monitors site reliability

404 responses and the GA4 unmeasured share

www.example · daily share · 14 days

Example
Daily shares from 5 to 18 October. 404 responses to human page requests stayed between 0.8% and 1.2% and to verified search crawlers between 0.5% and 0.7% until 16 October, then rose to 8.7% and 4.3% on 17 October, the day of a release that renamed /features/ URLs, and 9.4% and 4.8% on 18 October. The share of human page requests unmeasured by GA4 stayed between 26% and 28% throughout.0%10%20%30%5 Oct791113151718 Oct9.4%4.8%28%
404s to human page requests
8.7% 9.4%
404s to verified search crawlers
4.3% 4.8%
Unmeasured by GA4
28%
  • Site event · release renamed /features/ URLs
WarningElevated 404s · 17 Oct

Old /features/ paths are returning 404 to visitors arriving on existing links, and to Googlebot and Bingbot.

Recommended: redirect the old /features/ paths to their new URLs.

Example investigation

Googlebot received 503s on 9 guide pages after a CMS upgrade

An example of how an alert becomes a fix, step by step. The site, URLs and figures are illustrative.

  1. 1

    The alert fires

    At 06:50 a Crawler Error Spike alert reports that verified Googlebot requests to /guides/ pages are returning 503 far above the site's usual rate.

  2. 2

    The crawler is Google's

    Every request came from an address inside Google's published Googlebot ranges, so these are Google's own fetches receiving errors.

  3. 3

    The affected URLs

    61 requests across 9 guide URLs, all served the CMS's maintenance page with a 503.

  4. 4

    When it started

    The first 503 arrived at 06:34, four minutes after the CMS upgrade your team recorded as a Site Event at 06:30. Googlebot received 503s in every hour after that.

  5. 5

    The next step

    Take /guides/ out of maintenance mode and check that Googlebot receives a 200 on its next fetches. After the next nightly GA4 sync, compare the guides' organic sessions on their URL pages.

Explore an investigation in sample data

Crawler Error Spike

www.example · opened 06:50 · Googlebot · 503

Example
CriticalGooglebot is receiving 503s on guide pages
GooglebotVerified66.249.66.0/24 · in Google's published ranges
Affected URLs9 URLs · 61 requests
  • /guides/server-log-basics50312
  • /guides/status-codes50310
  • /guides/xml-sitemaps5039
  • /guides/canonical-tags5038
  • /guides/javascript-rendering-for-search-crawlers5037
  • /guides/internal-linking5035
  • 3 more URLs · 10 requests
Googlebot 503s per hour

06:30 Site event · CMS upgrade

3 Googlebot 503s in the 06:00 hour, after the CMS upgrade at 06:30, then 12, 14, 13, 11 and 8 per hour from 07:00 to 11:00, 61 in total.

Recommended next step

Take /guides/ out of maintenance mode, confirm Googlebot receives 200, then check the guides' organic sessions in GA4 after the next nightly sync.

What Salience shows with GA4 connected

Every report comes from your request data. GA4 adds sessions, engagement, key events and revenue to the same URLs, and Search Console adds search figures if you connect it too.

URL detail

www.example/guides/crawl-budget · last 28 days

Example

/guides/crawl-budget

Segment · GuidesIn sitemap.xml200 to Googlebot
  • LogsVerified Googlebot fetchesLast 200 at 07:4621
  • LogsHuman page requestsHTML pages, bots and scrapers excluded1,940
  • Google AnalyticsPageviews24% of human page requests unmeasured1,474
  • Google AnalyticsSessions38 key events1,126
  • Search ConsoleImpressionsIndexed, last inspected 9 Oct21,600

What GA4 adds

  • Outcomes per landing page

    Sessions, active users, engagement rate, key events and revenue, with each landing page linked to its URL page.

  • Measured vs actual

    GA4 pageviews against human page requests in your logs for each day, with the unmeasured share.

  • AI assistants with outcomes

    Sessions, engagement, key events and revenue for visitors from ChatGPT, Perplexity, Claude, Gemini, Copilot and the rest.

What your logs add

  • Verified crawler identities

    200+ crawler identities, checked against published address ranges where the operator publishes them.

  • AI crawlers by purpose

    Training, AI search and user-triggered fetches separated, with the pages each crawler requested.

  • Every request, URL by URL

    Log Explorer and a URL page for each path, with the GA4 block beside the Search Console block and the request record.

What happens next

  • Status codes and errors

    Status codes per path, soft 404s, redirects and response times against your own baseline.

  • Alerts and recommendations

    Alerts by email, Slack or webhook with a recommended next step, and ready-to-paste rules from the recommendations.

  • API, CLI and MCP

    GA4 overview and landing pages through the public API, the salience ga commands and the get_ga_overview and get_ga_pages tools.

Salience also runs its own site crawler and crawl audit, and sends a weekly email report and a daily digest.

How to add Google Analytics 4 to server log monitoring

Salience needs a log source first. Google Analytics is an optional step after it, connected with a Google sign-in, and its first sync starts straight away.

  1. 1

    Enter your domain and create your account

    Use the domain your visitors see, such as yoursite.com. The Free plan covers one website and needs no card.

  2. 2

    Connect a log source

    Cloudflare, Vercel, CloudFront, Netlify, Kinsta, Shopify, Apache or Nginx. The app walks you through your platform's steps and checks that requests are arriving.

  3. 3

    Connect Google Analytics 4

    In Settings, Integrations, Google Analytics, click Connect, sign in with Google and pick the GA4 property for the site. The card shows the sync status, the last sync and how many days of history it holds.

What you need

  • A GA4 property for the site
  • A Google account with at least Viewer access on that property
  • A log source connected for the same site

What stays the same

  • No tag, code or DNS changes
  • Your GA4 property settings and key events
  • Your log collection, which GA4 does not feed

Before you connect

  • GA4 properties only, one property per site
  • The Google account can differ from the one used for Search Console
  • GA4 data runs about a day behind: the sync runs nightly, and Sync now runs it on demand

Someone else manages your CDN or server? Send them a delegated setup link for the log source step. It is limited to this site, and they complete it without access to your Salience account.

How your Analytics and request data are handled

What Salience reads from GA4

  • Sessions, active users and engagement rate
  • Key events and revenue
  • Pageviews per day
  • Sources, mediums and landing pages

What it does not read

  • Visitor identifiers
  • IP addresses
  • Per-hit or per-event data
  • Anything it could change: access is read-only

Where it is processed

  • AWS eu-west-2 (London), with encrypted S3, DynamoDB and Aurora storage
  • A GDPR Article 28 DPA applies to every account
  • Never sold, used for advertising or shared between customers

Who controls it

  • Disconnect on the Google Analytics card removes the connection and its cached data
  • Revoking Salience's access in your Google account stops the sync
  • Your log analysis continues without GA4

Google Analytics questions

Does Salience replace Google Analytics?

No. GA4 is the source for sessions, engagement, key events and revenue, and Salience reads its report totals through the Google Analytics Data API. Salience adds every request your server answered, including the human visits GA4 did not record, and shows the two side by side for each landing page.

Do I need a log source as well?

Yes. GA4 is a connected source: it does not feed the request stream. Connect a log source first, from Cloudflare, Vercel, CloudFront, Netlify, Kinsta, Shopify, Apache or Nginx, then add GA4 as an optional step.

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 GA4 did not record. A gap of 15 to 40% is normal, depending on your audience and your consent set-up.

Why would GA4 miss a visit that is in my logs?

GA4 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 GA4 while the request stays in your logs. A sudden jump in the share usually means a tag or consent change.

What if my property uses consent mode?

With behavioural modelling on, GA4's sessions and key events include modelled estimates for visitors who declined consent. The unmeasured share uses GA4's reported pageviews as given, so modelled data narrows the gap without those visits having been observed.

How current is the GA4 data?

GA4 finalises each day after it ends, so its data runs about a day behind. The sync runs nightly and Sync now runs it on demand. The Google Analytics page ends on the latest complete day and states the lag; request data from your logs keeps arriving as your server answers.

Which properties can I connect?

GA4 properties only; Universal Analytics properties are not supported. Each site connects one property, with a Google account that has at least Viewer access on it. That account can be different from the one used for Search Console.

Google Analytics setup instructions

What does it cost?

The Free plan covers one website, 500,000 requests a month and 30 days of history, with no card. Paid plans start at $19 a month, each with a 14-day trial. Plans are priced on the requests your log source sends, and the GA4 connection adds no request volume.

Salience plans and pricing

Start comparing GA4 with your server logs for free.

The Free plan needs no card. Connect a log source first, then GA4 with a read-only Google sign-in.

Explore sample data