ga4

google

ga4.

The Google Analytics accounts and GA4 properties this connector can read

add to otoauth : —prefix : ga4_*

setup & usage

⚠ un compte de service google, lecteur de la propriété GA4

l'accès passe par un compte de service Google, pas par ton compte Google : il lit GA4 sans que personne connecte son compte, et se coupe en lui retirant l'accès dans GA4. un administrateur le pose une fois pour toute l'org (instance d'org) ; chaque agent de l'org lit alors les mêmes propriétés, sans rien installer.

  • dans un projet Google Cloud, active « Google Analytics Data API » et « Google Analytics Admin API » (doc Google)
  • crée un compte de service, puis une clé JSON (doc Google) : c'est le fichier entier qu'on colle dans service_account_json, tel qu'il a été téléchargé
  • dans GA4, ajoute l'email du compte de service (…@….iam.gserviceaccount.com) comme Lecteur de chaque propriété à lire (doc Google)
  • « tester la connexion » appelle la liste des propriétés visibles : zéro propriété est un échec, pas un vert — c'est presque toujours l'étape GA4 qui manque
  • pas d'OAuth : le consentement d'un compte Google au scope analytics.readonly est bloqué par Google pour cette application
  • ▸ lire l'audience et les événements d'une propriété GA4

    lecture seule, rien n'est jamais écrit dans GA4.

  • « quelles propriétés peut-on lire ? » → ga4_properties() ; include_streams=true ajoute les flux (site, ID de mesure G-…)
  • « les événements des 30 derniers jours » → ga4_report(property="123456789", metrics=["eventCount"], dimensions=["eventName"], order_by=["-eventCount"]) — sans dates, la fenêtre est les 30 derniers jours complets (30daysAgo → yesterday)
  • « les sessions par canal en septembre » → ga4_report(…, metrics=["sessions"], dimensions=["sessionDefaultChannelGroup"], start_date="2026-09-01", end_date="2026-09-30")
  • filtre simple : dimension_filter={"country": ["France", "Belgique"]} (texte = égalité, liste = l'une des valeurs, combinés en ET) ; les autres opérateurs passent par une FilterExpression GA4
  • « qui est sur le site maintenant ? » → ga4_realtime(property=…, dimensions=["country"]) — pas de ligne = personne d'actif, pas une erreur
  • « quelles dimensions et métriques existent ? » → ga4_metadata(property=…), ou search="revenue" pour le détail d'une entrée ; à consulter dès qu'un rapport est refusé pour un nom invalide
  • « quelles conversions sont suivies ? » → ga4_key_events(property=…)
  • · lire un chiffre GA4 sans se tromper
  • les noms sont les noms d'API (activeUsers, sessionDefaultChannelGroup), pas les libellés de l'interface GA4 ; un nom invalide est refusé avec le message de Google qui le nomme
  • metadata dans la réponse d'un rapport porte les avertissements de GA4 : samplingMetadatas (chiffres échantillonnés), subjectToThresholding (petits effectifs masqués pour la confidentialité), dataLossFromOtherRow (valeurs rares regroupées en « (other) ») — à mentionner avec les chiffres
  • row_count est le total des lignes qui correspondent ; next_offset apparaît quand il en reste
  • un refus « n'a pas accès » nomme l'email du compte de service : c'est lui qu'il faut ajouter comme Lecteur de la propriété
  • ⚙ plusieurs comptes

    ce connecteur accepte plusieurs comptes : chaque credential posé devient un compte nommé (un nom par compte), à ton niveau, à celui de ton équipe ou de ton org.

  • le premier n'a pas besoin de nom ; à partir du deuxième, chacun porte le sien (le premier prend alors le nom « principal », renommable)
  • sans précision, l'agent prend le seul compte posé, sinon celui marqué par défaut ; sinon l'appel est refusé en nommant les comptes disponibles — jamais un choix au hasard
  • viser un compte pour un appel : _account="<nom>" sur l'outil ; les lister : oto_identity(op='list', connector='google_analytics') (scope='org' ou scope='group' pour ceux de l'org ou de l'équipe)
  • fixer le défaut : oto_identity(op='set', connector='google_analytics', identity_id='<nom>') ; renommer : op='rename' avec new_name
  • ⚠️ aucun outil ne parcourt les comptes tout seul : un total sur plusieurs comptes s'obtient en appelant chacun (_account) et en additionnant
  • outils

    chargement…

    usage

    claude code — install the oto plugin — claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.
    claude.ai — add mcp.oto.cx/mcp as a custom connector (guide)
    cli — pipx install oto-cli then oto ga4 …