AI workers for Google Analytics
Ready-made AI workers for Google Analytics: weekly traffic readings, the channel that moved, and event data explained, on the properties you scope them to.
- Authority & Links Report
Writes a weekly report on your site's authority, backlinks, search traffic and where you stand against competitors.
- Daily Funnel Drop Watch
Reads yesterday's funnel in Google Analytics every morning, compares each step with the week before, and says which step dropped past your threshold and where the drop came from.
- Campaign Measurement Review
Explains campaign performance changes with comparable metrics and explicit data limitations.
- Campaign Learning Workflow
Combines campaign results and the campaign brief into a testable learning plan.
- Landing Page Outcome Review
Reviews whether selected landing pages produce the intended site outcomes.
- Search Conversion Opportunity Workflow
Connects search demand and landing-page outcomes to propose specific content improvements.
What is an AI worker for Google Analytics?
An AI worker for Google Analytics is an AI agent scoped to one reporting job on your GA4 properties, such as reading last week's traffic against the week before, or explaining which channel moved a key event. It reads through the Google account you have already connected, the same one that may serve Gmail, Drive or Search Console, narrowed to the properties you scope it to. This is a read-only surface, so a worker here explains what happened and changes nothing in the account.
What these workers do
Read the week in traffic and conversions
Compares the period against the one before it and names the channels, landing pages, and key events that moved, in both directions, rather than reporting a total.
Explain a decline before the monthly review
Watches sessions and key events for the falls worth investigating and reports where they came from, while the cause is still recent enough to identify.
Follow a launch after it ships
Tracks the pages, campaigns, and events tied to a release over the days after it goes out, so whether it worked is a question with an answer.
Answer product questions from event data
Groups by event name and custom event dimensions to say how often a feature is genuinely used, instead of inferring it from page views.
Check what is happening right now
Reads the realtime window during a send or a launch, so somebody knows whether the traffic arrived without watching a dashboard for an hour.
How an AI worker runs in Google Analytics
Reading, not acting
Movement, not totals
Events are first-class
Honest about the days and the gaps
Google Analytics questions, answered.
Can an AI worker change anything in Google Analytics?
No. There is no write path on this connection at all, by design. A worker can run reports and read the definitions behind them, and nothing it does can edit a property, create or alter a data stream, redefine a key event, or change a single row of collected data. Configuration stays a human decision made in the Google Analytics interface, and the worst a mistaken run can produce here is a report somebody disagrees with.
Which Google Analytics properties can it read?
Only the ones you scope it to, and nothing is in scope until you put it there. A worker is granted specific GA4 properties, or all of them if you choose that deliberately, and a property left out is invisible to it in listings as well as in reports. Accounts commonly hold properties for several brands, a staging site, and a client or two, so each job can have its own worker without any of them reading the others.
Can it export our raw event data?
No. What it reads is aggregated reporting, the numbers Google computes for a set of dimensions and metrics over a date range, not the underlying event-level rows. Raw event export is the BigQuery export, a separate integration with its own connection and its own permissions, and nothing here reaches it. Audience exports sit outside this connection too.
How current is the data it reports?
Standard reports read what Google has processed, which settles over a day or two as its own reporting does, and a realtime report covers roughly the last half hour for the moments when that is the question. A scheduled worker comparing settled periods is not distorted by the lag, and every report states the exact range it resolved, in the property's reporting timezone rather than the reader's.
What happens when Google withholds data for privacy?
The report says so instead of pretending otherwise. Google applies thresholding to rows that could identify an individual, typically on small segments or where demographics and signals are involved, and the response carries that flag through rather than returning a shortfall as if it were the full count. A worker reports a thresholded figure as incomplete, so nobody decides on a number that quietly left rows out.
What AI workers can do in Google Analytics
The tools a worker can be granted in Google Analytics once you connect it. A kit grants only the ones its job needs, and you can narrow them further on the worker.
List Properties
List the GA4 properties the connected Google account(s) can access, flattened to accountId, accountName, propertyId, and displayName. Use `propertyId` (a bare numeric id like '123456') for every other analytics tool. An empty `properties` list with a non-null `accessInfo` means a token rule limited the results, not that no properties exist; render `accessInfo` verbatim.
Get Property
Get one GA4 property's detail: displayName, the reporting `timeZone` (the zone reports and relative dates resolve in), `currencyCode` for monetary metrics, industry, and service level. Create/update times also carry `createTimeLocal`/`updateTimeLocal` siblings in that zone.
Run Report
Run a GA4 report over a date range: up to 10 metrics grouped by up to 9 dimensions, with an optional flat-AND `dimensionFilter`, `orderBys`, and `limit`/`offset` paging. `startDate`/`endDate` accept 'yyyy-MM-dd' or the relative literals 'today', 'yesterday', 'NdaysAgo', resolved in the property's own time zone; the response echoes `resolvedDateRange` and `timeZone`. Event data example: dimensions ['eventName'] with metrics ['eventCount','eventValue'] (event-scoped custom dimensions appear as customEvent:* in analytics_get_metadata). The `date` dimension comes back as YYYYMMDD; metric values are strings; when `subjectToThresholding` is true Google hid some rows for privacy, so totals may under-count. Render `accessInfo` verbatim.
Run Realtime Report
Run a GA4 realtime report over roughly the last 30 minutes: up to 10 realtime metrics (e.g. 'activeUsers', 'eventCount') grouped by up to 9 realtime dimensions (e.g. 'eventName', 'country', 'unifiedScreenName'). The realtime surface accepts a smaller dimension/metric set than regular reports. The response `timeZone` echoes the property's reporting zone. Render `accessInfo` verbatim.
Get Metadata
List the dimension and metric catalog for a GA4 property, including event-scoped custom definitions (customEvent:*) and custom user properties (customUser:*) — the names analytics_run_report accepts. Pass `filter` (substring on apiName/uiName) and `kind` ('dimensions', 'metrics', or 'all') to narrow: the unfiltered catalog is roughly 200 dimensions and 100 metrics, and descriptions are only included when 50 or fewer entries match. Render `accessInfo` verbatim.
Check Compatibility
Check which dimensions and metrics can be combined in one GA4 report before running it — the fix for 'Invalid report request' errors about incompatible fields. Pass the draft report's dimensions/metrics/filter; `compatibilityFilter` defaults to 'incompatible' (returns only the conflicting fields); pass 'compatible' to list everything that can still be added (large). Render `accessInfo` verbatim.
Traffic Report
Where traffic came from and how much of it there was: sessions, activeUsers, engagedSessions, engagementRate, eventCount, keyEvents and totalRevenue, grouped by acquisition channel. This is the GA4 'Traffic acquisition' report (scope=session) and 'User acquisition' report (scope=firstUser), so the figures reconcile with the customer's Analytics UI. Zero arguments answers 'how did the site do' for the last 28 days; add compareTo=previous_period for the change. Render accessInfo verbatim.
Pages Report
Which pages got traffic. view=pages is GA's 'Pages and screens' (screenPageViews, activeUsers, eventCount, keyEvents, totalRevenue by page path); view=landing is GA's 'Landing page' report (sessions, activeUsers, newUsers, keyEvents, totalRevenue by entry page) — a different question, so it carries a different metric set. Use pathContains to scope to a section, e.g. '/blog/'. Render accessInfo verbatim.
Events Report
Which events fired and how often: eventCount, totalUsers, eventCountPerUser, eventValue and totalRevenue per eventName — GA's 'Events' report. Defaults to the last 28 days ranked by eventCount, so a bare call is 'what is my site doing'. Two recipes worth knowing: keyEventsOnly=true answers 'are conversions up'; compareTo=previous_period surfaces an event that just started firing, as a row whose earlier total is 0. Add granularity=day to see whether an event is still firing. Render accessInfo verbatim.
Event Detail Report
One event, broken down by any dimension: eventCount, totalUsers and eventValue for the named event grouped by whatever you pass as breakdown. This is the drill-down GA makes hardest — the breakdown accepts event-scoped custom parameters as customEvent:<parameter> (list them with analytics_get_metadata, e.g. customEvent:method for a sign_up event). Defaults to breaking down by pagePath. Render accessInfo verbatim.
Audience Report
Who the visitors are and what they use: activeUsers, newUsers, engagedSessions, engagementRate, eventCount, keyEvents and totalRevenue, grouped by geography, language, demographics or technology. Covers GA's 'Demographic details' and 'Tech details' reports, which share one metric set and differ only in the dimension. age and gender need Google Signals enabled on the property; without it they report '(not set)' rather than failing. Render accessInfo verbatim.
Revenue Report
Ecommerce performance as Analytics measured it. view=items is GA's 'Ecommerce purchases' (itemsViewed, itemsAddedToCart, itemsPurchased, itemRevenue per product) — the funnel from view to purchase. view=summary is the money headline (totalRevenue, purchaseRevenue, transactions, averagePurchaseRevenue), optionally split by channel. Item-scoped and purchase-scoped metrics cannot be combined in one GA report, which is why view separates them. Note this is Analytics' session-attributed view of revenue and will not tie out exactly to a store's own order records, which are the system of record. Render accessInfo verbatim.
Ads Performance Report
Paid performance including return on ad spend: advertiserAdCost, advertiserAdCostPerKeyEvent, keyEvents, totalRevenue and returnOnAdSpend by channel, source or campaign — GA's Advertising 'All channels' report. Cost and ROAS are populated only when a Google Ads account is linked to the property in Analytics; without that link the metrics are zero rather than missing, and accessInfo says so. Render accessInfo verbatim.
Realtime Snapshot
What is happening on the site right now: users active in the last ~30 minutes, plus top realtime breakdowns in the same call. The realtime schema is much smaller than the reporting one — there is no page path, so 'pages' is the unified screen name, and only activeUsers/eventCount are reported per row. Each breakdown costs an upstream query, so ask only for what you need. Render accessInfo verbatim.