# Pages

`ga4_pages` · Google Analytics MCP tool · Content

Pages report. dimension "landingPage" (default; entry pages that rank) or "pagePath" (any page viewed). sort "sessions" (default) or "bounceRate" (high-bounce pages, with a minSessions floor). Scope with organicOnly (default true) or channelFilter. Each row's key-event total is broken into its top key events so you can see what converted. Run ga4_list-properties first if you don't have a property ID.

## Google Analytics Frequently Asked Questions

**What does the Pages tool do?**

This page documents the Pages tool (`ga4_pages`). Pages report. dimension "landingPage" (default; entry pages that rank) or "pagePath" (any page viewed). sort "sessions" (default) or "bounceRate" (high-bounce pages, with a minSessions floor). Scope with organicOnly (default true) or channelFilter. Each row's key-event total is broken into its top key events so you can see what converted. Run ga4_list-properties first if you don't have a property ID. It is one of the Google Analytics Content tools, invoked through your firm's Weave MCP connection and available to members whose access level permits it.

**Why is pages slow?**

The partner reports second-by-second per row, so a full report can run close to two minutes; this tool never retries internally on failure.

**How does sorting by bounceRate work?**

It applies a minSessions floor (20 by default) to filter out low-volume noise before ranking, since a page with one bounced session would otherwise look like the worst offender.

**What is the Google Analytics integration?**

The Google Analytics integration connects your firm's Google Analytics account to Weave. Google Analytics is Google's web and app analytics platform. This integration lets your AI workflows read that data, properties, audience and engagement metrics, and traffic sources, for the properties your connected Google account can access. It groups 11 tools into 5 categories, exposed through your firm's Weave MCP connection and filtered per member by access level.

**How does my firm connect Google Analytics to Weave?**

An admin authorizes a Google account with access to your GA4 properties once, via Google's OAuth consent flow in the Weave console. Every firm member then works through that single connection, there is no per-member Google sign-in.

**Can these tools change anything in Google Analytics?**

No. Every ga4 tool is read-only reporting, none of them can edit a property, change tracking configuration, or modify GA4 data.

**Do I need to specify a property every time?**

Yes, run ga4_list-properties first to get the numeric propertyId for the account/property you want; every other ga4 tool requires it.

**What does organicOnly mean on these reports?**

Most tools default to organicOnly: true, scoping the report to organic search traffic; widen the scope with organicOnly: false, or narrow it further with a channelFilter where the tool supports one.

## Related
- /integrations/ga4/content/breakdown/
- /integrations/ga4/conversions/key-events/
- /integrations/gsc/search-analytics/get-search-by-page-query/

## Input

- **propertyId** `string` (required, pattern: ^\d{1,15}$) — Numeric GA4 property ID (e.g. "123456789"). Get it from ga4_list-properties if you don't have one.
- **startDate** `string` (min length: 1, max length: 30) — Window start. "30daysAgo" or YYYY-MM-DD. Defaults to "30daysAgo" when omitted.
- **endDate** `string` (min length: 1, max length: 30) — Window end. "today" or YYYY-MM-DD. Defaults to "today" when omitted.
- **dimension** `string` (enum: "landingPage", "pagePath") — What to key each row by. "landingPage" (entry pages that rank — the SEO-true default) or "pagePath" (any page viewed). Defaults to "landingPage" when omitted.
- **sort** `string` (enum: "sessions", "bounceRate") — Ranking to apply. "sessions" (default) or "bounceRate" (high-bounce pages, with a minSessions floor).
- **organicOnly** `boolean` — Organic Search only. Defaults to true when neither this nor channelFilter is set. organicOnly:true is mutually exclusive with channelFilter (organicOnly:false may be combined with channelFilter).
- **channelFilter** `string` (min length: 1) — Scope to one channel, e.g. "Paid Search" or "Organic Social".
- **minSessions** `integer` (>= 0, <= 10000) — Minimum sessions per row when sorting by bounceRate — filters out low-volume noise. Defaults to 20 when omitted.
- **limit** `integer` (>= 1, <= 100) — Max rows to return (up to 100). Defaults to 25 when omitted.

## Output

- **propertyId** `string` (required) — The GA4 property this data came from, as a bare numeric id.
- **startDate** `string` (required) — Window start, echoing the request ("YYYY-MM-DD" or a relative form).
- **endDate** `string` (required) — Window end, echoing the request.
- **scope** `string` (required) — Traffic scope applied — "Organic Search" when organicOnly is true (the default), "All Traffic" when false, or the requested channel when channelFilter is set.
- **dimension** `string` (required) — What each row is keyed by. Known values: "landingPage" (SEO-true default — attributes a session to its entry page), "pagePath" (any page viewed).
- **sort** `string` (required) — Ranking applied. Known values: "sessions" (default), "bounceRate".
- **minSessions** `number | null` (required) — The sessions floor applied before ranking. Only set when sorting by bounceRate, where low-volume rows are noise. null otherwise.
- **rows** `array` (required) — Pages ranked as requested. Empty when the window has no data.
  - **[]** `object`
    - **page** `string` (required) — Landing page or page path.
    - **sessions** `number` (required) — Sessions.
    - **views** `number` (required) — Screen page views.
    - **bounceRate** `number` (required) — Non-engaged sessions as a percentage (0-100). The inverse of engagement rate.
    - **engagementRate** `number` (required) — Engaged sessions as a percentage (0-100).
    - **avgSessionDurationSeconds** `number` (required) — Average engagement time per session, in seconds.
    - **keyEvents** `number` (required) — Key events (GA4 conversions).
    - **topKeyEvents** `array` (required) — Top contributing key events for this row, biggest first. Empty when there are none.
      - **[]** `object`
        - **eventName** `string` (required) — GA4 event name.
        - **count** `number` (required) — Key events of this name attributed to the row.
- **notSetExcluded** `boolean` (required) — True when unattributable "(not set)" or blank paths were dropped from the ranking. They are redirects, app deep-links and consent bounces, never a real page.
