Docs / Publishing & integrations / Google Analytics 4

Connect Google Analytics 4

Search Console tells you what people search on Google. Analytics tells you what they did once they arrived. Connect a Google Analytics 4 property and AEO Spotlight adds on-site sessions and conversions per landing page, shown beside Google Search demand and beside our own AI-visibility measurement.

For site ownersFor agencies & SEO teams~5 minute setup

1 · What this integration does

This integration imports Google Analytics 4 page metrics over a rolling 28-day window and places them on the Search demand page, in the page-level table:

FieldWhat it isNotes
sessionsVisits to the landing page over the window.All channels — not search-only.
engagedSessionsSessions that were meaningfully engaged.Useful for separating bounces from real visits.
totalUsersDistinct users, as GA4 reports them.GA4's own definition, not a unique-visitor count.
keyEventsConversions/events your property marks as key.Whatever you have configured as a key event in GA4.

The page table is a juxtaposition, not a merge: the row is a landing page URL, and the Google Search columns sit beside the GA4 columns with a clear separator between them. The two are different instruments and are never added together.

2 · Before you start

  • You must have a Google Analytics 4 property that is collecting data for the site you care about.
  • Sign in with a Google account that can access that property. AEO Spotlight requests only read access to your Analytics data.
  • This is a separate connection from Search Console. A Search Console connection does not grant Analytics access, and the two are authorized independently.
  • Connect may be switched off on a self-hosted or fresh deployment; the app tells you clearly if it is — see Troubleshooting.

3 · Connect a property

1

Open your account menu and go to Connected data.

2

Find the Google Analytics 4 card and click Connect Google Analytics 4.

3

Your browser moves to Google's consent screen. Sign in with the Google account that can access the property, and approve the read-only access request.

4

You're returned to the app and a property picker lists the Analytics properties that account can access. Choose the property to connect.

5

The property appears as Connected on Connected data and is scheduled to import. You can also Run now to trigger the first import immediately — when it finishes, the page table appears on the Search demand page.

Security The connection uses Google OAuth (PKCE). Your access token is exchanged for a refresh token that is encrypted server-side — no token ever crosses the browser or our API responses, and only read-only Analytics scope is requested.

4 · What happens after connecting

  1. Imports run automatically on a schedule (and anytime you hit Run now). Each import pulls page metrics for the rolling 28-day window, matching the Search Console window.
  2. The metrics are joined to your search demand by landing-page URL, and rendered on the Search demand page's page table: URL · Google Search impressions/clicks · GA4 sessions/conversions · AI-cited?
  3. Each number carries a method chip — “Measured by Google” for Search Console, “Measured by GA4” for analytics — so an estimate can never be mistaken for a measurement.
The join is on the page URL, not the query GA4 does not expose the search term, so analytics numbers cannot be attached to a specific query. They attach to the landing page. A URL that does not match renders a blank cell rather than a guess.

5 · What this integration does not claim

  • No query attribution. GA4 does not tell us which search term drove a visit, so sessions are never shown against a query — only against a page.
  • All channels, not search-only. Sessions include direct, social, email and referral traffic, not just Google Search.
  • No causal link. Connecting Analytics does not cause — and cannot prove — a change in AI visibility. The two are shown side by side, never blended.
  • Thresholding and sampling. At low volumes, GA4 may sample or withhold rows, so small numbers can be approximate or absent.
  • A short lag. Analytics data typically arrives 24–48 hours after the fact, so the newest day or two is incomplete.

6 · Disconnecting a property

Disconnect is always available (it works regardless of the connect feature's state). Disconnecting revokes Google's access best-effort and removes the imported Analytics data locally.

From AEO Spotlight — open your account menu → Connected data, and use Disconnect this property on the Google Analytics 4 card. The page states what will be removed before you confirm it.

From Google's side — you can revoke this app's access at any time from your Google Account third-party access page. Imports stop as soon as Google rejects the next request.

7 · Troubleshooting & error codes

Message / codeWhat it means & what to do
ga4_connect_disabledThe Analytics connect surface isn't enabled on this deployment. Existing connected properties still work; you just can't start a new Google Analytics connect right now.
no_propertiesThe Google account you chose doesn't have any accessible Analytics properties. Check the property (and the account's access) in Google Analytics, then connect again.
access_deniedYou denied the Google authorization. Nothing was connected — start again any time.
invalid_stateThe connect attempt expired or was reused. Just start a fresh connect.
invalid_grant / token_exchange_failedGoogle didn't complete the token exchange (e.g. the grant was revoked or reused). Start the connect again.
Property status needs_reconnectGoogle revoked the token (or it expired). Use Reconnect to re-authorize.
Property status revoked / errorThe connection was removed or failed. Connect the property again (or remove it).

A property I expect isn't in the picker

The picker only shows properties the signed-in Google account can access. If it's missing, either sign in with an account that has access, or grant that account access to the property in Google Analytics and re-run the connect.

Connect is “not enabled on this deployment”

This integration is surfaced only when your deployment has the connect feature switched on (config flag + OAuth client + the Analytics APIs enabled on the Google Cloud project). If you see this and expected it to work, contact support — it's a platform configuration toggle, not something on your side.