Google Search Console einrichten
Richten Sie Google Search Console ein, wenn Workspace externe Suchmetriken wie Suchanfragen, Seiten, Länder, Geräte, Impressionen, Klicks, CTR und durchschnittliche Position im Analytics-Tab einer Site anzeigen soll. Nach der Einrichtung importiert Workspace Search-Console-Daten als Taskstream-Job und schreibt sie in den provider-neutralen Search-Metric-Speicher.
Diese Seite richtet sich an Administratoren und Betreiber. Nach Abschluss ist die veröffentlichte Workspace-Site mit einer verifizierten Google-Search-Console-Property verbunden, ein erster Sync ist geprüft und ein täglicher Sync kann über das aktive Binding laufen. Workspace ersetzt keinen Google-Search-Console-Zugriff: Die Property muss bei Google vorhanden und für den verwendeten Google-Nutzer zugänglich sein.
Platzhalter
Die Beispiele verwenden diese Platzhalter:
| Platzhalter | Bedeutung |
|---|---|
<tenant> | Workspace-Mandant oder Tenant-Kontext der Site. |
<siteId> | ID der veröffentlichten Site in Workspace. |
<productionHost> | Finaler öffentlicher Produktionshost der Site. |
<propertyUrl> | Google-Search-Console-Property, zum Beispiel https://www.example.com/ oder sc-domain:example.com. |
<googleCloudProject> | Google-Cloud-Projekt für API und OAuth-Konfiguration. |
<oauthClientJsonLocalPath> | Lokaler Pfad zur OAuth-Client-JSON-Datei; nicht ins Repository legen. |
<credentialId> | ID des verschlüsselt gespeicherten Workspace-Credentials. |
<bindingId> | ID des aktiven Workspace-Bindings zwischen Site, Property und Credential. |
<dailyCronSpec> | Cron-Ausdruck für den täglichen Sync, zum Beispiel 30 3 * * * für 03:30 UTC. |
Voraussetzungen
Prüfen Sie diese Punkte, bevor Sie Credential, Binding oder Sync anlegen:
| Bereich | Voraussetzung |
|---|---|
| Workspace-Site | Die Site ist veröffentlicht. |
| Produktionsdomain | Die Ziel-Domain ist die finale Produktionsdomain, nicht Preview oder Staging. |
| HTTPS | https://<productionHost>/ ist öffentlich erreichbar. |
| Domain-Bindung | Die Workspace-Domain ist gebunden und die Readiness ist grün. |
| SEO-Dateien | https://<productionHost>/sitemap.xml und https://<productionHost>/robots.txt sind erreichbar, soweit die Site sie verwendet. |
| Google Property | Eine Google-Search-Console-Property existiert oder wird vor der Anbindung angelegt. |
| Property-Typ | Domain Property für Domain inklusive Subdomains und Protokolle oder URL-Prefix Property für exakt eine HTTPS-URL. |
| Ownership | Die Property ist verifiziert, bei Domain Properties bevorzugt per DNS-TXT. |
| Google-Nutzer | Der OAuth-Google-Nutzer hat Zugriff auf die Search-Console-Property. |
| Google Cloud | <googleCloudProject> existiert, die Search Console API ist aktiviert und der OAuth Consent Screen ist eingerichtet. |
| OAuth-App | Im Testmodus ist der ausführende Google-Nutzer als Testnutzer eingetragen. |
| OAuth-Client | Ein passender OAuth-Client existiert, typischerweise Desktop App oder ein freigegebener lokaler Betreiber-Flow. |
| OAuth-Scope | Es wird ausschließlich https://www.googleapis.com/auth/webmasters.readonly verwendet. |
| Workspace-Rechte | Der ausführende Nutzer hat external_search_metrics:read und external_search_metrics:sync. |
Workspace stellt für diese Anbindung aktuell keinen öffentlichen OAuth-Consent-Wizard und keine Admin-UI zum Anlegen des Bindings bereit. Legen Sie Credential und Binding deshalb über den freigegebenen Betreiber- oder Migrationsprozess an. Speichern Sie Access Token, Refresh Token, Client Secret, OAuth-Codes, DNS-Verifizierungswerte und private Schlüssel niemals in Tickets, Chats, Logs, Dokumentation oder Taskstream-Payloads.
Die Google-API-Dokumentation beschreibt die Autorisierung über OAuth 2.0 und den lesenden Scope webmasters.readonly in der Search-Console-Autorisierung. Die importierten Kennzahlen stammen aus der Search Analytics Query API. Google beschreibt im Search-Central-Leitfaden zu Traffic-Einbrüchen die Auswertung über die letzten 16 Monate und empfiehlt API oder Export, wenn Sie Daten darüber hinaus dauerhaft in eigenen Systemen speichern wollen: Debug Google Search Traffic Drops.
Kurzablauf
- Prüfen Sie Workspace-Site, Domain-Bindung, Readiness und externe HTTPS-Erreichbarkeit.
- Legen Sie die Google-Search-Console-Property an oder öffnen Sie die bestehende Property.
- Aktivieren Sie die Search Console API im passenden Google-Cloud-Projekt.
- Richten Sie den OAuth Consent Screen und den OAuth-Client mit ausschließlich lesendem Scope ein.
- Importieren Sie das Google-OAuth-Credential über einen nicht-loggenden Betreiberprozess in den verschlüsselten Workspace-Credential-Store.
- Legen Sie ein aktives Binding zwischen Tenant, Site, Property und Credential an.
- Starten Sie einen Test-Sync und prüfen Sie ImportRun, Taskstream-Job und Summary.
- Importieren Sie verfügbare historische Daten in Fenstern von höchstens 30 Tagen.
- Richten Sie einen täglichen Sync ohne feste
dateFrom/dateToein.
Workspace prüfen
Prüfen Sie Workspace, bevor Sie Google-OAuth oder Bindings anfassen:
- Melden Sie sich im richtigen Tenant-Kontext an.
- Prüfen Sie die Rechte
external_search_metrics:readundexternal_search_metrics:sync. - Prüfen Sie die Site-Liste und bestätigen Sie
<siteId>. - Prüfen Sie die Domain-Liste und bestätigen Sie
<productionHost>. - Prüfen Sie die Web-Readiness der Site.
- Prüfen Sie die externe HTTPS-Erreichbarkeit:
https://<productionHost>/
https://<productionHost>/sitemap.xml
https://<productionHost>/robots.txtBrechen Sie ab, wenn die finale Produktionsdomain noch nicht gebunden, nicht öffentlich erreichbar oder nicht readiness-grün ist.
Google vorbereiten
- Öffnen Sie Google Search Console und legen Sie die Property an oder öffnen Sie die bestehende Property.
- Wählen Sie den Property-Typ bewusst:
- Domain Property für Domain, Subdomains und Protokolle.
- URL-Prefix Property für exakt eine HTTPS-URL.
- Notieren Sie
<propertyUrl>exakt. Verwenden Sie bei Domain Properties die von Google verwendetesc-domain:-Referenz, wenn Ihr Betreiberprozess diese Form erwartet. - Verifizieren Sie die Ownership, bei Domain Properties bevorzugt per DNS-TXT.
- Prüfen Sie, dass der OAuth-Google-Nutzer Zugriff auf die Property hat.
- Öffnen Sie Google Cloud Console und wählen Sie
<googleCloudProject>. - Aktivieren Sie die Search Console API.
- Richten Sie den OAuth Consent Screen ein:
- App-Name
- Support-E-Mail
- Entwicklerkontakt
- keine unnötigen Scopes
- Fügen Sie nur diesen Scope hinzu:
https://www.googleapis.com/auth/webmasters.readonly- Tragen Sie im Testmodus den ausführenden Google-Nutzer als Testnutzer ein.
- Erstellen Sie den OAuth-Client.
- Speichern Sie die OAuth-Client-JSON-Datei lokal unter
<oauthClientJsonLocalPath>. Committen Sie diese Datei nicht und kopieren Sie ihren Inhalt nicht in Chat, Ticket oder Dokumentation.
Credential importieren
Importieren Sie das Credential ausschließlich über einen freigegebenen, nicht-loggenden Betreiberprozess:
- Führen Sie den OAuth-Flow lokal aus.
- Geben Sie OAuth-Code, Access Token, Refresh Token und Client Secret nicht aus und dokumentieren Sie diese Werte nicht.
- Verarbeiten Sie Token und Client Secret nur lokal im Betreiberprozess.
- Prüfen Sie vor dem Speichern den Property-Zugriff gegen die Google API.
- Speichern Sie Token und Client Secret ausschließlich verschlüsselt im Workspace-Credential-Store.
- Verwenden Sie als Provider-Name
google_search_console. - Dokumentieren Sie
<credentialId>, aber keine Secret-Werte.
Entfernen Sie <oauthClientJsonLocalPath> nach erfolgreicher Einrichtung oder verwahren Sie die Datei sicher außerhalb des Repositories.
Binding anlegen
Legen Sie ein aktives Binding zwischen Workspace und Google Search Console an:
| Feld | Wert |
|---|---|
| Tenant | <tenant> |
| Site | <siteId> |
| Provider | google_search_console |
| Property | <propertyUrl> |
| Credential | <credentialId> |
syncLookbackDays | 1 bis 30, empfohlen 7 |
Dokumentieren Sie <bindingId>. Stellen Sie sicher, dass nur ein aktives Binding pro Site und Property existiert, wenn der Sync ohne explizite bindingId laufen soll. Bei mehreren aktiven Bindings muss jeder Sync die gewünschte bindingId angeben.
Test-Sync starten
Starten Sie den ersten Import über den Site-Analytics-Endpunkt:
POST /api/v1/site/analytics/sites/<siteId>/external-search/google-search-console/sync
Authorization: Bearer <token-mit-external_search_metrics:sync>
Content-Type: application/jsonOhne Body nutzt Workspace das aktive Binding der Site und syncLookbackDays:
{}Ein erfolgreicher Aufruf liefert 202 Accepted mit Job-ID:
{
"jobId": "<jobId>",
"status": "accepted",
"alreadyRunning": false
}Wenn für dieselbe Binding-/Property-Kombination bereits ein aktiver Job läuft, liefert Workspace denselben aktiven Job zurück und setzt alreadyRunning auf true.
Überwachen Sie den Taskstream-Job bis zum Abschluss. Prüfen Sie danach den ImportRun:
| Feld | Erwartung |
|---|---|
status | completed |
dateFrom / dateTo | Geprüfter Zeitraum |
rowsRead | Von Google gelesene Zeilen |
rowsWritten | In Workspace gespeicherte Aggregatzeilen |
Leere Werte können gültig sein, wenn Google für Property und Zeitraum noch keine Daten liefert.
Historischen Backfill importieren
Google Search Console stellt historische Performance-Daten nur begrenzt bereit. Google dokumentiert für den Performance-Kontext aktuell 16 Monate; prüfen Sie vor großen Backfills die aktuelle Google-Dokumentation und beginnen Sie mit dem ältesten noch verfügbaren vollständigen Tag.
Workspace akzeptiert pro Sync-Fenster höchstens 30 inklusive Tage. Teilen Sie den Backfill deshalb in Fenster von maximal 30 Tagen auf und warten Sie nach jedem Start auf den Taskstream-Abschluss.
Starten Sie jedes Fenster mit expliziter bindingId, dateFrom und dateTo:
{
"bindingId": "<bindingId>",
"dateFrom": "YYYY-MM-DD",
"dateTo": "YYYY-MM-DD"
}Workspace akzeptiert Datumswerte im Format YYYY-MM-DD. dateTo darf nicht nach gestern in UTC liegen. Dokumentieren Sie für jedes Fenster Zeitraum, Job-ID, ImportRun-ID, rowsRead, rowsWritten und Status.
Prüfen Sie nach dem Backfill die Summary über das volle Fenster. Der Parameter to ist exklusiv:
GET /api/v1/site/analytics/sites/<siteId>/external-search/summary?provider=google_search_console&from=<start>&to=<exclusiveEnd>
Authorization: Bearer <token-mit-external_search_metrics:read>Dokumentieren Sie danach:
- frühestes gespeichertes Datum,
- spätestes gespeichertes Datum,
- Summe Impressionen,
- Summe Klicks,
- CTR,
- Average Position,
- Anzahl gespeicherter Aggregate Rows.
Täglichen Sync planen
Richten Sie nach Test-Sync und Backfill einen täglichen Sync ein:
- Planen Sie den Sync einmal täglich.
- Nutzen Sie nachts oder frühmorgens UTC, zum Beispiel 03:30 UTC.
- Verwenden Sie keine festen
dateFrom- oderdateTo-Werte. - Lassen Sie den Sync über
<bindingId>undsyncLookbackDayslaufen, typischerweise mit7Tagen. - Begrenzen Sie die Parallelität pro Tenant, Site und Property auf
1. - Setzen Sie
MaxRetriesauf3. - Setzen Sie
RetryDelayauf10Minuten.
Der Lookback synchronisiert mehrere zurückliegende Tage erneut. So übernimmt Workspace verspätete oder von Google nachkorrigierte Daten, ohne alte Buckets zu duplizieren.
Nutzen Sie bevorzugt einen unterstützten Produkt- oder Admin-API-Pfad, wenn Ihre Installation dafür einen freigegebenen Scheduler-Pfad anbietet. Wenn kein solcher Pfad verfügbar ist, dürfen nur Plattformadmins einen begrenzten Taskstream-Cron-Job direkt anlegen. Die Taskstream-Payload enthält nur Referenzen:
{
"tenant_id": "<tenant>",
"site_id": "<siteId>",
"binding_id": "<bindingId>"
}Die Payload enthält keine Tokens, Client Secrets, OAuth-Codes, DNS-Verifizierungswerte oder privaten Schlüssel.
Prüfen Sie den angelegten täglichen Job:
| Feld | Erwartung |
|---|---|
| Status | pending |
| Scheduler | cron |
| Scheduler Spec | <dailyCronSpec> |
| Runnable Type | publicanalytics.google_search_console.sync |
| Runnable Data | Nur Tenant-, Site- und Binding-Referenzen |
| Concurrency Limit | 1 |
| Retries | 3 |
| Retry Delay | 10m |
| Stats | Statistikzeile vorhanden |
Dokumentieren Sie klar, warum eine direkte Taskstream-Anlage nötig war, wenn kein unterstützter Produkt- oder Admin-API-Pfad verfügbar war.
Ergebnis prüfen
Lesen Sie die importierten Search-Metriken über:
GET /api/v1/site/analytics/sites/<siteId>/external-search/summary?provider=google_search_console
Authorization: Bearer <token-mit-external_search_metrics:read>Die Antwort enthält aggregierte Werte für Impressionen, Klicks, CTR, durchschnittliche Position sowie Aufschlüsselungen nach Suchanfragen, Ländern, Seiten und Geräten. Workspace speichert diese Werte im provider-neutralen Analytics-Speicher. Taskstream-Jobdaten enthalten nur Tenant-, Site-, Binding- und Datumsreferenzen, keine OAuth-Tokens.
Im Site Manager sehen berechtigte Nutzer die importierten Kennzahlen unter CMS > Sites im Tab Analyse, Abschnitt Externe Suche, sobald der Taskstream-Job abgeschlossen ist und Google für den Zeitraum Daten geliefert hat.
Speicherung und Historie
Workspace speichert externe Search-Metriken provider-neutral aggregiert.
| Dimension | Bedeutung |
|---|---|
| Datum | Tag des Search-Console-Buckets. |
| Query | Suchanfrage, soweit Google sie bereitstellt. |
| Page URL / Path | Zielseite oder normalisierter Pfad. |
| Country | Land des Search-Signals. |
| Device | Geräteklasse. |
| Search Type | Suchtyp, aktuell Google Web Search. |
| Wert | Bedeutung |
|---|---|
impressions | Impressionen. |
clicks | Klicks. |
ctr | Klickrate. |
position | Durchschnittliche Position. |
Re-Syncs derselben Buckets werden per Upsert aktualisiert, nicht als neue Version dupliziert. ImportRuns bleiben als Sync-Protokoll erhalten. Der Summary-Endpunkt aggregiert über gespeicherte Daten und unterstützt from und to.
Erfolg erkennen
Die Einrichtung funktioniert, wenn diese Prüfungen erfüllt sind:
| Prüfung | Erwartetes Ergebnis |
|---|---|
| Google Property | Die Property existiert in Google Search Console und der OAuth-Nutzer hat Zugriff. |
| Google API | Die Search Console API ist im Google-Cloud-Projekt aktiviert. |
| Scope | Das Credential enthält https://www.googleapis.com/auth/webmasters.readonly. |
| Workspace Credential | Ein verschlüsselter Provider-Token für google_search_console existiert im Tenant. |
| Binding | Ein aktives Binding verbindet Tenant, Site, Property-URL und Credential-ID. |
| Rechte | Lesende Nutzer haben external_search_metrics:read; Sync-Starter haben external_search_metrics:sync. |
| Test-Sync | Der Sync-Endpunkt liefert 202 Accepted und eine Job-ID. |
| Auswertung | Die Summary zeigt nach Jobabschluss Impressionen, Klicks oder leere, aber gültige Breakdowns für den geprüften Zeitraum. |
| Täglicher Job | Der tägliche Job läuft über Binding und Lookback, nicht über feste Datumswerte. |
Abbrechen, wenn
Brechen Sie die Einrichtung ab, wenn einer dieser Punkte zutrifft:
| Kriterium | Grund |
|---|---|
| Produktionsdomain nicht final | Search-Daten würden an eine falsche Property oder Staging-Domain gebunden. |
| Site nicht öffentlich erreichbar | Google und Workspace können die produktive Site nicht belastbar prüfen. |
| Readiness nicht grün | Die Site ist noch nicht bereit für den produktiven Suchmetriken-Import. |
| Google Property nicht verifiziert | Der OAuth-Nutzer kann keine belastbaren Search-Daten liefern. |
| OAuth-Nutzer ohne Property-Zugriff | Der Sync würde mit Provider- oder Credential-Fehlern scheitern. |
| Search Console API nicht aktiviert | Google akzeptiert die API-Anfragen nicht. |
| OAuth Consent blockiert Nutzer | Der lokale OAuth-Flow kann nicht sicher abgeschlossen werden. |
| Scope nicht exakt read-only | Workspace benötigt nur webmasters.readonly; breitere Scopes sind nicht erforderlich. |
| Secret-Werte müssten kopiert werden | Secrets dürfen nicht in Chat, Ticket, Log, Doku oder Taskstream-Payload gelangen. |
| Kein sicherer Credential-Store | Token und Client Secret dürfen nicht unverschlüsselt gespeichert werden. |
| Mehrere aktive Bindings unklar | Der Sync braucht eine eindeutige bindingId. |
Betreiberprotokoll pflegen
Dokumentieren Sie die Einrichtung in Ihrem Betriebsprotokoll oder in der zuständigen Work Order. Halten Sie nur Referenzen und Ergebnisse fest:
- Status und Scope der Einrichtung,
<tenant>und<siteId>,<productionHost>und beobachtete Readiness,<propertyUrl>,<credentialId>,<bindingId>,syncLookbackDays,- Job-IDs und ImportRun-IDs,
- Sync- und Backfill-Zeiträume,
rowsRead,rowsWrittenund Status je Fenster,- frühestes und spätestes gespeichertes Datum,
- täglicher Job mit
<dailyCronSpec>, - offene Risiken.
Dokumentieren Sie keine Secret-Werte. Prüfen Sie vor Commit oder Übergabe:
- keine OAuth-Client-JSON-Dateien im Git-Status,
- keine Access Tokens, Refresh Tokens, Client Secrets, OAuth-Codes, DNS-Verifizierungswerte oder privaten Schlüssel in Artefakten,
- Secret-Muster-Scan ausgeführt,
- Format-, Lint- oder Doku-Checks für neue Betreiberhilfen ausgeführt,
git diff --checkohne Befund.
Fehlersuche
Nutzen Sie diese Prüfschritte, wenn der Import nicht startet oder keine Werte erscheinen:
| Symptom | Prüfen Sie |
|---|---|
| 404 auf localhost OAuth Callback | Prüfen Sie Redirect-URI, lokalen Callback-Pfad und den verwendeten OAuth-Client. |
Google meldet App nicht überprüft | Prüfen Sie im Testmodus, ob der ausführende Google-Nutzer als Testnutzer eingetragen ist und ob der richtige Consent Screen verwendet wird. |
ERR_GSC_BINDING_NOT_FOUND | Für die Site fehlt ein aktives Binding, die bindingId ist falsch oder mehrere aktive Bindings erfordern eine eindeutige bindingId. |
ERR_GSC_BINDING_INACTIVE | Das Binding ist inaktiv. Aktivieren Sie es oder legen Sie ein neues Binding an. |
ERR_GSC_DATE_RANGE_INVALID | dateFrom liegt nach dateTo, das Fenster ist größer als 30 Tage oder dateTo liegt nach gestern UTC. |
ERR_GSC_CREDENTIAL_INVALID | Prüfen Sie Token, Scope, Refresh-Material, Property-Zugriff und Provider google_search_console. |
| Credential-Fehler im ImportRun | Prüfen Sie Provider google_search_console, Tenant-Zuordnung, verschlüsselten Token, Refresh-Material und Scope. |
| Google liefert 403 oder keine Daten | Prüfen Sie, ob der OAuth-Nutzer Zugriff auf die Search-Console-Property hat und die Property-URL exakt zum Binding passt. |
| Summary bleibt leer | Prüfen Sie, ob Google für den Zeitraum bereits Search-Daten bereitstellt und ob der Taskstream-Job abgeschlossen ist. Search-Console-Daten können verzögert verfügbar sein. |
| Täglicher Sync überschreibt nichts sichtbar | Prüfen Sie syncLookbackDays, Google-Datenverfügbarkeit und ob der Job ohne feste Datumswerte läuft. |
| Nutzer sehen keine Auswertung | Prüfen Sie external_search_metrics:read und den Zugriff auf die Site. |
| Nutzer können keinen Sync starten | Prüfen Sie external_search_metrics:sync. |
Sicherheitsgrenzen
Verwenden Sie für Workspace nur den lesenden Scope https://www.googleapis.com/auth/webmasters.readonly. Der schreibende Scope https://www.googleapis.com/auth/webmasters ist für den Import von Search-Analytics-Daten nicht erforderlich.
Workspace schreibt keine Google-Credentials in Taskstream-Jobdaten, API-Antworten oder ImportRun-Fehlermeldungen. Behandeln Sie Google-OAuth-Daten trotzdem als Secrets und geben Sie sie nicht an Support-Tickets, Dokumentationsbeispiele oder Chatnachrichten weiter.
Taskstream-Payloads enthalten nur Tenant-, Site-, Binding- und Datumsreferenzen. Betreiberprozesse dürfen Secret-Werte weder loggen noch in Fehlermeldungen, Screenshots oder Betriebsprotokolle übernehmen.
Nächste Schritte
- Lesen Sie Website-Analytics im fachlichen Kontext: Website-Analytics und Marketing-Attribution
- Prüfen Sie API-Konventionen: OpenAPI verwenden