ga4.
The Google Analytics accounts and GA4 properties this connector can read
setup & usage
⚠ a google service account, viewer of the GA4 property
access goes through a Google service account, not your Google account: it reads GA4 without anyone connecting their account, and is cut off by removing its access in GA4. an administrator sets it up once for the whole org (org instance); every agent in the org then reads the same properties, with nothing to install.
service_account_json, exactly as downloaded…@….iam.gserviceaccount.com) as a Viewer of each property to read (Google docs)analytics.readonly scope is blocked by Google for this application▸ read a GA4 property's audience and events
read-only, nothing is ever written to GA4.
ga4_properties(); include_streams=true adds the streams (website, measurement ID G-…)ga4_report(property="123456789", metrics=["eventCount"], dimensions=["eventName"], order_by=["-eventCount"]) — without dates, the window is the last 30 full days (30daysAgo → yesterday)ga4_report(…, metrics=["sessions"], dimensions=["sessionDefaultChannelGroup"], start_date="2026-09-01", end_date="2026-09-30")dimension_filter={"country": ["France", "Belgique"]} (text = equality, list = any of the values, combined with AND); other operators go through a GA4 FilterExpressionga4_realtime(property=…, dimensions=["country"]) — no rows = nobody active, not an errorga4_metadata(property=…), or search="revenue" for the detail of one entry; to consult as soon as a report is refused for an invalid namega4_key_events(property=…)· read a GA4 figure without getting it wrong
activeUsers, sessionDefaultChannelGroup), not the labels of the GA4 interface; an invalid name is refused with Google's message naming itmetadata in a report's response carries GA4's warnings: samplingMetadatas (sampled figures), subjectToThresholding (small counts hidden for privacy), dataLossFromOtherRow (rare values grouped into "(other)") — to mention alongside the figuresrow_count is the total of matching rows; next_offset appears when more remain⚙ multiple comptes
this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='google_analytics') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='google_analytics', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
chargement…
utilisation
claude code — installe le plugin oto —
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.cli —
pipx install oto-cli puis oto ga4 …