Skip to main content
Glama

GSCPAP - Google Search Console, GA4, PageSpeed Insights & live SERPs MCP

Join Search Console pages to GA4

correlate_gsc_to_ga4
Read-only

Per page: Google Search clicks (Search Console) next to what those visits did on the site (GA4 sessions, key events, revenue).

Answers questions like "which pages bring search clicks AND convert?" or "which top-ranking pages get zero conversions?". Takes the top pages by Search Console clicks and attaches GA4 numbers for the same pages over the same dates.

What the GA4 numbers count: sessions that STARTED on the page (GA4 landingPage) and came from Google organic search (sessionSource "google" AND sessionMedium "organic"). ga4_conversions, ga4_revenue and ga4_engagement_rate belong to those same sessions, so a key event counts even if it happened on a later page of the visit. ga4_conversions is the number of GA4 key events, not of converting sessions, so it can exceed ga4_sessions. Every row carries ga4_scope saying what GA4 counted.

Why this scope: a Search Console click is a click on a Google result that lands on the page, so the GA4 side has to be landing sessions from Google. Counting every session that viewed the page (pagePath) mixes in all channels and internal navigation, and inflates GA4 far above GSC. The filter is google / organic rather than the "Organic Search" channel group because that group also includes Bing, Yandex, DuckDuckGo and others, which Search Console never counts.

Do not expect ga4_sessions to equal gsc_clicks. GA4 is usually lower: visitors who block analytics or decline consent, and visits that leave before the tag loads, are clicks with no session; visits whose referrer is lost are filed under (direct) / (none), not google / organic; several clicks within one visit are one session. GA4 can be higher where its google / organic includes Google Images or Discover visits, which Search Console's web numbers leave out. Per page, Search Console credits a click to the canonical URL while GA4 records the URL actually opened, so duplicates, redirects and language variants move numbers between rows. Search Console dates are Pacific Time, GA4 uses the property's time zone. Use the numbers to compare pages, not to expect a 1:1 match.

Page matching: joined on (host, path). The Search Console URL's host and path are compared to GA4 hostName + landingPage, with lowercase host, percent-decoding, trailing slash ignored ("/foo" and "/foo/" are the same page) and no query string (GA4 landingPage never has one). Search Console URLs that fall on the same key (http and https, "/foo" and "/foo/", query string variants) are merged into one row: clicks and impressions summed, position impression-weighted, and the merged URLs listed in gsc_urls. Hosts stay separate, so a subdomain of an sc-domain property is not credited with the main domain's numbers; one GA4 has no data for gets 0.

Input Schema

NameRequiredDescriptionDefault
daysNolookback window, default 28. The window ends 2 days ago (Search Console lag) and is the same for both sides.
limitNomax pages to return, default 30
site_urlYesSearch Console property (must be authorized)
property_idYesGA4 property id (must point at the same site)

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld/non-destructive; the description goes far beyond by disclosing the exact GA4 filter (landingPage + sessionSource google AND sessionMedium organic), why the channel group is not used, that ga4_conversions can exceed ga4_sessions, and that gsc_clicks will not equal ga4_sessions for stated reasons. These are interpretation-critical behaviors no annotation could carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long, but for a two-source join most paragraphs earn their place, and the summary sentence is front-loaded before the scoping and caveat sections. Minor deductions for a garbled trailing clause ("one GA4 has no data for gets 0") and some restatement of the GA4-vs-GSC mismatch point across paragraphs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex cross-source join with four parameters, it covers the scope definition, join key and normalization rules, URL merging behavior, host separation, time zone mismatch and null handling. An output schema exists, yet the description still clarifies key row fields like ga4_scope and gsc_urls, leaving nothing an agent needs unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: `limit` applies to top pages ranked by Search Console clicks, and both sides use the same date window (including the Search Console lag). It does not discuss site_url/property_id alignment beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb and resource pair — Google Search clicks per page joined to GA4 sessions, key events and revenue — and immediately frames it as a per-page join. This is distinguishable from siblings like ga4_top_pages or get_search_by_page_query because it explicitly combines both data sources rather than reporting one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete example questions the tool answers ("which pages bring search clicks AND convert?", "which top-ranking pages get zero conversions?") and explains it takes top pages by Search Console clicks. It never explicitly names an alternative sibling or a when-not-to-use condition, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.