Import aus Google Analytics 4

Zwei Wege, Ihre GA4-Zahlen hierher zu holen: Tagessummen fuer die Frage, wie viel MousePlayer ueberhaupt sieht - und einzelne GA4-Sitzungen aus dem BigQuery-Export fuer die Besuche, die wir nicht aufzeichnen konnten.

1. Was hereinkommt, und was nicht

Beide Wege lesen aus Ihrem Google-Konto und schalten sich einzeln ein. Sie beantworten verschiedene Fragen, und Sie brauchen nicht beide.

WegWas er holtWofuer
Data APITagessummen: Sitzungen, Nutzer, Seitenaufrufe, aktive SitzungenDie Deckungsfrage. GA4 zaehlt 3.000 Sitzungen, MousePlayer hat 40 aufgezeichnet - ohne die Bezugsgroesse laesst sich der Unterschied nicht einmal bemerken.
BigQuery-ImportEinzelne GA4-Sitzungen mit ihren EreignissenWas in einem Besuch geschah, den MousePlayer nicht aufzeichnen konnte.

Eine importierte Sitzung laesst sich nicht abspielen. GA4 fuehrt kein Abbild der Seite und keine Mausbewegungen; es gibt also nichts, woraus sich eine Wiedergabe bauen liesse. Was Sie bekommen, sind Zahlen und Ereignisse neben Ihren Aufzeichnungen - nicht mehr, und wir stellen es auch nicht so dar.

Der Import liegt in eigenen Tabellen und wird nie unter Ihre Aufzeichnungen gemischt. Sonst aendert sich stillschweigend die Bedeutung jeder abgeleiteten Zahl - der Verhaltensprofile, der Besucherbewertung, der Frustrationsauswertung -, und niemand koennte hinterher sagen, welche Zeile gemessen und welche geholt war.

2. Weg 1: Data API

Sie brauchen zwei Angaben: die Property-ID und einen Dienstkonto-Schluessel.

Die Property-ID ist nicht die Mess-ID

Das ist der haeufigste Fehlversuch, und Googles eigene Fehlermeldung nennt ihn nicht. Die Mess-ID sieht aus wie G-ABC123XYZ, steht in Ihrem Einbaucode und ist ueberall sichtbar. Die Property-ID ist rein numerisch und steht nur in der Verwaltung, unter Verwaltung, Property-Einstellungen. Gebraucht wird die zweite; die erste weisen wir mit einem Hinweis ab, statt Sie in einen 400er laufen zu lassen.

Dienstkonto anlegen und berechtigen

  • In der Google Cloud Console ein Dienstkonto anlegen und einen JSON-Schluessel erzeugen.
  • Im selben Projekt die Google Analytics Data API aktivieren.
  • In GA4 unter Verwaltung, Property-Zugriffsverwaltung die E-Mail-Adresse des Dienstkontos als Betrachter eintragen. Ein Dienstkonto ist ein eigener Nutzer; ohne diesen Schritt antwortet Google mit 403, und zwar ohne zu sagen warum.

Den Inhalt der JSON-Datei fuegen Sie in das Feld ein. Er wird verschluesselt gespeichert und danach nur noch verkuerzt angezeigt.

3. Weg 2: BigQuery-Import

Dieser Weg liest den GA4-Rohdatenexport. Den muessen Sie in GA4 einmal einrichten: Verwaltung, BigQuery-Verknuepfung. Tabellen entstehen erst ab dem Tag danach - vorher findet der Import nichts, und das ist kein Fehler.

Was Sie eintragen

  • Die GCP-Projekt-ID, in der der Export liegt. Das ist nicht zwingend dasselbe Projekt, in das Sie MousePlayer-Daten exportieren.
  • Die Dataset-ID. GA4 nennt sie analytics_<propertyId>.
  • Einen Dienstkonto-Schluessel mit BigQuery Data Viewer auf dem Dataset und BigQuery Job User im Projekt. Nur lesen genuegt; mehr geben Sie bitte nicht.

Was es kostet, und wer es zahlt

BigQuery rechnet nach gelesenen Bytes ab, und die Rechnung geht an Sie. Deshalb liest der Import je Lauf nur wenige Tage und nur eine einzige Abfrage - eine zweite laese dieselben Tabellen ein zweites Mal. Zusaetzlich bricht ein fester Deckel die Abfrage ab, bevor sie teuer wird; passiert das, sagt die Meldung im Zustellprotokoll, dass das Zeitfenster zu gross ist.

Der Takt

Standardmaessig alle sechs Stunden, und jeder Lauf holt die letzten drei Tage neu. Das ist kein Zufall: GA4 schreibt bis zu 48 Stunden nach, und der Tagesexport erscheint erst am Folgetag. Wer haeufiger fragt, bekommt nicht frischere Zahlen, sondern dieselben.

4. Der Schluessel, der beide Seiten verbindet

Wenn Sie zusaetzlich die Analytics-Bruecke auf GA4 stellen, schreibt MousePlayer die client_id aus dem _ga-Cookie zu jeder Sitzung mit. Genau dieser Wert steht im BigQuery-Export als user_pseudo_id.

Damit laesst sich eine GA4-Sitzung einer Ihrer Aufzeichnungen zuordnen - und umgekehrt sehen Sie zu einer Aufzeichnung, was GA4 im selben Besuch gezaehlt hat. Ohne die Bruecke bleiben beide Seiten nebeneinander stehen, ohne Verbindung.

Dasselbe Feld traegt auch Ihre eigene Kundenkennung, wenn Sie setUserId() benutzen. Beides zugleich geht nicht: entweder steht dort die client_id von Google oder Ihre eigene Nummer.

5. Einwilligung, Aufbewahrung, Loeschung

Was hereinkommt, hat ein Cookie gehabt

Importiert wird nur, was eine user_pseudo_id traegt. Lehnt ein Besucher ab, schickt GA4 im Consent Mode cookielose Treffer, und die tragen keine - sie fallen also heraus, ohne dass jemand etwas zusichern muesste. Modellierte, also geschaetzte Zeilen kommen aus demselben Grund nicht herein: eine Schaetzung als Sitzung abzulegen hiesse, Besuche zu speichern, die es nicht gab.

Wie lange es liegt

Standardmaessig 180 Tage, gerechnet ab dem Tag, den die Zeile beschreibt - nicht ab dem Zeitpunkt des Imports. Sonst liefe die Frist nie ab, weil jeder Lauf dieselben Tage erneut holt.

Loeschen

Verlangt ein Besucher die Loeschung seiner Daten, gehen seine importierten GA4-Sitzungen mit - soweit sie sich ihm ueber die Kennung oben zuordnen lassen. Loeschen Sie das Projekt, gehen sie in jedem Fall, auch die Zeilen, die nie zu einer Ihrer Aufzeichnungen gehoert haben. Der taegliche Frist-Lauf laesst sie dagegen bewusst stehen: GA4-Daten haben ihre eigene Uhr, und Ihre Aufzeichnungen laufen frueher ab.

6. Wenn nichts ankommt

Jeder Lauf schreibt sein Ergebnis in das Zustellprotokoll auf der Integrationsseite - auch den Fehlschlag, im Klartext. Dort steht in der Regel schon, was fehlt.

MeldungWas zu tun ist
Property-ID muss rein numerisch seinSie haben die Mess-ID eingetragen. Die richtige Zahl steht in GA4 unter Property-Einstellungen.
HTTP 403 bei der Data APIDas Dienstkonto ist in GA4 nicht als Betrachter eingetragen, oder die Data API ist im GCP-Projekt nicht aktiviert.
Dataset oder Exporttabellen nicht gefundenDie BigQuery-Verknuepfung fehlt, das Dataset heisst anders, oder es ist noch kein Tag vergangen.
Zugriff verweigert (BigQuery)Dem Dienstkonto fehlt BigQuery Data Viewer auf dem Dataset oder BigQuery Job User im Projekt.
Die Abfrage haette zu viel gelesenDer Kostendeckel hat abgebrochen, bevor etwas berechnet wurde. Kleineres Zeitfenster waehlen.
keine Sitzungen im FensterKein Fehler. In den geholten Tagen gab es keine Sitzung mit Einwilligung.