Marketingdata ophalen met een AI-agent: GSC, GA4 en Google Ads

Een AI-agent kan marketingdata ophalen uit Google Search Console, Google Analytics 4 en Google Ads, zonder dat je steeds handmatig exporteert. De opzet is belangrijker dan de prompt. Geef de agent toegang tot de juiste property, beperk die tot rapportage en controleer wat er terugkomt. In deze gids lees je hoe je Hermes via een serviceaccount koppelt en waar elk Google-product verschilt. Je ziet ook hoe je van opgehaalde marketingdata een beslissing maakt die je kunt controleren.

Marketingdata uit GSC, GA4 en Google Ads die samenkomen in een AI-agent
Drie databronnen, één manier van rapporteren. Elke bron vraagt nog altijd een eigen toegangsinstelling.

Nieuw met Hermes? Begin met onze tutorial over Hermes installeren op desktop of terminal of de officiële Hermes-website. Wat Hermes doet zodra het draait, lees je in Hermes Agent uitgelegd.

In het kort: geef het serviceaccount in elk Google-product apart toegang. Dwing alleen-lezen af met de rol in het product en met de connector, niet met de prompt. Voor Google Ads heb je bovendien een Cloud-project met Explorer-toegang nodig om een live account te lezen.

Hoe maak je een serviceaccount aan in Google Cloud?

Een serviceaccount is een identiteit voor software in plaats van voor een persoon. Je maakt het aan in Google Cloud, activeert de juiste API en geeft het daarna in elk Google-product apart toegang. Alleen aanmaken geeft nog geen toegang tot je marketingaccounts.

Houd daarbij drie lagen uit elkaar. Een IAM-rol in Cloud, een rol in het product en een OAuth-scope doen elk iets anders. Geen van de drie vervangt de andere.

Je kunt Hermes vragen om de koppeling voor te bereiden in je bestaande werkomgeving. Een apart Hermes-profiel is daarvoor niet nodig. Houd de opdracht kort en begin met één bron:

Installeer gcloud en koppel Google Search Console voor [MIJN_WEBSITE] via een serviceaccount. Voeg het e-mailadres ervan toe in GSC via de browser, of geef mij het adres om het zelf toe te voegen. Gebruik read-only toegang, vraag mij om goedkeuring voor de rechten en test de verbinding.

Hermes kan de opzet controleren, commando’s voorbereiden en een beschikbare browser gebruiken om te helpen met de configuratie. Jij doet de Google-aanmelding, 2FA en toestemming, en keurt het project, de property en de toegangswijzigingen goed. Geef de agent nooit je wachtwoord en vraag niet om een inlogcontrole te omzeilen. Browsertoegang neemt die menselijke stappen niet weg. Controleer daarna zelf het resultaat; ga er niet van uit dat de opzet gelukt is.

Bij een klant voerde Hermes Desktop met een vergelijkbare opdracht de volledige koppeling uit. De agent installeerde gcloud, maakte een Google Cloud-project en het serviceaccount aan en activeerde de API’s. Daarna voegde de agent via de browser het serviceaccount met leesrechten toe in Search Console, Google Analytics en Google Ads. Alles werkte meteen. De mensen bij de klant keken mee en controleerden achteraf of de rechten klopten.

Stap voor stap handmatig instellen

Wil je het handmatig doen, of wil je nakijken wat de agent voorstelt? Dit zijn de stappen:

  1. Kies een bestaand Google Cloud-project of maak er een aan waarvoor je bevoegd bent. Is de opdrachtregel handig, installeer dan de gcloud CLI. Het serviceaccount heeft geen brede Owner- of Editor-rechten op je Cloud-project nodig om marketingrapporten te lezen.

  2. Maak onder IAM & Admin een apart serviceaccount aan. Heb je voor je lokale opzet een JSON-key nodig? Maak die dan alleen aan als je organisatie dat toestaat, en bewaar die veilig. Kies liever een ondersteunde methode zonder key als die er is. Verzwak geen organisatiebeleid dat het aanmaken van keys blokkeert.

  3. Activeer de Search Console API. Activeer de Analytics Data API en de Google Ads API pas wanneer je die bronnen koppelt. Een API activeren geeft op zich nog geen toegang tot een property of Ads-account.

  4. Laat een eigenaar van de property het e-mailadres van het serviceaccount toevoegen in Search Console. Dat doe je onder Instellingen > Gebruikers en rechten. Kies het laagste rechtenniveau dat je rapporten nog mogelijk maakt, nooit eigenaarschap voor gewone rapportage. Laat de connector de scope webmasters.readonly aanvragen.

  5. Stel GOOGLE_APPLICATION_CREDENTIALS in op het pad naar het JSON-bestand als je connector Application Default Credentials gebruikt. Doe dat in de omgeving van het proces dat de API-aanvragen doet. Test daarna met één kleine leesaanvraag welke identiteit en property actief zijn, voordat je rapporten inplant.

Hoe beperk je de rechten en bewaar je de JSON-key?

De autorisatiedocumentatie van Search Console maakt onderscheid tussen webmasters.readonly en de scope webmasters met lees- en schrijfrechten. Een beperkende prompt is geen toegangscontrole. Gebruik een gepast beperkte rol in het product, een connector die alleen leest en een vaste lijst met toegestane properties. Kijk ook naar overgeërfde toegang, niet alleen naar rechtstreeks toegekende rechten.

De documentatie over Application Default Credentials legt uit hoe Google-bibliotheken credentials vinden. GOOGLE_APPLICATION_CREDENTIALS verwijst naar een bestand; het is geen API-recht en geen algemene Hermes-instelling. Het wisselt ook niet vanzelf het actieve account van de gcloud CLI. Je connector moet deze manier van aanmelden ondersteunen en de juiste scopes aanvragen.

Houd de JSON-key uit chats, broncode, screenshots en gewone gedeelde back-ups. Geef alleen het account van het proces toegang tot het bestand. Op Linux of macOS zijn rechten zoals 0700 voor de map en 0600 voor het bestand een goed vertrekpunt. Herstart het proces als het een gewijzigde omgeving moet inlezen. Print de key niet om te bewijzen dat die werkt.

Hoe bereikt Hermes Google?

Hermes bereikt Google via een connector. Dat is een script of klein programma dat de credentials bewaart en een paar rapporten over je marketingdata aanbiedt. Vaak is dat een MCP-server. Hermes kan verbinden met MCP-servers en je kunt per server filteren welke tools de agent ziet. Kies of bouw een connector die alleen leesacties aanbiedt voor de properties die je toestaat.

Voor GA4 en Google Ads publiceert Google zelf een MCP-server. De Google Analytics MCP-server gebruikt de Admin API en de Data API en biedt alleen leestools aan. Je activeert dan beide API’s en geeft het serviceaccount minstens de rol Viewer op de property. Over de Google Ads MCP-server schrijft Google: “The Google Ads MCP server gives your AI client read-only access to live account data.” (De server geeft je AI-client alleen leestoegang tot live accountdata.) Ook die server vraagt een Cloud-project met minstens Explorer-toegang.

Voor Search Console gebruik je meestal een server uit de community, of je bouwt er zelf een. Kijk bij zo’n server eerst welke tools die aanbiedt en welke scope die vraagt. Filter in Hermes de tools weg die iets kunnen wijzigen. Dan bepaalt de connector wat de agent kan, niet alleen de prompt.

Bij Voltti leest een apart serviceaccount Search Console uit, met alleen leestoegang. Sinds oktober 2026 leest datzelfde serviceaccount ook ons eigen Google Ads-account uit. Het Search Console-voorbeeld is de enige koppeling waarvan dit artikel echte uitvoer toont. Op onze pagina over veilig en verantwoord AI gebruiken lees je dezelfde aanpak met minimale rechten.

Voorbeeld: marketingdata ophalen uit Search Console

Dit voorbeeld komt van onze eigen Hermes-installatie bij Voltti. Het is een historisch rapport, geen nieuwe meting. Vraag altijd naar een exacte property en periode. Typ bijvoorbeeld dit in Hermes nadat je de koppeling hebt gecontroleerd:

Haal het Search Console-rapport op voor voltti.ai van 1 juni tot en met 31 augustus 2026. Toon totalen en de belangrijkste zoekopdrachten, en meld ontbrekende data of rapportagelimieten.

Het paneel hieronder toont dat historische rapport. Het oorspronkelijke fragment vermeldt niet welk zoektype, welk maximum aantal rijen en welke datastatus (definitief of voorlopig) gebruikt werden.

hermes — Search Console rapport via serviceaccount

$ hermes "Trek de Search Console-statistieken van voltti.ai over juni–augustus 2026"

Google Search Console — voltti.ai (juni–augustus 2026)

Top queries

QueryKlikkenImpressiesPositieCTR
voltti682,475,0%
ai agent of chatbot03018,20,0%
ai assistent bedrijf01121,50,0%

Totaal

MetricWaarde
Impressies240
Klikken7

De site staat al op positie 2,4 op de merknaam, maar voor "ai agent of chatbot" (30 impressies, positie 18,2) is er nog geen enkele klik. Aanbeveling: een artikel of landingspagina die exact dat zoekwoord beantwoordt, plus interne links vanaf de homepage om de pagina autoriteit te geven.

Echte output van onze eigen Hermes-installatie: historisch rapport met GSC-data van voltti.ai (juni–augustus 2026), opgehaald met een read-only serviceaccount.
hermes — Search Console rapport via serviceaccount

Wat doet de agent met je marketingdata?

De agent maakt van een rapport een beslissing die je kunt controleren. Het somt op wat het ziet, meldt waar de data tekortschiet en stelt één actie voor om na te gaan.

Het historische voorbeeld toont 240 impressies en 7 klikken over juni–augustus 2026. Het merkwoord haalt 75% CTR, maar dat komt van amper 8 impressies. Bredere zoekopdrachten hebben impressies zonder klikken. Dat zijn observaties uit een kleine dataset, geen bewijs dat een bepaalde wijziging in de content meer verkeer oplevert.

De oorspronkelijke aanbeveling van de agent was om de zoekopdracht "ai agent of chatbot" te beantwoorden met relevante content en interne links. Ga vóór je iets maakt na of er al een geschikte pagina bestaat. Een oude aanbeveling is geen nieuw resultaat en mag geen dubbele pagina opleveren. Hoe we die maandelijkse werkwijze inrichten, lees je in ons artikel over SEO met een AI-agent. Of AI-zoekmachines zo'n pagina ook kunnen citeren, is een aparte controle: lees hoe je pagina's citeerbaar maakt voor AI-zoekmachines.

Vraag bij een nieuw rapport dat de agent naast de aanbevelingen ook de exacte property, data, dimensies, filters en datastatus bewaart. Zoekopdrachtrijen tellen niet altijd op tot de totalen van de property, door rapportagelimieten en privacyfilters. Vergelijk de export met de Google-interface met dezelfde instellingen voordat je ermee aan de slag gaat. Werk je met een team, dan kan elke collega zo’n rapport opvragen in een gedeeld kanaal (zie Hermes gebruiken in een team).

Hoe breid je de koppeling uit naar Google Analytics 4?

Voor GA4 activeer je de Analytics Data API en voeg je het serviceaccount als Viewer toe aan de property. Gebruik het numerieke property-ID, niet de meet-ID die met G- begint.

Het e-mailadres van het serviceaccount voeg je toe via het toegangsbeheer in de beheerinstellingen van GA4. De connector meldt zich aan met analytics.readonly en roept de Data API aan. De Analytics API-quickstart van Google beschrijft de aanpak met de clientbibliotheek en runReport.

Heb je de toegang gecontroleerd, dan volstaat een korte vraag:

Toon sessies per kanaal voor de laatste 30 volledige dagen in onze GA4-property. Vermeld de periode en het property-ID, en toon de belangrijkste landingspagina’s apart.

Zet de echte begin- en einddatum in het rapport en behoud de tijdzone van de property. Controleer of metrics en dimensies samen kunnen, in plaats van aan te nemen dat je elke twee kolommen kunt combineren. Sessies per kanaal en sessies per landingspagina zijn aparte rapportweergaven; koppel ze niet rij per rij.

Een eerlijke nuance: Voltti gebruikt zelf geen GA4-koppeling. Dit deel is dus uitleg over de opzet, geen gemeten rapport.

Wat heb je extra nodig voor Google Ads?

Voor Google Ads heb je meer nodig dan voor Search Console of GA4. Je Cloud-project heeft minstens Explorer-toegang nodig om een live account te lezen. Het serviceaccount heeft ook een rol in het Ads-account nodig, en je stelt het juiste customer-ID in.

Google Ads ondersteunt rechtstreekse toegang via een serviceaccount. Een beheerder van het Ads-account voegt het e-mailadres van het serviceaccount toe bij de instellingen voor toegang en beveiliging. Google beschrijft dat in de werkwijze voor serviceaccounts. Kies leestoegang voor rapportage en controleer ook de toegang die een manageraccount doorgeeft. Je hoeft geen menselijke gebruiker na te bootsen voor deze rechtstreekse toegang.

API-toegang loopt per Google Cloud-project. In september 2026 schreef Google op het Ads Developer Blog: “We are sunsetting developer tokens.” (Google stopt met developer tokens.) Je meldt je nu aan voor de Google Ads API in de Google Cloud Console, zonder manageraccount. Een nieuw project start met Test-toegang, die alleen testaccounts bereikt. Wil je een live account lezen, vraag dan Explorer-toegang of hoger aan op de overzichtspagina van de Google Ads API. De limieten en toegestane functies vind je in de officiële uitleg over Google Ads-toegangsniveaus.

Google Ads gebruikt de OAuth-scope adwords; een aparte read-only-scope bestaat niet. Beperk de toegang daarom via de rol in het Ads-account en de rapportagemethoden die de connector toelaat. Stel het customer-ID van het doelaccount in en, als je via een manageraccount werkt, de juiste login-customer-id. De Ads-clientbibliotheek kan een eigen instelling voor het key-bestand vragen; alleen GOOGLE_APPLICATION_CREDENTIALS instellen is geen volledige Ads-configuratie.

Voeg Ads toe nadat de eerste rapportagekoppeling werkt, en controleer GA4 apart als je die nodig hebt. Technisch hangt Ads niet af van de andere bronnen. Stap voor stap werken maakt fouten wel makkelijker te vinden, zoals een verkeerd account-ID, een ontbrekende rol of een te laag toegangsniveau. Maak van een autorisatiefout nooit een reden om beheerdersrechten te geven.

Vier fouten komen vaak terug. Een GA4-aanvraag mislukt als je de meet-ID met G- gebruikt in plaats van het numerieke property-ID. Elke bron geeft een rechtenfout als het serviceaccount niet in het product zelf is toegevoegd. Een Ads-aanvraag op een live account mislukt als je project alleen Test-toegang heeft. In versie v25 van de API is de fout CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION; oudere versies geven ACTION_NOT_PERMITTED. De oplossing is Explorer-toegang aanvragen. Via een manageraccount blokkeert ook een ontbrekende of verkeerde login-customer-id de aanvraag.

Doorstaat de Ads-koppeling een leestest, vraag dan bijvoorbeeld:

Rapporteer klikken en kosten per campagne voor de laatste volledige maand in het Ads-account dat ik bevestigd heb. Gebruik alleen aanroepen voor rapportage en toon de valuta van het account en de exacte data.

Bronnen combineren laat zien welke campagnes nuttige bezoeken opleveren. Maar impressies in Search Console, sessies in Analytics en klikken in Ads meten verschillende dingen. Stem periode, tijdzones, valuta van het account en aannames over attributie op elkaar af. Een agent legt die verschillen uit en stelt ze niet voor als uitwisselbare totalen. In deze opzet haalt de agent elke bron zelf op, dus je plakt geen exportbestanden in een chatvenster. Welke tool bij welke taak past, lees je in Hermes vergelijken met ChatGPT en Copilot.

Een bedrijf dat factureert via Moneybird kan bijvoorbeeld campagnestatistieken naast de factuurgegevens leggen die via de API over dezelfde periode beschikbaar zijn. Dat is een mogelijke werkwijze, geen klantresultaat. Om omzet aan een campagne toe te schrijven, heb je een betrouwbare koppeling tussen campagne, klant en factuur nodig; overeenkomende data alleen bewijzen geen attributie. Hoe je dat aanpakt, lees je in ons artikel over AI koppelen aan je CRM en CMS.

Serviceaccount of je eigen Google-account?

Deel je Google-wachtwoord nooit. OAuth met je eigen account is een volwaardig alternatief voor een serviceaccount: ook daar kun je scopes beperken en toestemming intrekken. De vergelijking gaat over wie eigenaar is van de geautomatiseerde toegang en hoe je die beheert. Het gaat niet om de vraag of aanmelden als gebruiker altijd onbeperkte toegang geeft.

KenmerkJe eigen account via OAuthApart serviceaccount

Rechten

Beperkt door je producttoegang en de scopes die je goedkeurt

Beperkt door productrechten, aangevraagde scopes en de controles van de connector

Geldigheid van de toegang

Access tokens verlopen; refresh tokens kunnen de toegang vernieuwen tot je de toestemming of credentials intrekt

De ingestelde credentials halen kortlevende access tokens op; een JSON-key moet je beheren van aanmaak tot intrekking

Controle achteraf

Aanvragen gebruiken de identiteit van een persoon; houd een apart log van de applicatie bij

Aanvragen gebruiken een aparte identiteit voor software; welke logs de provider bewaart, verschilt per dienst

Toegang intrekken

Trek de toestemming of tokens van de app in; je wachtwoord wijzigen is niet de enige optie

Verwijder de producttoegang of trek de key of identiteit in, en controleer andere werkstromen die ervan afhangen

Waarom alleen leesrechten?

De rapportagekoppelingen in dit artikel lezen en analyseren data zonder iets te wijzigen in je Google-accounts. Dwing dat af via accountrechten en de connector, niet alleen met een zin in een prompt. Zeker bij Google Ads legt de OAuth-scope op zich geen read-only-grens op.

Wil je later dat de agent een biedstrategie of een andere instelling aanpast? Behandel dat dan als een apart project, met expliciete goedkeuring en nieuwe waarborgen. Zo werkt Voltti bij het eigen Ads-account: de paar wijzigingen die de agent daar mag doen, lopen via aparte, begrensde tools. Een mens bepaalt op welk account dat mag. Elke wijziging wordt eerst gevalideerd, daarna gelogd en teruggelezen.

Controleer credentials en producttoegang regelmatig en verwijder rechten die je niet meer gebruikt. Onze checklist voor veilig AI-gebruik met bedrijfsdata helpt je daarbij. Houd zelf bij welke rapporten je opvroeg, welke fouten optraden en welke acties volgden. Ga er niet van uit dat elke aanroep die data leest in een volledig auditlog van de provider verschijnt.

Read-only toegang tot Google zegt ook niets over andere tools. Heeft dezelfde agent rechten in je CMS, dan kan die daar bewerken en publiceren. Mensen blijven het werk controleren en beslissen welke doelen, claims en wijzigingen aanvaardbaar zijn.

Wil je hulp om een agent te koppelen aan de marketingdata van je bedrijf in België en Nederland? Bekijk hoe een pilot verloopt, of bespreek één rapport dat je wilt automatiseren via de knop hieronder.

Portretfoto van Seppe Gadeyne

Seppe Gadeyne is developer en eigenaar van Voltti. Hij richt AI-agenten in voor bedrijven in België en Nederland.

Bijgewerkt op

Veelgestelde vragen

01Is een serviceaccount veiliger dan mijn eigen account?

Niet automatisch. Een serviceaccount maakt machinetoegang makkelijker te scheiden, te controleren en in te trekken. Geef alleen de producttoegang die de taak vraagt, beperk de rapportagemethoden en bescherm de credentials. OAuth met je eigen account en beperkte scopes is ook een goede optie. Deel je wachtwoord nooit.

02Kan Hermes ook schrijven in Google Search Console?

Niet via een connector die beperkt is tot de read-only-scope en de rapportagemethoden uit dit artikel. Lees- en schrijfrechten zijn een andere keuze. Geef die niet voor gewone analyse, en ga er niet van uit dat deze Google-beperkingen ook gelden voor de andere tools van de agent.

03Werkt dit ook met Google Analytics 4 en Google Ads?

Beide producten ondersteunen rapportage via een serviceaccount als je ze goed instelt. GA4 vraagt toegang tot de property en de Analytics Data API. Ads vraagt een Cloud-project met productietoegang, de juiste rol in het account en de juiste customer-instellingen. Het historische Voltti-voorbeeld in dit artikel toont geen GA4- of Ads-run; die delen zijn uitleg over de opzet. Voltti leest het eigen Ads-account wel uit via een serviceaccount, maar daar toont dit artikel geen uitvoer van.

04Welke MCP-server gebruik je voor GA4, Google Ads of Search Console?

Voor GA4 en Google Ads publiceert Google zelf een MCP-server. Beide bieden in de huidige versie alleen leestools aan. Voor Search Console gebruik je meestal een server uit de community, of je bouwt er zelf een. Controleer bij elke server welke tools en scopes die vraagt, en laat in Hermes alleen de leestools toe. Meer uitleg staat in het deel over hoe Hermes Google bereikt.

05Wat kost een serviceaccount in Google Cloud?

Een serviceaccount aanmaken kost op zich niets, en de Search Console API is gratis binnen de gebruikslimieten. Andere Cloud-diensten, betaalde services en het modelgebruik van de agent kunnen apart kosten. Kijk naar de diensten die je echt gebruikt, in plaats van de hele opzet als gratis te beschouwen.

06Moet de JSON-key op dezelfde machine staan als Hermes?

Het proces dat de API aanroept, moet bij de ingestelde credentials kunnen. Bij een lokale connector met een bestand is dat meestal een beschermd bestand op de machine van de connector, niet per se waar je chat. Plak de key nooit in Hermes. Kies waar mogelijk een ondersteunde methode zonder key. Heb je toch een key nodig, beperk dan de toegang en vervang of trek de key in wanneer dat nodig is. Een bewaarde back-up is versleuteld en staat op een aparte locatie in je eigen netwerk, nooit op de node. Zie ook lokale en hybride AI.

Klaar om je data aan een agent te koppelen?

Bespreek je pilot