Diepteanalyse · 13 min lezen

Waar begin je met zoekcampagnes op een gigantische site? Je GA4 weet het al.

De eerste zoekvraag op een grote site is niet welke zoekwoorden, maar welke landingspagina's betaalde kliks kunnen dragen. Je GA4 weet het antwoord al.

Reusachtige landingspagina-deuren gesorteerd op stapels JA en NEE.
De serieuze feiten zijn echt — de artikelcovers niet.

Kort gezegd: Op een gigantische site is de eerste zoekvraag niet welke zoekwoorden. Het is welke landingspagina's het adverteren rekenkundig kunnen dragen. Voer een GA4-export plus een sitecrawl in, bereken maxCPC = doel-CRR × CR × AOV per pagina en vergelijk dat met je echte gemiddelde CPC. Eruit rolt een gerangschikte TOP 100–200 bouwstapel, een fix-stapel met probleempagina's en een skip-stapel, allemaal voordat je één cent uitgeeft.

Een klant gaf me ooit een site met zo’n tienduizend landingspagina’s en één vraag. Waar beginnen we met Search? Het standaardantwoord van bureaus hoor ik al twintig jaar. Richt een brede campagne op alles en laat Google het uitzoeken. Ik heb ook vaak genoeg achter dat antwoord opgeruimd om te weten wat het kost. Het verbrandt budget op pagina’s die nooit een kans hadden om te converteren, trekt de doel-ROAS los en vergiftigt de leerfase voordat iemand één rapport heeft gelezen.

Dus voordat er één cent het account verlaat, laat ik elke landingspagina bewijzen dat hij een betaalde klik kan dragen. Dat bewijs draait op twee dingen die je al bezit. Een GA4-export van je landingspagina’s en een crawl van je site. Wat terugkomt is één gerangschikte lijst van de pagina’s die als eerste een zoekcampagne waard zijn, elk met de exacte max CPC die hij kan betalen, plus een nette “hier niet op bieden”-stapel voor de pagina’s waarvan de economie betaald zoeken verbiedt. Geen zoekwoordtool, geen onderbuikgevoel, geen “laten we Dynamic Search Ads gewoon aanzetten en zien wat er gebeurt.”

Dat is het hele artikel. Hieronder draai ik de pipeline van begin tot eind en laat ik je bij elke stap het letterlijke ding zien dat hij uitspuugt. De GA4-rijen, de max-CPC-rekensom op één regel, de crawl-extractietabel, de prioriteringssortering vóór en na, en de probleempagina-diagnose die een pagina redt die iedereen anders zou verwijderen. De getallen zijn overal illustratief, dus vul je eigen cijfers in. De vormen zijn exact wat de tools teruggeven.

TOP 100–200
landingspagina's die je eerst moet bouwen
CRR × CR × AOV
de max CPC die elke pagina kan betalen
~3 min
om de crawl-extractie op te zetten
€0,10 CPC
de pagina's waar je nooit op moet bieden

De pipeline in één kader

  • Waar we naar op zoek zijn De landingspagina's die het waard zijn om te adverteren, gerangschikt
  • Input GA4-landingspagina-export · een sitecrawl
  • De ene formule maxCPC = doel-CRR × CR × AOV
  • Wat je krijgt Een bouwstapel, een fix-stapel en een skip-stapel

Het ene getal dat alles bepaalt

Elke landingspagina heeft een plafond. Het maximale dat je voor een klik kunt betalen en toch je doelefficiëntie haalt. Bereken dat per pagina en de hele prioritering rolt uit de wiskunde:

maxCPC = doel-CRR × CR × AOV

waarbij CRR (cost-revenue ratio, het Europese PNO, gelijk aan ACOS) het aandeel van de omzet is dat je bereid bent aan advertenties uit te geven, CR het conversiepercentage van de pagina is, en AOV de gemiddelde orderwaarde.

Een uitgewerkt voorbeeld, recht uit de formule. Een categoriepagina converteert op 2 %, heeft een gemiddelde order van €1.000, en je bent bereid 10 % van de omzet aan advertenties uit te geven (een 10× ROAS):

maxCPC = 0,10 × 0,02 × €1.000 = €2,00.

Denk je liever in ROAS, dan herschikt hetzelfde zich tot maxCPC = CR × AOV / ROAS = 0,02 × 1.000 / 10 = €2,00. Hetzelfde getal, kies de vorm die je brein prettig vindt. (Illustratief voorbeeld.)

Die €2,00 is het oordeel. Vergelijk hem met de echte gemiddelde CPC in je account voor die markt en de pagina sorteert zichzelf. Ruim boven het gemiddelde, bouwen. Eronder, hij kan zichzelf niet betalen. Ver eronder, er niet eens aan denken. Alles wat volgt is gewoon dit getal voor elke pagina produceren, betrouwbaar, en het resultaat aflezen.

De pipeline in één oogopslag

Vijf stappen. Voor elke stap wat je doet, waar je naar kijkt, en waarom. Elke stap bestaat om één specifieke vraag over een pagina te beantwoorden.

1 · Haal de landingspagina-economie uit GA4

Doe: exporteer per landingspagina sessies, conversies, transacties en omzet; leid CR en AOV af. Waarom: dit is het vraag-en-geld-signaal, en zonder dat is de max CPC een gok. Je krijgt: één rij per pagina met de twee getallen die de formule opeet, CR en AOV.

2 · Crawl de site voor structuur

Doe: crawl elke pagina voor title, H1, breadcrumb-diepte en, de kolom die ertoe doet, hoeveel producten hij toont. Waarom: GA4 kent de economie maar niet de structuur. Een pagina met twee producten op voorraad kan geen campagne dragen, hoe goed hij ook converteert. Je krijgt: de structurele spiegel van je GA4-rijen, plus een vlag voor dunne pagina’s.

3 · Join de twee, bereken de max CPC

Doe: join GA4 en de crawl op URL, draai de formule op elke rij, gooi dunne pagina’s eruit. Waarom: hier komen economie en structuur samen en wordt het oordeel berekenbaar. Je krijgt: elke pagina met een max CPC ernaast.

4 · Prioriteer: max CPC vs. echte gem. CPC

Doe: zet de max CPC van elke pagina naast de werkelijke gemiddelde CPC in je account of land, sorteer op speelruimte. Waarom: een max CPC betekent niets op zichzelf. Alleen de kloof met wat klikken echt kosten bepaalt of een pagina kan betalen. Je krijgt: de TOP 100–200 bouwstapel, een fix-stapel en een skip-stapel.

5 · Diagnosticeer de probleempagina's

Doe: check voor pagina’s die zouden moeten converteren maar dat niet doen de prijsconcurrentie van de producten die ze als eerste tonen. Waarom: een lage CR op een pagina die zou moeten verkopen is meestal een merchandising-lek, en een merchandising-lek is te fixen. Je krijgt: pagina’s gered uit de skip-stapel, terug in de bouwstapel, zodra ze echt kunnen converteren.

Nu dezelfde vijf stappen, één voor één, elk met het letterlijke ding dat hij oplevert.

Stap 1 · De GA4-export, zoals hij binnenkomt

Je hebt geen fancy rapport nodig. Open in GA4 Verkennen → leeg → Vrije vorm, dimensie Landingspagina + querystring, statistieken Sessies, Belangrijke gebeurtenissen / Conversies, Totale omzet. Voeg Transacties toe als je die hebt; anders komt AOV uit omzet ÷ conversies. Eén filter vooraf. Sluit productdetailpagina’s uit en houd categorie- en collectiepagina’s over. Je bepaalt waar je verkeer naartoe stuurt, en op de meeste sites zijn dat categorieën, geen individuele SKU’s. SKU’s ertussen mengen vertekent elke AOV en CR die je berekent.

Zo zien vier representatieve rijen eruit eenmaal geëxporteerd, met CR en AOV afgeleid:

Landing page         Sessions  Conv   CR     Revenue    AOV
/cordless-vacuums       8,140    163   2.0%   €68,460    €420
/winter-tyres           5,020    156   3.1%   €28,080    €180
/sleeping-bags         12,300    135   1.1%   €12,825    €95
/phone-cases            9,800    137   1.4%    €2,192    €16

(Illustratief voorbeeld.) CR is conversies ÷ sessies; AOV is omzet ÷ conversies. Dat is de hele input die de formule uit GA4 nodig heeft. Twee kolommen per pagina, CR en AOV. Merk nu al op dat /sleeping-bags de meeste sessies in de set trekt en toch het slechtst converteert. Onthoud dat even, het is later de interessante.

Stap 2 · De crawl, en de kolom die het werk doet

GA4 vertelde je hoe elke pagina presteert. Het kan je niet vertellen dat een pagina structureel hol is. Een “categorie” met twee producten op voorraad, of een parametrische filterweergave die nooit een campagne zou moeten dragen. Daarvoor crawl je. Twee routes. Laat een AI in vijf minuten een wegwerp-crawler voor je schrijven, of gebruik Screaming Frog met een custom XPath-extractie die je in zo’n drie minuten opzet (volledige mini-gids in de download aan het einde van het artikel). Draai hem in List mode op je set GA4-URL’s en hij maalt op de achtergrond terwijl jij iets anders doet.

De ene kolom die zijn plek verdient is het productaantal, hoeveel productkaarten de pagina daadwerkelijk rendert. Hier is de extractie-output gejoined aan dezelfde vier pagina’s, plus nog eentje die de crawl markeert:

URL                  Title                H1               Products  Breadcrumb
/cordless-vacuums    Cordless Vacuums …   Cordless Vacuums      48    Home>Floorcare>Vacuums
/winter-tyres        Winter Tyres | …     Winter Tyres        112    Home>Tyres>Winter
/sleeping-bags       Sleeping Bags …      Sleeping Bags         9    Home>Camping>Sleep
/phone-cases         Phone Cases …        Phone Cases         640    Home>Accessories>Cases
/clearance-2019      Clearance            Clearance             0    Home>Clearance

(Illustratief voorbeeld.) De dunne-pagina-regel doet meteen zijn werk. /clearance-2019 toont nul producten, een lege categorie waar GA4 nog steeds sessies tegen logt. Gooi elke pagina onder de ongeveer drie producten eruit voordat je prioriteert, en die spookpagina bereikt de bouwstapel nooit. In de praktijk is de volgorde kort. De crawl laat een “categorie” zien met niets levends te verkopen, je sluit hem uit vóór de prioritering, en je verspilt geen campagne of een middag van een analist aan een pagina die niets te bieden heeft.

Stap 3 · Join de twee, en de formule op één rij

Nu worden de twee datasets één. Join GA4 en de crawl op URL en elke pagina draagt zowel zijn economie (CR, AOV) als zijn structuur (productaantal). Draai maxCPC = doel-CRR × CR × AOV langs de kolom. Kijk hoe hij landt op één echte rij, /cordless-vacuums bij een doel-CRR van 10 %:

maxCPC = 0,10 × 0,020 × €420 = €0,84.

Eén regel, één plafond. Doe het voor alle vier de overlevers en je krijgt de max CPC per pagina waar de hele beslissing aan hangt:

Page                CR     AOV    CRR    maxCPC = CRR×CR×AOV
/cordless-vacuums   2.0%   €420   10%    0.10 × 0.020 × 420 = €0.84
/winter-tyres       3.1%   €180   12%    0.12 × 0.031 × 180 = €0.67
/sleeping-bags      1.1%    €95   10%    0.10 × 0.011 ×  95 = €0.10
/phone-cases        1.4%    €16   10%    0.10 × 0.014 ×  16 = €0.02

(Illustratief voorbeeld.) De doel-CRR kan per pagina verschillen als je marges dat doen. /winter-tyres draagt hier 12 % omdat de categorie een lossere efficiëntie tolereert. Al het andere is mechanisch. Je hebt nu een max CPC voor elke pagina op de site; de volgende stap is de enige beoordeling die overblijft.

Stap 4 · Prioriteren: de sortering, vóór en na

Een max CPC betekent niets op zichzelf. €0,84 is royaal in de ene markt en onbetaalbaar in de andere. Wat beslist is de kloof met wat een klik je echt kost. Haal dus je echte gemiddelde CPC per pagina (of per markt, als je geen paginaniveau hebt) uit het Google Ads-account en zet de twee naast elkaar.

Vóór, de ruwe join in de volgorde waarin hij uit GA4 kwam, onleesbaar als plan:

Page                maxCPC   avg CPC
/sleeping-bags      €0.10    €0.45
/phone-cases        €0.02    €0.35
/cordless-vacuums   €0.84    €0.55
/winter-tyres       €0.67    €0.40

Na, gesorteerd op speelruimte (maxCPC − gem. CPC), worden dezelfde vier rijen een werkorder met het oordeel in de laatste kolom:

LandingspaginaCRAOVDoel-CRRmaxCPCgem. CPCOordeel
/cordless-vacuums 2.0%€42010%€0.84€0.55Nu bouwen
/winter-tyres 3.1%€18012%€0.67€0.40Nu bouwen
/sleeping-bags 1.1%€9510%€0.10€0.45Eerst fixen (probleempagina)
/phone-cases 1.4%€1610%€0.02€0.35Niet de moeite

(Illustratief voorbeeld.) De getallen zijn verzonnen om het mechanisme te tonen, dus vul je eigen GA4-cijfers in. Elke maxCPC hier is gewoon doel-CRR × CR × AOV toegepast op de rij.

Twee rijen zijn overduidelijk. /cordless-vacuums kan €0,84 betalen tegen een markt van €0,55, 53 % speelruimte, bouwen. /winter-tyres idem. /phone-cases kan €0,02 betalen tegen €0,35. Dat gaat zelfs in je stoutste dromen niet werken, laat hem weg en kijk niet meer om. Schaal dit van vier rijen naar tienduizend en de top van de gesorteerde lijst is je TOP 100–200, de pagina’s die je als eerste bouwt, gerangschikt op hoeveel ruimte ze hebben om te bieden.

De interessante is /sleeping-bags. maxCPC €0,10 tegen een markt van €0,45, dus op papier “niet de moeite”. Maar hij had de meeste sessies in de hele export en een categorie die duidelijk zou moeten verkopen. Een verdacht lage CR op een pagina die zou moeten converteren is zelden een vraagprobleem. Het is een probleempagina, en probleempagina’s krijgen een diagnose, geen delete.

Stap 5 · Probleempagina’s: de diagnose, op een echte listing

Wanneer het conversiepercentage van een pagina ver onder ligt waar de categorie zou moeten landen, vraag dan waarom voordat je hem laat vallen. Bij e-commerce is het antwoord meestal de prijsconcurrentie van de producten die de pagina als eerste toont. De eerste 10–20 producten die een bezoeker ziet zijn de complete eerste indruk van de pagina. Zijn dat je zwakste items qua waarde, dan stort de CR in, hoeveel vraag de pagina ook trekt.

Dus lees je de categorie precies zoals de klant dat doet, in zijn standaard sorteervolgorde, en check je de prijzen van de heldposities.

Lees de productmix van de categorie in sorteervolgorde

Haal de producten in /sleeping-bags op via hun product_type uit Google Merchant Center, in de standaardvolgorde die de bezoeker daadwerkelijk krijgt. De top van de lijst is wat converteert (of niet).

Check de prijzen van de topposities tegen de markt

Neem de bovenaan getoonde producten en onderzoek live prijzen van concurrenten met DataForSEO. Het serp/google/organic/live/advanced endpoint geeft de hele resultatenpagina terug (shopping-blokken met merchants en prijzen, organisch eronder) als gestructureerde JSON. Facturering loopt per SERP van maximaal 10 resultaten, tegen een basisprijs van ongeveer $0,002 vóór betaalde geavanceerde parameters.

Herprijs of hersorteer, meet dan opnieuw

Zijn de heldposities te duur, dan heb je twee hefbomen. Herprijzen, of de categorie hersorteren zodat echt concurrerende producten vooroplopen. Houd dan de CR in de gaten. Pas zodra die stijgt, promoveer je de pagina van “probleem” naar de bouwstapel.

Zo ziet die diagnose er letterlijk uit op /sleeping-bags, de pagina die op maxCPC €0,10 zit. Top van de listing, jouw prijs tegen de goedkoopste concurrent die DataForSEO voor hetzelfde product vond:

Pos  Product (first-listed)       Your price  Cheapest comp.  Gap
 1   AlpineLite 200 Down Bag      €129        €99             +30%
 2   TrekWarm Mummy −5°C          €115        €112            +3%
 3   BaseCamp Synthetic XL        €89         €92             −3%
 4   ValleyHike Junior            €45         €47             −4%

(Illustratief voorbeeld.) Het lek zit precies bovenaan. Het product dat 12.300 maandelijkse bezoekers als eerste tegenkomen, staat 30 % boven het goedkoopste marktaanbod. Alles eronder is concurrerend, maar niemand scrolt voorbij een slechte eerste indruk. Verlaag de prijs van de held naar €105, of hersorteer zodat het concurrerende BaseCamp en ValleyHike vooroplopen, en de CR herstelt richting de categorienorm. Draai stap 3 opnieuw, de maxCPC klimt van €0,10 af, en de pagina promoveert naar de bouwstapel.

Dit is de loop die de meeste bureaus nooit sluiten, omdat hij een grens overschrijdt die ze normaal niet aanraken. Het werk van de shop (prijzen, merchandising, sorteervolgorde) en het werk van het bureau (het verkeer inkopen) zijn dezelfde optimalisatieloop. Stem de één af zonder de ander en je biedt in een lek.

Na het filter: kiezen hoe je inkoopt

Pas nu, met de bouwstapel in handen, kies je het hoe. AI Max, Dynamic Search Ads, klassieke STAG, of een combinatie (breed plus DSA in één campagne). Eén campagne of drie of vijf hangt af van de klant en het conversievolume; respecteer de regel van ongeveer 30 conversies per campagne voordat je opsplitst. Ik laat deze keuze bewust aan jou. Het punt van de hele pipeline is dat je hem na de economie maakt, niet ervoor.

Wat je ook kiest, de regel is hetzelfde. Een nieuwe campagne mag nooit starten op slechte pagina’s. Zwakke landingspagina’s trekken je doel-ROAS los en vergiftigen de leerfase. Het pre-filter houdt de lancering uitsluitend gericht op pagina’s die zichzelf kunnen betalen. Van daaruit is het bouwen van de superstructuur (crawldata plus zoekwoordenonderzoek per categorie via de Google Ads API, opgebouwd in golven per categorie, taal en volwassenheid) een eigen verhaal, en daar is er één over.

Het stuk dat terugkoppelt naar het manifest

Technisch is hier niets nieuws aan. Je had de GA4-export, de crawl, de prijsscrape en de join vijf jaar geleden al kunnen draaien. Maar het zou een half jaar maatwerkontwikkeling zijn geweest, en iedereen met gezond verstand zou halverwege zijn afgehaakt. Twaalf jaar schrijven tegen de Google Ads API heeft me precies geleerd hoe zulke projecten sterven. De reden dat ik het nu opschrijf is dat dit met tools als Codex, Claude Code en de huidige generatie agents geen project meer is, maar een doodgewone dinsdag-workflow werd, een script dat je op een account richt en ‘s nachts laat draaien.

Dat is de hele verschuiving, en hij is van beide kanten tegelijk het duidelijkst. Het prijzen-en-merchandising-werk van de webshop en het advertentiewerk van het bureau klappen samen tot één loop die je eindelijk samen kunt afstemmen. De economie laat je hem sluiten.

Take it with you

Download de complete instructies voor je AI

Het hele filter hierboven, herschreven als een brief die je zo in Claude of een andere capabele coding agent plakt. Jij levert de GA4-export en de crawl; hij berekent de max CPC van elke pagina en geeft je de stapels bouwen, fixen en skippen terug. Laat je e-mail achter en het bestand is van jou.

One file, one list. I only write when there's something worth reading.

FAQ

Waarom maxCPC gebruiken in plaats van gewoon naar ROAS-doelen in Google Ads kijken?

Omdat Google’s tROAS pas reageert nadat je geld hebt uitgegeven aan leren. maxCPC is een filter vóór de lancering. Het vertelt je, vóór één enkele klik, welke pagina’s rekenkundig kunnen adverteren. Je gebruikt het om te bepalen wat je bouwt; tROAS draait vervolgens wat je gebouwd hebt.

Mijn CR en AOV schommelen flink van maand tot maand. Breekt dat de formule niet?

Gebruik een stabiel venster van 60 tot 90 dagen en segmenteer op apparaat of markt als die wezenlijk verschillen. De formule hoeft niet tot op de cent te kloppen. Hij sorteert pagina’s in stapels bouwen, fixen en skippen, en speelruimte op grootteorde-niveau is waar je naar op zoek bent.

Heb ik echt Screaming Frog nodig, of kan AI gewoon de crawler schrijven?

Allebei werkt. Screaming Frog met een custom XPath-extractie is de no-code route en is echt in drie minuten opgezet. Een gescripte crawler is beter als je de data automatisch in een pipeline gejoined wilt hebben. Kies op basis van of dit een eenmalige audit is of een herhaalbare workflow.

Wat telt als een 'probleempagina' versus een pagina die ik gewoon moet skippen?

Een skip-pagina heeft van nature zwakke economie. Lage AOV, lage intentie, dus zijn maxCPC is oprecht piepklein en zal dat altijd blijven (/phone-cases op €0,02). Een probleempagina zou moeten converteren. Fatsoenlijke AOV, echte vraag, veel sessies, en toch doet hij het niet, meestal omdat de eerst getoonde producten te duur zijn of slecht gesorteerd (/sleeping-bags op €0,10). Skip-pagina’s laat je weg; probleempagina’s fix je en meet je opnieuw.

Werkt dit alleen voor e-commerce?

De maxCPC-formule werkt overal waar je een conversiewaarde hebt, lead gen inbegrepen, waar AOV de leadwaarde wordt. De probleempagina-diagnose (Merchant Center product_type, prijzen van concurrenten, sorteervolgorde van categorieën) is specifiek voor e-commerce. Probleempagina’s bij lead gen hebben hun eigen diagnose nodig, meestal frictie in het formulier of een mismatch in het aanbod.

Hoe hangt dit samen met AI Max en het einde van DSA?

Het zit upstream van die beslissing. Welk campagnetype je ook kiest, AI Max, de opvolger van DSA of klassieke STAG, het mag alleen ooit wijzen naar pagina’s die door dit filter kwamen. De strategiekeuze verandert hoe je inkoopt; de economie bepaalt wat überhaupt de moeite waard is om in te kopen.


CTA: Wil je de bouwstapel voor jouw site, gerangschikt op wat elke pagina echt kan betalen? Stuur me je GA4-export en we draaien het filter samen.

Waar het allemaal om draait

Wil je dit niveau van inzicht in je eigen account?

Eén e-mail. Ik zeg je eerlijk of het de moeite waard is voor jouw setup.

Contact →