Kort gezegd: Op een gigantische site gaat de eerste zoekvraag niet over welke zoekwoorden je koopt, maar over welke landingspagina's de kosten van betaalde klikken rekenkundig kunnen dragen. Voer een GA4-export plus een sitecrawl in, bereken maxCPC = doel-CRR × CR × AOV voor elke pagina en vergelijk elke maxCPC 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.
Wil je alleen het gedestilleerde filter?
Download de complete AI-instructies — één bestand dat je in Claude of een andere capabele coding agent plakt, en hij sorteert je pagina's in stapels bouwen, fixen en skippen. Laat je e-mail achter en het bestand is van jou — of lees gewoon verder.
Eén bestand, één lijst. Ik schrijf alleen als er iets te lezen valt.
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. Zet een brede campagne op de hele site en laat Google het uitzoeken. Ik heb ook vaak genoeg achter dat antwoord opgeruimd om te weten wat het kost. Het verbrandt budget aan pagina’s die nooit een kans hadden om te converteren, drukt de ROAS van het account onder het doel 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. Je krijgt een gerangschikte lijst van pagina’s waarvoor het loont om een zoekcampagne op te zetten. Bij elke pagina staat de exacte max CPC die ze kan betalen. Daarnaast krijg je een nette stapel “hier niet op bieden” voor pagina’s waarvoor adverteren via Search economisch niet uit kan. 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 van elke stap de daadwerkelijke output zien. 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 output staat er precies zo bij als de tools hem teruggeven.
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 hoogste bedrag dat je voor een klik kunt betalen en toch je doelefficiëntie haalt. Bereken dat plafond voor elke pagina en de hele prioritering rolt vanzelf uit de berekening:
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. Ligt hij ruim boven het gemiddelde, dan bouw je de pagina. Ligt hij eronder, dan kan de pagina zichzelf niet betalen. Ligt hij ver eronder, dan komt de pagina niet eens in aanmerking. 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
Wat je doet: exporteer per landingspagina sessies, conversies, transacties en omzet; leid CR en AOV af. Waarom: deze twee getallen meten vraag en geld op één plek, en zonder die twee is de max CPC een gok. Wat je krijgt: één rij per pagina met de twee getallen die de formule opeet, CR en AOV.
2 · Crawl de site op structuur
Wat je doet: crawl elke pagina op title, H1 en breadcrumb-diepte, en vooral op de kolom die het werk 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. Wat je krijgt: de structurele spiegel van je GA4-rijen, plus een vlag voor dunne pagina’s.
3 · Join de twee, bereken de max CPC
Wat je doet: 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. Wat je krijgt: elke pagina met een max CPC ernaast.
4 · Prioriteer: max CPC vs. echte gem. CPC
Wat je doet: 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 zichzelf kan betalen. Wat je krijgt: de TOP 100–200 bouwstapel, een fix-stapel en een skip-stapel.
5 · Diagnosticeer de probleempagina's
Wat je doet: 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. Wat 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 de output die hij oplevert.
Haal de complete AI-instructies voor dit filter
Het hele filter, 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.
Eén bestand, één lijst. Ik schrijf alleen als er iets te lezen valt.
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 zoekt uit welke pagina’s het waard zijn om verkeer naartoe te sturen, en op de meeste sites zijn dat categoriepagina’s, geen losse productpagina’s. Productpagina’s door de export mengen vertekent elke AOV en CR die je berekent.
Zo zien vier representatieve rijen eruit eenmaal geëxporteerd, met CR en AOV afgeleid:
Landingspagina Sessies Conv. CR Omzet 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 die pagina; hij wordt later het interessante geval.
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 loopt op de achtergrond terwijl jij iets anders doet.
De ene kolom die het werk doet is het productaantal: hoeveel productkaarten de pagina daadwerkelijk rendert. Hier is de extractie-output gejoind aan dezelfde vier pagina’s, plus nog eentje die de crawl markeert:
URL Titel H1 Producten Breadcrumb
/cordless-vacuums Cordless Vacuums … Cordless Vacuums 48 Home>Floorcare>Vacuums
/winter-tyres Winter Tyres | … Winter Tyres 112 Home>Tyres>Winter
/sleeping-bags Slaapzakken … Slaapzakken 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 die in GA4 nog steeds sessies verzamelt. Gooi elke pagina onder de ongeveer drie producten eruit voordat je prioriteert, en die spookpagina bereikt de bouwstapel nooit. In de praktijk is de dunne-paginaregel één handeling op één signaal. De crawl laat een “categorie” zien die niets te verkopen heeft, en je sluit hem uit vóór de prioritering. Je verspilt geen campagnebudget, en geen 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). Pas maxCPC = doel-CRR × CR × AOV toe op elke rij van die samengevoegde tabel. Kijk hoe hij landt op één 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:
Pagina 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.) Als je marges van pagina tot pagina verschillen, kan de doel-CRR meebewegen. /winter-tyres heeft hier een doel-CRR van 12 % omdat de categorie een minder streng efficiëntiedoel aankan. 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 de werkelijke gemiddelde CPC per pagina uit het Google Ads-account. Rapporteert het account geen CPC per pagina, neem dan het gemiddelde voor de betreffende markt. Zet die werkelijke gemiddelde CPC naast de max CPC van de pagina.
Vóór, de ruwe join met de rijen in de volgorde waarin ze toevallig terechtkwamen, onleesbaar als plan:
Pagina maxCPC gem. 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:
| Landingspagina | CR | AOV | Doel-CRR | maxCPC | gem. CPC | Oordeel |
|---|---|---|---|---|---|---|
| /cordless-vacuums | 2,0 % | € 420 | 10 % | € 0,84 | € 0,55 | Nu bouwen |
| /winter-tyres | 3,1 % | € 180 | 12 % | € 0,67 | € 0,40 | Nu bouwen |
| /sleeping-bags | 1,1 % | € 95 | 10 % | € 0,10 | € 0,45 | Eerst fixen (probleempagina) |
| /phone-cases | 1,4 % | € 16 | 10 % | € 0,02 | € 0,35 | Niet 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 waar de markt € 0,55 kost: dat is 53 % speelruimte, dus bouw je hem. /winter-tyres idem. /phone-cases kan maar € 0,02 betalen waar klikken € 0,35 kosten. Dat gaat zelfs in je stoutste dromen niet werken, dus 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 /sleeping-bags trok de meeste sessies in de hele export, en slaapzakken zijn 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 wat de categorie zou moeten opleveren, 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 producten die hij als eerste toont.
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.
Verlaag de prijs of verander de sorteervolgorde, meet dan opnieuw
Zijn de eerst getoonde producten te duur, dan heb je twee hefbomen. Verlaag hun prijs, of verander de sorteervolgorde van de categorie zodat echt concurrerende producten vooroplopen. Houd dan de CR in de gaten. Pas zodra de CR stijgt, promoveer je de pagina van de fix-stapel naar de bouwstapel.
Zo ziet die diagnose eruit 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 (eerst getoond) Jouw prijs Goedkoopste concurrent Verschil
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 bij 12.300 maandelijkse sessies als eerste in beeld komt, staat 30 % boven het goedkoopste marktaanbod. Alles eronder is concurrerend, maar na zo’n slechte eerste indruk scrolt bijna niemand verder. Verlaag de prijs van AlpineLite naar € 105, of verander de sorteervolgorde zodat het concurrerende BaseCamp en ValleyHike vooraan komen, en de CR klimt terug naar het normale niveau voor de categorie. Draai stap 3 opnieuw: de maxCPC stijgt boven € 0,10, en de pagina promoveert naar de bouwstapel.
Dit is de lus die de meeste bureaus nooit sluiten, omdat hij reikt tot in een gebied waar ze zich normaal buiten houden. Het werk van de shop (prijzen, merchandising, sorteervolgorde) en het werk van het bureau (het verkeer inkopen) zijn twee helften van één optimalisatielus. Optimeer je de inkoop zonder de shop, dan betaal je voor verkeer dat weglekt.
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). Of dat één campagne is 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 drukken de ROAS van het account onder het doel en vergiftigen de leerfase. Het pre-filter beperkt de lancering tot pagina’s die zichzelf kunnen betalen. Van daaruit bouw je de superstructuur: crawldata plus zoekwoordenonderzoek per categorie via de Google Ads API, opgebouwd in golven per categorie, taal en volwassenheid. Die superstructuur is een verhaal apart, en ik heb hem beschreven in een apart artikel over marktexpansie.
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 programmeerwerk met de Google Ads API heeft me precies geleerd hoe zulke projecten sterven. Ik schrijf het nu op omdat tools als Codex, Claude Code en de huidige generatie agents er een doodgewone dinsdagworkflow van hebben gemaakt: een script dat je ‘s nachts op een account laat draaien.
Dat is de hele verschuiving, en hij is van beide kanten tegelijk het duidelijkst. Het werk van de webshop aan prijzen en merchandising en het werk van het bureau aan advertenties vallen samen tot één lus, en beide helften kunnen eindelijk samen worden geoptimaliseerd. De economie is wat je die lus laat sluiten.
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.
Eén bestand, één lijst. Ik schrijf alleen als er iets te lezen valt.
FAQ
Waarom maxCPC gebruiken in plaats van gewoon naar ROAS-doelen in Google Ads kijken?
Omdat Googles 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 de kosten van betaalde klikken rekenkundig kunnen dragen. 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 de cijfers per apparaat of markt wezenlijk verschillen. De formule hoeft niet tot op de cent te kloppen. Hij sorteert pagina’s in stapels bouwen, fixen en skippen; wat je nodig hebt is de ruwe orde van grootte van de speelruimte, niet het exacte cijfer.
Heb ik echt Screaming Frog nodig, of kan AI gewoon de crawler schrijven?
Beide werken. 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 gejoind 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 is zijn maxCPC echt 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?
Dit filter draait voordat je een campagnetype kiest. Of je nu AI Max (de opvolger van DSA) of klassieke STAG kiest, mag de campagne alleen verkeer sturen naar pagina’s die het filter doorstonden. 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.