Marketing
De cijfers van de klant, waar je al werkt
Koppel per klant hun Google Analytics 4, Search Console, Google Ads, SE Ranking en Rank Math vanuit één knop; de cijfers verschijnen daarna op de klantpagina zelf, in een marketingtabblad en in één overzicht over alle klanten. Een meetprofiel per klant maakt er een leadsdashboard van dat de vragen van een handgebouwd Looker-rapport beantwoordt, en daaronder staat hoe vaak AI-antwoorden het merk noemen. Elke vergelijking is standaard tegen dezelfde periode vorig jaar, en dat staat er in woorden bij.
Vijf bronnen en een container, gekoppeld vanuit één knop
Een klant krijgt zijn eigen koppelingen: een GA4-property, een Search Console-site, een Google Ads-account, een SE Ranking-project en een Rank Math-merk. Ze komen allemaal uit één knop, Bron koppelen, op het marketingtabblad en op de klantpagina, en daar hangt ook de Tag Manager-container van de klant bij: geen bron met dagcijfers, wel een verbinding die op het paneel laat zien hoeveel tags live staan en hoeveel wijzigingen nog niet gepubliceerd zijn. Meerdere koppelingen per bron mogen, dus een klant met twee merken houdt ze uit elkaar, en elke koppeling kan aan één website van die klant hangen. De accountkiezers zoeken met type-ahead en tonen precies wat de koppeling van de ingelogde collega werkelijk kan bereiken; een lege lijst legt uit waarom hij leeg is en wat de volgende stap is. Een ontbrekende Google-koppeling bepaalt een zin, nooit of een knop er staat: een SE Ranking-project of Rank Math-merk koppel je ook op een installatie zonder Google-account.
- Nog geen Google-account gekoppeld: de knop "Google koppelen" staat er meteen naast
- Rechten ontbreken: koppel opnieuw en geef toegang tot die ene bron
- Toegang ingetrokken: de koppeling meldt "Verbinding verbroken"
- De API staat niet aan in het Google Cloud-project: opnieuw koppelen helpt niet, en dat staat er ook
- Google Ads zonder ontwikkelaarstoken: het scherm verwijst je naar Instellingen → Marketing
- Rank Math zonder volledige WordPress-inrichting: een afvinklijst met de stap die ontbreekt en een knop naar de juiste plek in wp-admin
Op de klantpagina, in een tabblad, over alle klanten heen
Op elke klantpagina staat het paneel Marketing: de laatste 30 dagen tegen dezelfde 30 dagen vorig jaar, KPI-rijen met het verschil, sparklines en de gekoppelde accounts als chips met "Openen in Google Analytics" erachter. Dat paneel leest volledig uit de eigen database en doet nul aanroepen naar Google, dus het opent net zo snel als de rest van het dossier. Wil je verder kijken, dan opent het marketingtabblad van die klant met het leadsdashboard, langere perioden, de uitsplitsingen en de AI-zichtbaarheid; de pagina Marketing in de zijbalk toont hetzelfde dashboard met een klantkiezer erboven, dus het is één scherm met twee ingangen. Overzicht → Marketing legt er één regel per gekoppelde klant naast, server-side sorteerbaar, zodat je bij de koffie ziet wie aandacht nodig heeft. De ingebouwde assistent kan dezelfde vragen beantwoorden: zes leestools geven de cijfers van een klant met de vergeleken periode erbij, de tabel achter een tegel, wat er gekoppeld is en het overzicht over alle klanten, elk achter hetzelfde recht als het scherm. Licenseer je ook de rapportagemodule, dan levert marketing twaalf van de hoofdstukken voor de maandelijkse klantrapportage.
- Klantpaneel: 30 dagen tegen dezelfde 30 dagen vorig jaar, met sparklines en accountchips
- Klanttabblad: leadsdashboard, langere perioden, uitsplitsingen, AI-zichtbaarheid en de indelingseditor
- Overzicht → Marketing: bronnen, sessies, kliks, gem. positie, uitgaven, conversies en key events per klant
- Dashboardtegel voor het team, en een tegel op het dashboard van de klant zelf in het portaal
KPI's die je kunt openmaken
Elke bron levert zijn eigen KPI-rij, met de verandering ernaast en het getal waartegen gemeten is ("−20,6% t.o.v. € 1.211,73"). Je kiest de periode: laatste 30 dagen, deze maand, vorige maand, dit kwartaal, laatste 90 dagen, de laatste 12 maanden, een maand of kwartaal uit de kiezer, of een eigen periode met een begin- en einddatum. Onder de tegels zitten de uitsplitsingen, die bij de bron worden opgehaald in plaats van meegesynchroniseerd: toppagina's, kanalen, apparaten en belangrijke gebeurtenissen per gebeurtenis uit Analytics; topzoektermen, toppagina's en de grootste stijgers en dalers uit Search Console; campagnes uit Ads; en zoekwoorden, zoekwoordgroepen, de website-audit en zichtbaarheid in AI-zoekresultaten uit SE Ranking. Een antwoord van Google blijft een dag bewaard, en 's ochtends vroeg leest een taak het tabblad van elke klant alvast zoals een collega het zou openen, dus wie om negen uur begint wacht niet op Google. De tegels zelf komen uit de dagcijfers die 's nachts zijn opgehaald, dus een periodewissel kost geen quotum bij Google.
- Analytics: sessies, gebruikers, nieuwe gebruikers, belangrijke gebeurtenissen, conversies, betrokkenheid, omzet en kanalen
- Search Console: kliks, vertoningen, CTR en gemiddelde positie, en Vertoningen in AI zodra de export van het Generatieve AI-rapport is geüpload
- Google Ads: uitgaven, kliks, vertoningen, conversies en conversiewaarde
- SE Ranking: gemiddelde positie, Top 3, Top 10, Top 30, scorende en gevolgde zoekwoorden
Een leadsdashboard per klant, zonder een Looker-rapport per klant
Een bureau bouwde per klant een rapport in Looker Studio: vijf pagina's met steeds dezelfde veertien vragen, gesteld in de gebeurtenisnamen van die ene klant. Wat per klant verschilt is nooit het dashboard maar de woordenschat: welke gebeurtenis een aanvraag is, welke parameter de dienst draagt en hoe internationaal-transport op het scherm heet. Die woordenschat is het meetprofiel van de klant: zeven rollen (Aanvraag, Formulier gestart, Formulier verzonden, Formulierfout, Telefoonklik, E-mailklik, Sollicitatie) gekoppeld aan de GA4-gebeurtenissen van die klant, de dimensies waarop het dashboard mag uitsplitsen met een label per waarde, welke formuliertypes als offerte tellen, welke Google Ads-conversieactie bij welke dienst hoort en de datums waarop de meting veranderde. De editor kiest alles uit de eigen property en het eigen Ads-account van de klant, dus niets wordt uit het hoofd getypt. De vragen zelf zijn een vaste catalogus: aanvragen, offertes, tel- en e-mailcontact, per dienst, per dag, per kanaal, per pagina, gestart versus verzonden, mislukte verzendingen en een advertentiedeel met kosten, conversies en gemiste vertoningen per campagne. Een tweede klant is configuratie, geen nieuw rapport.
- Een klik op een dienst of een rij filtert de hele pagina, via de URL, dus een gefilterd dashboard is een link en de terugknop maakt de klik ongedaan
- Een onderdeel dat het profiel niet kan beantwoorden wordt weggelaten en benoemd, nooit als nul getekend: "geen trechter" en "100% uitval" zijn verschillende zinnen
- Een steekproef, thresholding, een niet-geregistreerde dimensie of een week met verkeer en geen enkele aanvraag staat als waarschuwing naast de cijfers
- GA4-gebeurtenissen en advertentiekosten worden nooit op datum aan elkaar geknoopt; elk getal noemt het ene rapport waar het uit komt
- Tabellen sorteren, bladeren en exporteren als CSV
Hoe vaak AI-antwoorden de klant noemen
Onder de bronnen staat Zichtbaarheid in AI-zoekmachines, uit de AI Search-cijfers van SE Ranking: Merkvermeldingen, Links naar de site, Gemiddelde positie en Potentieel AI-verkeer, over ChatGPT, Perplexity, Gemini en de AI-overzichten en AI-modus van Google, vorige maand tegen de maand ervoor met een grafiek over zes maanden. Elke uitlezing kost units van je eigen SE Ranking Data API-abonnement, dus het staat standaard uit en de prijs staat op elke knop die hem uitgeeft: bij de huisinstelling, bij de klant en op Opnieuw ophalen. Een maand wordt één keer gelezen en bewaard, ook als twee collega's hem tegelijk openen. Heeft SE Ranking de maand nog niet gepubliceerd of kent het de site niet, dan staat dat er in woorden en niet als een rij streepjes. Search Console laat zelf ook zien hoe vaak een site in AI-overzichten en AI-modus verschijnt, maar geeft dat cijfer niet via de API: de kaart zegt dat eerlijk, linkt naar het Generatieve AI-rapport en neemt de export ervan aan, waarna Vertoningen in AI een gewone tegel met trend en vergelijking wordt. Een periode zonder upload blijft leeg en wordt nooit nul.
- Merk, domein, landendatabase en engines per klant, met de huisinstelling als standaard
- Een aparte Data API-sleutel mag, want SE Ranking geeft per API een eigen sleutel uit
- In het portaal leest de klant de cijfers onder de naam die jij de bron gaf, zonder leveranciersnaam en zonder meldingen over jouw instellingen
Jij stelt samen wat de klant ziet, en hoe het heet
Het dashboard van een klant bewerk je zoals je je eigen Mijn dag-pagina inricht: klik op "Indeling bewerken" en je versleept tegels om ze te herordenen, verbergt wat deze klant niet nodig heeft (verborgen tegels wachten in een strook eronder), hernoemt ze ter plekke in het Nederlands en het Engels, zet uitsplitsingen aan of uit, kiest de standaardgrafiek, of verbergt een hele bron voor deze klant. Alles slaat direct op, en de indeling is precies wat een klantlogin in het portaal te zien krijgt. Verbergen gebeurt aan de serverkant: een verborgen tegel verdwijnt uit de gegevens die het paneel, het tabblad en het overzicht krijgen, hij wordt niet in de browser weggedrukt. Zolang je niets aanraakt verandert er niets, want geen indeling betekent gewoon: toon alles. Diezelfde editor is waar een conversie zijn eigen naam krijgt, want GA4 noemt hem zoals de developer hem ooit heeft aangemaakt.
- GA4 zegt generate_lead; de klant leest "Aanvragen via de website"
- Een eigen naam per sleutelgebeurtenis, per taal, getypt in de rij waar die gebeurtenis staat
- De GA4-gebeurtenisnaam blijft eronder de referentie, dus de cijfers blijven kloppen
- Een gebeurtenis die deze periode niet gemeten is, voeg je toe op zijn ruwe GA4-naam
- Liever geen conversiecijfers delen? Zet de tegel met sleutelgebeurtenissen uit voor deze klant
Een grafiek die veroudert, zegt dat zelf
Elke koppeling draagt haar eigen status: Gesynchroniseerd, Eerste synchronisatie loopt, Synchronisatiefout of Verbinding verbroken, met "Laatst gesynchroniseerd …" erbij. Waar een koppeling via het Google-account van een collega loopt en die verbinding wegvalt, noemt het scherm wie dat is: dat is de persoon aan wie je het vraagt. 's Nachts haalt een taak per organisatie de dagcijfers op en trekt daarbij de laatste week opnieuw door, want Search Console wordt pas twee tot drie dagen later definitief en de attributie van Analytics blijft nog even schuiven. Voor Google Ads zijn dat dertig dagen: Google schrijft een conversie tot het einde van het conversievenster toe aan de dag van de klik, en een maand die maar een week opnieuw gelezen werd, stond jaar-op-jaar met te weinig conversies tegen een vorig jaar dat allang definitief was. Elke koppeling loopt los van de andere, dus één kapotte verbinding legt de rest niet stil. Bij het aanmaken van een koppeling start een backfill van ongeveer dertien maanden, per maand weggeschreven, zodat sparklines en jaar-op-jaar meteen werken. Ontkoppelen wist niets: de koppeling wordt gedeactiveerd, de gesynchroniseerde historie blijft, en opnieuw koppelen zet hem weer aan.
Sleutels, rechten en licentie
Marketing rijdt mee op de Google-koppeling van je bureau: je registreert je eigen Google Cloud-project en de marketingrechten worden bij hetzelfde toestemmingsscherm gevraagd, dus een collega hoeft niet drie keer langs Google. Onder Instellingen → Marketing zet je de SE Ranking API-sleutel (één sleutel voor het hele bureau, waar elk klantproject aan wordt gekoppeld), optioneel een aparte SE Ranking Data API-sleutel voor de AI-zichtbaarheid, en het Google Ads-ontwikkelaarstoken; ze worden versleuteld opgeslagen en nooit teruggegeven, het scherm meldt alleen dát er een sleutel staat. Sleutel controleren kost niets en zegt per API of de sleutel toegang heeft en hoeveel Data API-units er over zijn. Onder Namen van bronnen geef je een bron je eigen naam, en die naam staat dan op de marketingpagina, de klantpagina en in het portaal, tot in de zinnen eromheen; een klant leest nooit de naam van je leverancier. Wie wat mag, staat los van elkaar: de cijfers lezen doet standaard elk teamlid, koppelingen leggen is beheerderswerk en het kruis-klantoverzicht is een managementscherm. De kern van schakl. is open source (AGPL); marketing is een uitbreidingsmodule en vraagt een licentiesleutel. Loopt die af, dan wordt de module alleen-lezen: koppelen en instellingen weigeren en de nachtelijke synchronisatie staat stil, maar het paneel, het tabblad en het overzicht blijven de al opgehaalde cijfers tonen.
- Marketingcijfers bekijken: standaard voor elk teamlid, te versmallen als je advertentiebudget gevoelig vindt
- Marketingkoppelingen beheren: beheerders, zoals de Google-instellingen zelf
- Marketingoverzicht bekijken: het kruis-klantscherm, standaard voor managers
- Een klantlogin in het portaal ziet alleen het dashboard dat jij voor die klant hebt samengesteld, zonder links naar Google en zonder collega's erbij
De periode is een naam, geen aantal dagen
De vraag die een bureau werkelijk krijgt is "hoe ging juli?", en dertig dagen terugtellen vanaf vandaag beantwoordt die niet: dat is 11 juli tot 9 augustus, en dat is geen maand waar iemand over rapporteert. Eén woord benoemt daarom de periode: een lopend venster, een rollend voorzetsel als deze maand of vorig kwartaal, een vastgezette periode als 2026-07, of een eigen periode van datum tot datum, zodat een meetbreukpunt het begin van een link kan zijn. Een tabblad blijft zo volgende maand nog steeds "vorige maand" betekenen, terwijl een link die je in een gesprek plakt de maand blijft tonen waar je naar keek. Het label wordt bepaald door de datums en niet door het woord dat je koos. Datzelfde geldt voor de vergelijking: een percentage is een uitspraak over twee periodes, dus staan ze er allebei bij, in woorden ("vergeleken met dezelfde periode vorig jaar (23 aug - 21 sep 2025)") en niet als "t.o.v. vorige periode". Standaard is dat vorig jaar, omdat seizoen de vergelijking met de maand ervoor zinloos maakt; je kunt het dashboard ook tegen de vorige periode laten afzetten, met per klant een afwijking.
- Een periode-tot-nu zonder hele dag valt terug op de vorige hele periode; 1 augustus heeft nog geen augustus
- Een periode die je zelf benoemde wordt nooit stilzwijgend vervangen
- Het overzicht over alle klanten negeert bewust de afwijking per klant, want percentages met verschillende noemers rangschikken niets
Meer weten?
De documentatie beschrijft elke module tot in de details, van installatie tot rechten.