GrowReach — Unified Data Access: GSC / GA4 / GTM for the CRO Agent

Date: August 17, 2026 Author: CRO Agent (GrowReach) Question: What’s the best way to give the CRO agent access to Google Search Console, Google Analytics, and Google Tag Manager — so all data lands in one place for correlation, analysis, reporting, and decisions?


1. Executive Summary

QuestionAnswer
Is there an MCP/CLI for Google products?Yes. Composio (already connected) has google_search_console and google_analytics toolkits. GSC is already connected and verified working. GA4 needs a one-click OAuth connect. GTM has no analytics API (it’s config, not data — see §4).
Can Google data be pulled into PostHog?Yes. PostHog Data Warehouse has native Google Analytics and Google Search Console sources (daily sync, OAuth). Currently none are connected in your project.
What’s the recommended architecture?Both, layered: ① PostHog Data Warehouse sources (GA4 + GSC) = unified correlated analysis in one place. ② Composio MCP = on-demand real-time queries + reporting.
What does Rahul need to do?~10 minutes of OAuth clicks. Connect GA4 in Composio + link GA4 & GSC sources in PostHog. GSC is already done.

2. What’s Already Working (verified today)

Access pathStatusProof
PostHog MCP (eu.posthog.com, project 136693)✅ ActiveAll CRO analysis runs through this
Composio → Google Search ConsoleACTIVEVerified: sc-domain:growreach.app + https://growreach.app/ both listed as siteOwner. Live query returned real data: 88–182 impressions/day, avg position 47–61, 0 clicks (Aug 10–14, 2026)
Composio → Google Analytics⚠️ Toolkit exists, no connection yetGOOGLE_ANALYTICS_RUN_REPORT, BATCH_RUN_REPORTS, GET_METADATA, LIST_PROPERTIES available — needs OAuth
PostHog Data Warehouse⚠️ No sources connectedsystem.information_schema.tables WHERE table_type='data_warehouse' returns empty

3. The Three Options Compared

OptionHow it worksSetup effortData freshnessBest for
A. PostHog Data Warehouse sources (recommended primary)Native GA4 + GSC connectors sync daily into PostHog’s warehouse; query with HogQL alongside events~15 min OAuth (Rahul)DailyCorrelated analysis: “signups by organic query”, “bounce by landing page + GSC position” — everything in 1 SQL
B. Composio MCP direct access (recommended on-demand)Agent calls GA4 Data API / GSC API live via MCPGSC: done ✅ / GA4: ~5 min OAuthReal-timeSpot queries, ad-hoc reports, quick answers in chat
C. Google Sheets export pipelineScript pulls GA4/GSC → Sheets, agent reads via gwsMedium (scripting + scheduling)Depends on scheduleOnly if you want human-editable data; not needed here

Recommendation: A + B together. A gives you the “one place to correlate” — GA4, GSC, and PostHog event data queryable in a single SQL statement. B gives you instant access without waiting for daily syncs. Skip C entirely.


4. What About Google Tag Manager?

GTM is configuration, not analytics data. It doesn’t collect anything — it fires tags (GA4, pixels) that collect data elsewhere. There is no meaningful “GTM data” to query, which is why neither PostHog nor Composio offers a GTM analytics source.

What people mean by “GTM access”What it actually isHow the CRO agent gets it
”What tags are deployed?”GTM container config (GTM-MQDVLQ6P)Read the live site’s HTML (done — see pixel guide) or Rahul screenshots the container
”Are tags firing correctly?”Tag health / Preview modeGA4 DebugView + browser console + Tag Assistant
”What data do tags send?”GA4 events, pixel eventsPostHog + GA4 (once connected)

Bottom line: GTM itself never needs to be connected. Its output (GA4 data, pixel data) is what matters, and that flows through options A and B.


                        ┌──────────────────────────────────────┐
                        │         growreach.app (browser)       │
                        │  PostHog JS + GTM → GA4 + pixels      │
                        └──────────────┬───────────────────────┘
                                       │
              ┌────────────────────────┼────────────────────────┐
              ▼                        ▼                        ▼
   ┌────────────────────┐   ┌────────────────────┐   ┌────────────────────┐
   │  PostHog (EU)      │   │  GA4 G-2DSCDB28FB  │   │  GSC growreach.app │
   │  events, persons,  │   │  (via Composio MCP │   │  (via Composio MCP │
   │  sessions, replay  │   │   OR PostHog src)  │   │   OR PostHog src)  │
   └─────────┬──────────┘   └─────────┬──────────┘   └─────────┬──────────┘
             │                        │                        │
             └──────────┬─────────────┴─────────────┬──────────┘
                        ▼                          ▼
        ┌───────────────────────────┐  ┌───────────────────────────┐
        │  POSTHOG DATA WAREHOUSE   │  │  COMPOSIO MCP (agent)     │
        │  GA4 source + GSC source  │  │  GOOGLE_ANALYTICS_RUN_…   │
        │  = unified HogQL queries  │  │  GOOGLE_SEARCH_CONSOLE_…  │
        │  across all data          │  │  = real-time spot queries │
        └───────────────────────────┘  └───────────────────────────┘

6. Setup Steps for Rahul (~15 minutes total)

Step 1 — Connect GA4 in Composio (5 min) — gives the agent real-time GA4 access

  1. Nothing to install — the toolkit exists. Rahul needs to authorize one connection:
    • In Composio dashboard → ConnectionsGoogle AnalyticsConnect
    • Sign in with the Google account that owns GA4 (3rd.rahul@gmail.com presumably)
  2. Agent can then run GOOGLE_ANALYTICS_RUN_REPORT with property: properties/<numeric GA4 property ID>
  3. Find the numeric Property ID: GA4 → Admin → Property settings → Property details (NOT G-2DSCDB28FB — that’s the Measurement ID)

✅ GSC is already connected — no action needed there.

In PostHog (eu.posthog.com → project 136693):

  1. Data pipeline → Sources tab → + New source
  2. Google Analytics → Link → sign in with Google → enter the numeric Property ID → select tables:
    • website_overview, traffic_sources, campaigns, landing_pages, pages, key_events, events, devices, locations, user_acquisition, daily/weekly/four_weekly_active_users
  3. Google Search Console → Link → sign in → select property (sc-domain:growreach.app) → select tables:
    • search_analytics_by_date, _by_query, _by_page, _by_country, _by_device, _by_query_page, _by_search_appearance
  4. Sync frequency: daily incremental (default) — GSC data lags 2–3 days anyway; GA4 daily is plenty for correlation
  5. Docs: https://posthog.com/docs/cdp/sources/google-analytics · https://posthog.com/docs/cdp/sources/google-search-console

Step 3 — (Optional) Verify

Agent runs a test HogQL join to confirm both sources landed.


7. What This Unlocks (example correlated queries once Step 2 is done)

QuestionHow it’s answered
”Which organic queries drive signups?”Join search_analytics_by_query ↔ PostHog user_signed_up events by landing page/date
”Do high-impression pages convert better?”Join search_analytics_by_page ↔ PostHog $pageview → funnel by page
”Is the GA4 traffic story consistent with PostHog?”Compare website_overview (GA4) vs query-web-overview (PostHog) — flag discrepancies
”Which campaigns bring the best users?”campaigns table (GA4) ↔ PostHog signup/retention events
”Real-time: what are our top queries right now?”Composio GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY (already works)
“Real-time: 7-day acquisition by source?”Composio GOOGLE_ANALYTICS_RUN_REPORT (after Step 1)

8. Caveats & Notes

CaveatDetail
GA4 source is alpha in PostHogInterface/tables may change; docs recommend the wizard for auto-setup
GA4 source needs numeric Property IDMeasurement ID (G-2DSCDB28FB) and UA IDs won’t work — must be the numeric one from Admin → Property settings
GSC API caps ~50K rows/property/date/dimension-setLong-tail queries/pages can be dropped above the cap; acceptable at GrowReach’s traffic level (88–182 impressions/day)
GA4 Data API limitsMax 9 dimensions + 10 metrics per report call; metric values come back as strings
Consent/privacyBoth paths are read-only analytics scopes (analytics.readonly) — no PII exposure, no write access
PostHog source sync = daily, not real-timeUse Composio MCP for anything fresher than 24h
Data lagsGSC data lags 2–3 days by Google’s design — normal


10. One-Line Ask for Rahul

“Give me ~15 minutes: (1) connect Google Analytics in Composio, (2) link Google Analytics + Search Console as PostHog data warehouse sources. GSC via Composio is already done and verified. Then I can correlate organic search, GA4 traffic, and product events in one place and pull real-time numbers on demand.”