Kort sagt: På en jättesajt är den första Search-frågan inte sökord. Det är vilka målsidor som matematiskt har råd att annonseras. Mata in en GA4-export plus en sajt-crawl, beräkna maxCPC = mål-CRR × CR × AOV per sida och jämför med din verkliga genomsnittliga CPC. Ut kommer en rankad TOP 100–200 bygghög, en fix-hög med problemsidor och en skippa-hög, allt innan du spenderar ett öre.
En kund gav mig en gång en sajt med ungefär tiotusen målsidor och en enda fråga. Var börjar vi med Search? Byråernas standardsvar har jag hört i tjugo år. Rikta en bred kampanj mot allt och låt Google reda ut det. Jag har också städat upp efter det svaret tillräckligt ofta för att veta vad det kostar. Det bränner budget på sidor som aldrig hade en chans att konvertera, drar mål-ROAS loss och förgiftar inlärningsfasen innan någon hunnit läsa en enda rapport.
Så innan ett öre lämnar kontot låter jag varje målsida bevisa att den har råd med ett betalt klick. Beviset körs på två saker du redan äger. En GA4-export av dina målsidor och en crawl av din sajt. Det som kommer tillbaka är en rankad lista över sidorna värda en Search-kampanj först, var och en med den exakta max-CPC den har råd med, plus en ren “buda inte på det här”-hög för sidorna vars ekonomi förbjuder betald sök. Inget sökordsverktyg, ingen magkänsla, inget “vi slår bara på Dynamic Search Ads och ser”.
Det är hela artikeln. Nedan kör jag pipelinen från ände till ände och visar dig, vid varje steg, den bokstavliga grejen den spottar ur sig. GA4-raderna, max-CPC-aritmetiken på en enda rad, crawl-extraktionstabellen, prioriteringssorteringen före och efter, och problemsidesdiagnosen som räddar en sida alla andra skulle radera. Siffrorna är illustrativa genomgående, så stoppa in dina egna. Formerna är exakt vad verktygen returnerar.
Pipelinen i en ruta
- Vad vi är ute efter Målsidorna värda att annonsera, rankade
- Indata GA4-målsidesexport · en sajt-crawl
- Den enda formeln maxCPC = mål-CRR × CR × AOV
- Vad du får En bygghög, en fix-hög och en skippa-hög
Den enda siffran som avgör allt
Varje målsida har ett tak. Det mesta du kan betala för ett klick och ändå träffa din måleffektivitet. Beräkna det per sida och hela prioriteringen faller ut ur matematiken:
maxCPC = mål-CRR × CR × AOV
där CRR (cost-revenue ratio, det europeiska PNO, motsvarande ACOS) är andelen av intäkten du är villig att spendera på annonser, CR är sidans konverteringsfrekvens, och AOV är dess genomsnittliga ordervärde.
Ett genomräknat exempel, rakt ur formeln. En kategorisida konverterar på 2 %, snittar en order på 1 000 €, och du är villig att spendera 10 % av intäkten på annonser (en 10× ROAS):
maxCPC = 0,10 × 0,02 × 1 000 € = 2,00 €.
Om du föredrar att tänka i ROAS omarrangeras samma sak till maxCPC = CR × AOV / ROAS = 0,02 × 1 000 / 10 = 2,00 €. Samma siffra, välj formen din hjärna gillar. (Illustrativt exempel.)
De 2,00 € är utlåtandet. Jämför det med den verkliga genomsnittliga CPC:n i ditt konto för den marknaden och sidan sorterar sig själv. Bekvämt över genomsnittet, bygg den. Under, den kan inte bära sig. Långt under, tänk inte ens på det. Allt som följer är bara att producera den här siffran för varje sida, pålitligt, och läsa resultatet.
Pipelinen i korthet
Fem steg. För vart och ett, vad du gör, vad du tittar på, och varför. Varje steg finns för att svara på en specifik fråga om en sida.
1 · Dra målsidesekonomi från GA4
Gör: per målsida, exportera sessioner, konverteringar, transaktioner och intäkt; härled CR och AOV. Varför: det här är efterfråge-och-pengar-signalen, och utan den är max-CPC en gissning. Du får: en rad per sida som bär de två siffror formeln äter, CR och AOV.
2 · Crawla sajten för struktur
Gör: crawla varje sida för titel, H1, brödsmulesdjup och, den som spelar roll, hur många produkter den listar. Varför: GA4 känner ekonomi men inte struktur. En sida med två produkter i lager kan inte bära en kampanj hur den än konverterar. Du får: den strukturella spegeln av dina GA4-rader, plus en tunn-sida-flagga.
3 · Joina de två, beräkna max-CPC
Gör: joina GA4 och crawlen på URL, kör formeln på varje rad, släpp tunna sidor. Varför: det är här ekonomi och struktur möts och utlåtandet blir beräkningsbart. Du får: varje sida med en max-CPC sittande bredvid sig.
4 · Prioritera: max-CPC vs. verklig genomsnittlig CPC
Gör: sätt varje sidas max-CPC bredvid den faktiska genomsnittliga CPC:n i ditt konto eller land, sortera efter spelrum. Varför: en max-CPC betyder inget i isolering. Bara gapet till vad klick faktiskt kostar avgör om en sida kan betala. Du får: TOP 100–200-bygghögen, en fix-hög och en skippa-hög.
5 · Diagnostisera problemsidorna
Gör: för sidor som borde konvertera men inte gör det, kolla priskonkurrenskraften hos produkterna de listar först. Varför: en låg CR på en sida som borde sälja är vanligtvis en merchandising-läcka, och en merchandising-läcka är fixbar. Du får: sidor räddade från skippa-högen tillbaka in i bygghögen, när de väl kan konvertera.
Nu samma fem steg, ett i taget, var och ett med den bokstavliga grejen det producerar.
Steg 1 · GA4-exporten, som den landar
Du behöver ingen flashig rapport. Öppna i GA4 Explore → blank → Free form, dimension Landing page + query string, mått Sessions, Key events / Conversions, Total revenue. Lägg till Transactions om du har det; annars kommer AOV från intäkt ÷ konverteringar. Ett filter i förväg. Exkludera produktdetaljsidor och behåll kategori- och kollektionssidor. Du dimensionerar vart du ska skicka trafik, och på de flesta sajter är det kategorier, inte enskilda SKU:er. Att blanda in SKU:er snedvrider varje AOV och CR du beräknar.
Här är hur fyra representativa rader ser ut väl exporterade, med CR och AOV härledda:
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
(Illustrativt exempel.) CR är konverteringar ÷ sessioner; AOV är intäkt ÷ konverteringar. Det är hela indatan formeln behöver från GA4. Två kolumner per sida, CR och AOV. Märk redan att /sleeping-bags drar flest sessioner i uppsättningen men konverterar sämst. Håll den tanken, den är den intressanta senare.
Steg 2 · Crawlen, och kolumnen som gör jobbet
GA4 berättade hur varje sida presterar. Det kan inte berätta att en sida är strukturellt ihålig. En “kategori” med två produkter i lager, eller en parametrisk filtervy som aldrig borde bära en kampanj. För det crawlar du. Två vägar. Låt en AI skriva dig en slit-och-släng-crawler på fem minuter, eller använd Screaming Frog med en custom XPath-extraktion du sätter upp på ungefär tre minuter (full miniguide i nedladdningen i slutet av artikeln). Kör den i List mode på din GA4-URL-uppsättning och den mal i bakgrunden medan du gör något annat.
Den enda kolumnen som förtjänar sin plats är produktantalet, hur många produktkort sidan faktiskt renderar. Här är extraktionsresultatet joinat till samma fyra sidor, plus en till crawlen flaggar:
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
(Illustrativt exempel.) Tunn-sida-regeln gör sitt jobb direkt. /clearance-2019 listar noll produkter, en tom kategori som GA4 ändå loggar sessioner mot. Släpp varje sida under ungefär tre produkter innan du prioriterar, och den spöksidan når aldrig bygghögen. I praktiken är sekvensen kort. Crawlen visar en “kategori” utan något live att sälja, du exkluderar den före prioriteringen, och du slösar inte en kampanj eller en analytikers eftermiddag på en sida som inget har att erbjuda.
Steg 3 · Joina de två, och formeln på en enda rad
Nu blir de två dataseten ett. Joina GA4 och crawlen på URL och varje sida bär både sin ekonomi (CR, AOV) och sin struktur (produktantal). Kör maxCPC = mål-CRR × CR × AOV ner för kolumnen. Se den landa på en verklig rad, /cordless-vacuums vid en mål-CRR på 10 %:
maxCPC = 0,10 × 0,020 × 420 € = 0,84 €.
En rad, ett tak. Gör det för alla fyra överlevarna och du får den max-CPC per sida hela beslutet hänger på:
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
(Illustrativt exempel.) Mål-CRR kan skilja sig per sida om dina marginaler gör det. /winter-tyres bär 12 % här för att kategorin tolererar en lösare effektivitet. Allt annat är mekaniskt. Du har nu en max-CPC för varje sida på sajten; nästa steg är det enda omdömesbeslut som återstår.
Steg 4 · Prioritera: sorteringen, före och efter
En max-CPC betyder inget på egen hand. 0,84 € är generöst på en marknad och oöverkomligt på en annan. Det som avgör är gapet till vad ett klick faktiskt kostar dig. Så dra din verkliga genomsnittliga CPC per sida (eller per marknad, om du inte har på sidnivå) från Google Ads-kontot och sätt de två sida vid sida.
Före, den råa joinen i vilken ordning den än kom ut ur GA4, oläslig som 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
Efter, sorterad efter spelrum (maxCPC − genomsnittlig CPC), blir samma fyra rader en arbetsorder med utlåtandet skrivet i sista kolumnen:
| Målsida | CR | AOV | Mål-CRR | maxCPC | gen. CPC | Utlåtande |
|---|---|---|---|---|---|---|
| /cordless-vacuums | 2,0 % | 420 € | 10 % | 0,84 € | 0,55 € | Bygg nu |
| /winter-tyres | 3,1 % | 180 € | 12 % | 0,67 € | 0,40 € | Bygg nu |
| /sleeping-bags | 1,1 % | 95 € | 10 % | 0,10 € | 0,45 € | Fixa först (problemsida) |
| /phone-cases | 1,4 % | 16 € | 10 % | 0,02 € | 0,35 € | Bry dig inte |
(Illustrativt exempel.) Siffrorna är påhittade för att visa mekaniken, så stoppa in dina egna GA4-siffror. Varje maxCPC här är bara mål-CRR × CR × AOV applicerat på raden.
Två rader är uppenbara. /cordless-vacuums kan betala 0,84 € mot en marknad på 0,55 €, 53 % spelrum, bygg den. /winter-tyres likaså. /phone-cases har råd med 0,02 € mot 0,35 €. Det kommer aldrig att funka ens i dina vildaste drömmar, lämna ute den och se dig inte tillbaka. Skala det här från fyra rader till tiotusen och toppen av den sorterade listan är din TOP 100–200, sidorna att bygga först, rankade efter hur mycket utrymme de har att buda.
Den intressanta är /sleeping-bags. maxCPC 0,10 € mot en marknad på 0,45 €, så på papper “bry dig inte”. Men den hade flest sessioner i hela exporten och en kategori som uppenbart borde sälja. En misstänkt låg CR på en sida som borde konvertera är sällan ett efterfrågeproblem. Det är en problemsida, och problemsidor får en diagnos, inte en radering.
Steg 5 · Problemsidor: diagnosen, på en verklig listning
När en sidas konverteringsfrekvens sitter långt under där kategorin borde landa, fråga varför innan du släpper den. På e-handel är svaret, för det mesta, priskonkurrenskraften hos produkterna sidan visar först. De första 10–20 produkter en besökare ser är sidans hela första intryck. Om de är dina svagaste artiklar värdemässigt rasar CR oavsett hur mycket efterfrågan sidan drar.
Så du läser kategorin exakt som kunden gör, i dess standardsorteringsordning, och priskontrollerar hjältepositionerna.
Läs kategorins produktmix i sorteringsordning
Dra produkterna i /sleeping-bags efter deras product_type från Google Merchant Center, i den standardlistningsordning besökaren faktiskt får. Toppen av listan är vad som konverterar (eller inte).
Priskontrollera topp-positionerna mot marknaden
Ta de topplistade produkterna och undersök konkurrentpriser live med DataForSEO. Endpointen serp/google/organic/live/advanced returnerar hela resultatsidan (shopping-block med handlare och priser, organiskt under) som strukturerad JSON. Faktureringen sker per SERP med upp till 10 resultat, till ett baspris på ungefär 0,002 $ innan betalda avancerade parametrar.
Prissätt om eller sortera om, mät sedan om
Om hjältepositionerna är överprissatta har du två spakar. Prissätt om, eller sortera om kategorin så att genuint konkurrenskraftiga produkter leder. Titta sedan på CR. Först när den lyfter befordrar du sidan från “problem” in i bygghögen.
Här är hur den diagnosen bokstavligen ser ut på /sleeping-bags, sidan som sitter på maxCPC 0,10 €. Toppen av listningen, ditt pris mot den billigaste konkurrenten DataForSEO hittade för samma produkt:
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%
(Illustrativt exempel.) Läckan är precis i toppen. Produkten 12 300 månatliga besökare möter först är prissatt 30 % över det billigaste marknadserbjudandet. Allt under den är konkurrenskraftigt, men ingen scrollar förbi ett dåligt första intryck. Sänk hjältens pris till 105 €, eller sortera om så de konkurrenskraftiga BaseCamp och ValleyHike leder, och CR återhämtar sig mot kategorinormen. Kör om steg 3, maxCPC klättrar av 0,10 €, och sidan befordras in i bygghögen.
Det här är loopen de flesta byråer aldrig sluter, eftersom den korsar en gräns de vanligtvis inte rör. Butikens jobb (prissättning, merchandising, sorteringsordning) och byråns jobb (att köpa trafiken) är samma optimeringsloop. Trimma det ena utan det andra och du budar in i en läcka.
Efter filtret: att välja hur du köper
Först nu, med bygghögen i hand, väljer du hur. AI Max, Dynamic Search Ads, klassisk STAG, eller en kombination (bred plus DSA i en kampanj). En kampanj eller tre eller fem beror på kunden och konverteringsvolymen; respektera regeln om ungefär 30 konverteringar per kampanj innan du delar. Jag lämnar det här valet till dig med flit. Poängen med hela pipelinen är att du gör det efter ekonomin, inte före.
Vad du än landar på är regeln densamma. En ny kampanj får aldrig starta på dåliga sidor. Svaga målsidor drar din mål-ROAS loss och förgiftar inlärningsfasen. Förfiltret håller lanseringen riktad bara mot sidor som kan bära sig. Därifrån är att bygga superstrukturen (crawl-data plus sökordsanalys per kategori via Google Ads API, konstruerad i vågor efter kategori, språk och mognad) ett eget stycke, och det har ett.
Delen som knyter tillbaka till manifestet
Tekniskt är inget av det här nytt. Du kunde ha kört GA4-exporten, crawlen, prisskrapan och joinen för fem år sedan. Men det skulle ha varit ett halvår av skräddarsydd utveckling, och vem som helst vid sina sinnens fulla bruk hade gett upp halvvägs. Tolv år av att skriva mot Google Ads API har lärt mig exakt hur sådana projekt dör. Skälet att jag skriver ner det nu är att med verktyg som Codex, Claude Code och den nuvarande generationen agenter slutade det här vara ett projekt och blev ett helt vanligt tisdagsflöde, ett skript du riktar mot ett konto och låter köra över natten.
Det är hela förskjutningen, och den är tydligast från bägge sidor på en gång. Butikens prissättnings-och-merchandising-arbete och byråns annonseringsarbete kollapsar till en loop du äntligen kan trimma tillsammans. Ekonomin låter dig sluta den.
Ladda ner de kompletta instruktionerna för din AI
Hela filtret ovan, omskrivet som en brief du klistrar in direkt i Claude eller någon annan kapabel kodagent. Du levererar GA4-exporten och crawlen; den räknar ut max-CPC för varje sida och ger dig högarna bygg, fixa och skippa tillbaka. Lämna din e-post så är filen din.
One file, one list. I only write when there's something worth reading.
FAQ
Varför använda maxCPC i stället för att bara titta på ROAS-mål i Google Ads?
Eftersom Googles tROAS reagerar efter att du spenderat pengar på att lära. maxCPC är ett filter före lansering. Det berättar, före ett enda klick, vilka sidor som matematiskt har råd att annonsera. Du använder det för att avgöra vad du ska bygga; tROAS kör sedan det du byggde.
Min CR och AOV svänger mycket månad till månad. Bryter inte det formeln?
Använd ett stabilt fönster på 60 till 90 dagar och segmentera på enhet eller marknad om de skiljer sig väsentligt. Formeln är inte tänkt att vara precis på öret. Den sorterar sidor i bygg-, fix- och skippa-högar, och det är spelrum i storleksordning du är ute efter.
Behöver jag verkligen Screaming Frog, eller kan AI bara skriva crawlern?
Båda funkar. Screaming Frog med en custom XPath-extraktion är no-code-vägen och är genuint en treminuters-uppsättning. En skriptad crawler är bättre om du behöver datan joinad in i en pipeline automatiskt. Välj efter om det här är en engångsgranskning eller ett repeterbart arbetsflöde.
Vad räknas som en 'problemsida' kontra en sida jag bara ska skippa?
En skippa-sida har svag ekonomi till sin natur. Låg AOV, låg avsikt, så dess maxCPC är genuint pytteliten och kommer alltid att vara det (/phone-cases på 0,02 €). En problemsida borde konvertera. Hyfsad AOV, verklig efterfrågan, massor av sessioner, men den gör det ändå inte, vanligtvis för att dess först listade produkter är överprissatta eller dåligt sorterade (/sleeping-bags på 0,10 €). Skippa-sidor lämnar du ute; problemsidor fixar du och mäter sedan om.
Funkar det här bara för e-handel?
maxCPC-formeln funkar var du än har ett konverteringsvärde, lead gen inkluderat, där AOV blir lead-värde. Problemsidesdiagnosen (Merchant Center product_type, konkurrentprissättning, kategorisorteringsordning) är e-handelsspecifik. Lead-gen-problemsidor behöver sin egen diagnos, vanligtvis formulärfriktion eller fel erbjudande.
Hur kopplar det här till AI Max och slutet på DSA?
Det ligger uppströms det beslutet. Vilken kampanjtyp du än landar på, AI Max, DSA:s efterträdare eller klassisk STAG, bör den bara någonsin peka på sidor som klarade det här filtret. Strategivalet ändrar hur du köper; ekonomin avgör vad som är värt att köpa över huvud taget.
CTA: Vill du ha bygghögen för din sajt, rankad efter vad varje sida faktiskt har råd med? Skicka mig din GA4-export så kör vi filtret tillsammans.