W skrócie: Na ogromnej stronie pierwsze pytanie w wyszukiwarce nie dotyczy słów kluczowych — tylko tego, które strony docelowe matematycznie stać na reklamę. Wrzuć eksport GA4 plus crawl strony, policz maxCPC = docelowe CRR × CR × AOV na stronę i porównaj z realnym średnim CPC. Wychodzi posortowany stos TOP 100–200 do budowy, stos napraw i stos do pominięcia — zanim wydasz grosz.
Co wkładasz i co wychodzi
Wkładasz dwie rzeczy, które już masz: eksport GA4 twoich stron docelowych i crawl twojej strony. Dostajesz z powrotem jedną rzecz — posortowaną listę stron docelowych, które najpierw warte są kampanii w wyszukiwarce, każdą z dokładnym maksymalnym CPC, na jaki ją stać, i czysty stos „nie licytuj na to” dla stron, których ekonomia zakazuje płatnego wyszukiwania. Żadnego narzędzia do słów kluczowych, żadnego przeczucia, żadnego „odpalmy po prostu Dynamic Search Ads i zobaczymy”. Arkusz, który mówi ci, gdzie skierować budżet, zanim wydasz na niego grosz.
To cały artykuł. Poniżej puszczam pipeline od początku do końca i w każdym kroku pokazuję ci dosłownie to, co wypluwa — wiersze GA4, arytmetykę max-CPC na jednej linii, tabelę ekstrakcji z crawla, sortowanie priorytetów przed i po oraz diagnozę strony problematycznej, która ratuje stronę, którą każdy inny by skasował. Liczby są poglądowe na całej długości — wstaw własne — ale kształty to dokładnie to, co zwracają narzędzia.
Po co w ogóle bawić się w odprawę przed startem? Bo domyślnym ruchem na stronie z 10 000 URL jest skierowanie szerokiej kampanii na wszystko i puszczenie tego, by Google posortował. To podpala budżet na stronach, które nigdy nie miały skonwertować, rozluźnia twój docelowy ROAS i zatruwa fazę uczenia. Ten filtr to najtańsze ubezpieczenie, jakie kiedykolwiek kupisz.
Pipeline w jednej ramce
- Czego szukamy Stron docelowych wartych reklamy, posortowanych
- Dane wejściowe Eksport stron docelowych z GA4 · crawl strony
- Jeden wzór maxCPC = docelowe CRR × CR × AOV
- Co dostajesz Stos do budowy, stos napraw i stos do pominięcia
Jedna liczba, która decyduje o wszystkim: maksymalny CPC
Każda strona docelowa ma sufit — najwięcej, ile możesz zapłacić za kliknięcie i wciąż trafić w docelową efektywność. Policz go na stronę, a cała priorytetyzacja wypada z matematyki:
maxCPC = docelowe CRR × CR × AOV
gdzie CRR (cost-revenue ratio — europejskie PNO, odpowiednik ACOS) to udział przychodu, jaki jesteś gotów wydać na reklamę, CR to współczynnik konwersji strony, a AOV to jej średnia wartość zamówienia.
Przykład przeliczony, prosto ze wzoru. Strona kategorii konwertuje na poziomie 2 %, ma średnio zamówienie 1000 €, a ty jesteś gotów wydać 10 % przychodu na reklamę (ROAS 10×):
maxCPC = 0,10 × 0,02 × 1000 € = 2,00 €.
Jeśli wolisz myśleć w ROAS, to samo przekształca się w maxCPC = CR × AOV / ROAS = 0,02 × 1000 / 10 = 2,00 €. Ta sama liczba, wybierz formę, którą lubi twój mózg. (Przykład poglądowy.)
Te 2,00 € to werdykt. Porównaj je z realnym średnim CPC na twoim koncie dla tego rynku, a strona posortuje się sama: wygodnie powyżej śr. CPC → buduj ją; poniżej → nie zarobi na siebie; daleko poniżej → nawet o tym nie myśl. Wszystko, co dalej, to tylko produkowanie tej liczby dla każdej strony, niezawodnie, i czytanie wyniku.
Pipeline w skrócie
Pięć kroków. Dla każdego: co robisz, na co patrzysz i dlaczego — bo każdy krok istnieje, by odpowiedzieć na jedno konkretne pytanie o stronę.
1 — Wyciągnij ekonomię strony docelowej z GA4
Rób: na stronę docelową wyeksportuj sesje, konwersje, transakcje i przychód; wyprowadź CR i AOV. Dlaczego: to sygnał popytu-i-pieniędzy — bez niego maxCPC jest zgadywaniem. Dostajesz: jeden wiersz na stronę z dwiema liczbami, które żywią wzór (CR i AOV).
2 — Zcrawluj stronę pod kątem struktury
Rób: zcrawluj każdą stronę pod tytuł, H1, głębokość okruszków i — to, co się liczy — ile produktów listuje. Dlaczego: GA4 zna ekonomię, ale nie strukturę; strona z dwoma produktami na stanie nie uniesie kampanii niezależnie od tego, jak konwertuje. Dostajesz: strukturalne lustro twoich wierszy GA4 plus flagę cienkiej strony.
3 — Połącz oba, policz maksymalny CPC
Rób: złącz GA4 + crawl po URL, puść wzór na każdym wierszu, odrzuć cienkie strony. Dlaczego: tu spotykają się ekonomia i struktura, a werdykt staje się obliczalny. Dostajesz: każdą stronę z maksymalnym CPC siedzącym obok niej.
4 — Priorytetyzuj: maxCPC vs realny śr. CPC
Rób: postaw maxCPC każdej strony obok faktycznego średniego CPC na twoim koncie lub w kraju, sortuj po zapasie. Dlaczego: maxCPC nic nie znaczy w izolacji — tylko luka do tego, ile kliknięcia naprawdę kosztują, decyduje, czy stronę stać. Dostajesz: stos do budowy TOP 100–200, stos napraw i stos do pominięcia.
5 — Zdiagnozuj strony problematyczne
Rób: dla stron, które powinny konwertować, a nie konwertują, sprawdź konkurencyjność cenową produktów, które listują najpierw. Dlaczego: niski CR na stronie, która powinna sprzedawać, to zwykle przeciek merchandisingowy, nie problem popytu — i da się to naprawić. Dostajesz: strony uratowane ze stosu do pominięcia z powrotem do stosu budowy, gdy faktycznie potrafią skonwertować.
Teraz te same pięć kroków, po jednym naraz, każdy z dosłownie tym, co produkuje.
Krok 1 — Eksport GA4, tak jak ląduje
Nie potrzebujesz wymyślnego raportu. W GA4: Eksploracja → puste → format dowolny, wymiar Strona docelowa + ciąg zapytania, dane Sesje, Kluczowe zdarzenia / Konwersje, Łączny przychód. Dodaj Transakcje, jeśli je masz; inaczej AOV wychodzi z przychodu ÷ konwersje. Jeden filtr na starcie: wyklucz strony szczegółów produktu i zostaw strony kategorii / kolekcji — wymierzasz, dokąd wysłać ruch, a na większości stron to kategorie, nie pojedyncze SKU. Mieszanie SKU zaburza każdy AOV i CR, który liczysz.
Oto jak wyglądają cztery reprezentatywne wiersze po wyeksportowaniu, z wyprowadzonymi CR i AOV:
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
(Przykład poglądowy.) CR to konwersje ÷ sesje; AOV to przychód ÷ konwersje. To cały input, jakiego wzór potrzebuje z GA4 — dwie kolumny, CR i AOV, na stronę. Zauważ już teraz, że /sleeping-bags ściąga najwięcej sesji w zestawie, a konwertuje najgorzej; zapamiętaj to, później to ta ciekawa.
Krok 2 — Crawl i kolumna, która robi robotę
GA4 powiedziało ci, jak radzi sobie każda strona. Nie powie ci, że strona jest strukturalnie pusta — „kategoria” z dwoma produktami na stanie albo parametryczny widok filtra, który nigdy nie powinien unieść kampanii. Po to właśnie crawlujesz. Dwie drogi: niech AI napisze ci jednorazowy crawler w pięć minut, albo użyj Screaming Frog z własną ekstrakcją XPath, którą ustawisz w jakieś trzy minuty (pełny mini-przewodnik w ramce steal). Puść go w trybie listy na twoim zestawie URL z GA4, a będzie mełł w tle, gdy robisz coś innego.
Jedna kolumna, która zarabia na swoje utrzymanie, to liczba produktów — ile kart produktów strona faktycznie renderuje. Oto output ekstrakcji złączony z tymi samymi czterema stronami, plus jedna więcej, którą crawl flaguje:
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
(Przykład poglądowy.) Reguła cienkiej strony robi swoje na miejscu: /clearance-2019 listuje 0 produktów — pusta kategoria, przeciwko której GA4 i tak loguje sesje. Wyrzuć każdą stronę poniżej ~3 produktów, zanim zaczniesz priorytetyzować, a ta strona-widmo nigdy nie dotrze do stosu budowy. Mini-przykład, sytuacja → akcja → wynik: crawl pokazuje „kategorię” z zerem żywych produktów → wykluczasz ją przed priorytetyzacją → nie marnujesz kampanii (ani popołudnia analityka) na stronę, która nie ma nic do sprzedania.
Krok 3 — Połącz oba i wzór na jednym wierszu
Teraz oba zbiory danych stają się jednym. Złącz GA4 + crawl po URL, a każda strona niesie i swoją ekonomię (CR, AOV), i strukturę (liczba produktów). Puść maxCPC = docelowe CRR × CR × AOV w dół kolumny. Patrz, jak ląduje na jednym realnym wierszu — /cordless-vacuums, docelowe CRR 10 %:
maxCPC = 0,10 × 0,020 × 420 € = 0,84 €.
Jedna linia, jeden sufit. Zrób to dla wszystkich czterech ocalałych, a dostaniesz maxCPC na stronę, na którym wisi cała decyzja:
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
(Przykład poglądowy.) Docelowe CRR może różnić się na stronę, jeśli różnią się twoje marże — /winter-tyres niesie tu 12 %, bo kategoria toleruje luźniejszą efektywność. Cała reszta jest mechaniczna. Masz teraz maxCPC dla każdej strony witryny; następny krok to jedyna pozostawiona decyzja oparta na osądzie.
Krok 4 — Priorytetyzuj: sortowanie, przed i po
maxCPC sam w sobie nic nie znaczy. 0,84 € jest hojne na jednym rynku i nieosiągalne na innym — to, co decyduje, to luka do tego, ile kliknięcie naprawdę cię kosztuje. Więc wyciągnij swój realny średni CPC na stronę (albo na rynek, jeśli nie masz na poziomie strony) z konta Google Ads i postaw oba obok siebie.
Przed — surowe złączenie, w jakiejkolwiek kolejności wyszło z GA4, jest nieczytelne jako 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
Po — posortuj po zapasie (maxCPC − śr. CPC), a te same cztery wiersze stają się zleceniem roboczym z werdyktem wpisanym w ostatniej kolumnie:
| Strona docelowa | CR | AOV | Docelowe CRR | maxCPC | śr. CPC | Werdykt |
|---|---|---|---|---|---|---|
| /odkurzacze-bezprzewodowe | 2,0 % | 420 € | 10 % | 0,84 € | 0,55 € | Buduj teraz |
| /opony-zimowe | 3,1 % | 180 € | 12 % | 0,67 € | 0,40 € | Buduj teraz |
| /spiwory | 1,1 % | 95 € | 10 % | 0,10 € | 0,45 € | Najpierw napraw (strona problematyczna) |
| /etui-na-telefon | 1,4 % | 16 € | 10 % | 0,02 € | 0,35 € | Odpuść |
(Przykład poglądowy.) Liczby są wymyślone, by pokazać mechanikę — wstaw własne dane z GA4. Każdy maxCPC tutaj to po prostu docelowe CRR × CR × AOV zastosowane do wiersza.
Dwa wiersze są oczywiste. /odkurzacze-bezprzewodowe może zapłacić 0,84 € przeciwko rynkowi 0,55 € — +53 % zapasu, buduj. /opony-zimowe tak samo. /etui-na-telefon stać na 0,02 € przeciwko 0,35 €; nie zadziała w twoich najśmielszych marzeniach, zostaw to i nie oglądaj się za siebie. Przeskaluj to z czterech wierszy na dziesięć tysięcy, a góra posortowanej listy to twoje TOP 100–200 — strony do zbudowania najpierw, posortowane po tym, ile mają miejsca do licytowania.
Ta ciekawa to /spiwory: maxCPC 0,10 € przeciwko rynkowi 0,45 €. Na papierze „odpuść”. Ale miała najwięcej sesji w całym eksporcie i kategorię, która oczywiście powinna sprzedawać. Podejrzanie niski CR na stronie, która powinna konwertować, to rzadko problem popytu. To strona problematyczna — a strony problematyczne dostają diagnozę, nie kasowanie.
Krok 5 — Strony problematyczne: diagnoza, na realnym listingu
Gdy współczynnik konwersji strony siedzi daleko poniżej tego, gdzie powinna lądować kategoria, zapytaj dlaczego, zanim ją odrzucisz. W e-commerce odpowiedzią najczęściej jest konkurencyjność cenowa produktów, które strona pokazuje najpierw. Pierwsze 10–20 produktów, które widzi odwiedzający, to całe pierwsze wrażenie strony; jeśli to twoje najsłabsze wartościowo pozycje, CR się załamuje niezależnie od tego, ile popytu strona ściąga.
Więc czytasz kategorię dokładnie tak, jak robi to klient — w jej domyślnej kolejności sortowania — i sprawdzasz ceny pozycji hero.
Przeczytaj miks produktów kategorii w kolejności sortowania
Wyciągnij produkty z /spiwory po ich product_type z Google Merchant Center, w domyślnej kolejności listowania, którą faktycznie dostaje odwiedzający. Góra listy to to, co konwertuje (albo nie).
Sprawdź ceny top pozycji względem rynku
Weź najwyżej wylistowane produkty i zbadaj żywe ceny konkurencji z DataForSEO — endpoint serp/google/organic/live/advanced zwraca całą stronę wyników (bloki shopping ze sprzedawcami i cenami, organiczne) jako ustrukturyzowany JSON za z grubsza 0,0035 $ za zapytanie.
Zmień ceny lub przesortuj, potem zmierz ponownie
Jeśli pozycje hero są przepłacone, masz dwie dźwignie: zmień ceny albo przesortuj kategorię, by naprawdę konkurencyjne produkty szły na przód. Potem patrz na CR. Dopiero gdy się podniesie, awansujesz stronę z „problematycznej” do stosu budowy.
Oto jak ta diagnoza wygląda dosłownie na /spiwory, stronie siedzącej przy maxCPC 0,10 €. Góra listingu, twoja cena vs najtańszy konkurent, jakiego DataForSEO znalazł dla tego samego produktu:
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%
(Przykład poglądowy.) Przeciek jest dokładnie na samej górze: produkt, który 12 300 miesięcznych odwiedzających spotyka najpierw, jest wyceniony 30 % powyżej najtańszej oferty rynkowej. Wszystko pod nim jest konkurencyjne — ale nikt nie przewija obok złego pierwszego wrażenia. Mini-przykład, sytuacja → akcja → wynik: produkt hero jest 30 % powyżej rynku → zbij jego cenę do 105 € albo przesortuj tak, by konkurencyjne BaseCamp i ValleyHike szły na przód → CR wraca w stronę normy kategorii → puść Krok 3 ponownie, maxCPC odbija od 0,10 €, a strona awansuje do stosu budowy.
To pętla, której większość agencji nigdy nie domyka, bo przekracza granicę, której zwykle nie dotykają. Robota sklepu (ceny, merchandising, kolejność sortowania) i robota agencji (kupowanie ruchu) to ta sama pętla optymalizacji. Dostroisz jedno bez drugiego i licytujesz w przeciek.
Po filtrze: wybór, jak kupujesz
Dopiero teraz — ze stosem budowy w ręku — wybierasz jak: AI Max, Dynamic Search Ads, klasyczny STAG albo kombinację (broad + DSA w jednej kampanii). Jedna kampania czy trzy czy pięć zależy od klienta i wolumenu konwersji — uszanuj zasadę ~30-konwersji-na-kampanię, zanim podzielisz. Zostawiam ten wybór tobie celowo. Sens całego pipeline’u jest taki, że podejmujesz go po ekonomii, nie przed.
Na cokolwiek wpadniesz, zasada jest ta sama: nowa kampania nie może nigdy startować na złych stronach. Słabe strony docelowe rozluźniają twój docelowy ROAS i zatruwają fazę uczenia. Wstępny filtr to to, co utrzymuje start wycelowany tylko w strony, które są w stanie zarobić na siebie — a stamtąd budowa superstruktury (dane z crawla + badanie słów kluczowych na kategorię przez Google Ads API, konstruowanej falami po kategorii, języku i dojrzałości) to osobny kawałek, i ma jeden.
Część, która wraca do manifestu
Technicznie nic z tego nie jest nowe. Mogłeś puścić eksport GA4, crawl, zebranie cen i złączenie pięć lat temu. Ale to byłoby pół roku robionego na miarę developmentu, a każdy rozsądny poddałby się w połowie. Powodem, dla którego spisuję to teraz, jest to, że z narzędziami jak Codex, Claude Code i obecną generacją agentów to przestało być projektem, a stało się zwykłym wtorkowym workflow — skryptem, który celujesz w konto i puszczasz na noc.
To cała zmiana, i jest najwyraźniejsza, gdy widać ją z obu stron naraz: praca e-sklepu nad cenami-i-merchandisingiem i praca agencji nad reklamą zwijają się w jedną pętlę, którą wreszcie możesz dostroić razem. Ekonomia pozwala ci ją domknąć.
Część, którą możesz podwędzić
# 1) The ceiling on every landing page
maxCPC = target_CRR * CR * AOV
= CR * AOV / ROAS # same thing in ROAS form
# e.g. 0.10 * 0.02 * 1000 = €2.00 (10% CRR, 2% CR, €1000 AOV)
# 2) Screaming Frog custom extraction (~3 min, runs in background)
Configuration → Custom → Custom Extraction → Add
• Products on page XPath: count(//div[contains(@class,'product-card')])
extractor type: Function Value (count() returns a number)
• H1 XPath: //h1 → Extract Text
• Breadcrumb XPath: //nav[@aria-label='breadcrumb'] → Extract Text
Crawl (or List mode on your GA4 URL set) → export → join to GA4 by URL.
Drop any page with < ~3 products as a thin page before you prioritize.- Użyj Function Value, nie Extract Text, do liczby produktów.
count()zwraca liczbę; ekstraktor tekstu ją połknie. To zdecydowanie najczęstszy powód, dla którego kolumna z liczbą wraca pusta. - Dopasuj selektor karty produktu do strony. Prawy klik na kafelek produktu → Zbadaj → złap stabilną klasę. Ustaw ten XPath raz dobrze, a filtr cienkiej strony robi się sam.
- Najpierw odfiltruj strony szczegółów produktu z eksportu GA4. Wymierzasz, dokąd wysłać ruch — strony kategorii i kolekcji — nie pojedyncze SKU. Mieszanie ich zaburza każdy AOV i CR, który liczysz.
- Diagnozuj strony problematyczne w kolejności sortowania. Wyciągnij kategorię po
product_typew jej domyślnej kolejności listowania i sprawdź ceny top pozycji — to pierwsze wrażenie konwertuje, nie średnia strony.
FAQ
Po co maxCPC zamiast po prostu patrzeć na cele ROAS w Google Ads?
Bo tROAS od Google reaguje dopiero, gdy wydasz pieniądze na naukę. maxCPC to filtr przed startem: mówi ci, przed jednym kliknięciem, które strony matematycznie stać na reklamę. Używasz go, by zdecydować, co zbudować; tROAS — by prowadzić to, co zbudowałeś.
Moje CR i AOV mocno skaczą z miesiąca na miesiąc. Czy to nie psuje wzoru?
Użyj stabilnego okna — 60 do 90 dni — i segmentuj po urządzeniu lub rynku, jeśli różnią się istotnie. Wzór nie ma być dokładny co do grosza; sortuje strony na stosy buduj / napraw / pomiń. Chodzi o zapas rzędu wielkości.
Czy naprawdę potrzebuję Screaming Frog, czy AI po prostu napisze crawler?
Jedno i drugie działa. Screaming Frog z własną ekstrakcją XPath to droga no-code i naprawdę trzyminutowa konfiguracja. Skryptowany crawler jest lepszy, jeśli potrzebujesz dane automatycznie złączone w pipeline. Wybierz wedle tego, czy to jednorazowy audyt, czy powtarzalny workflow.
Co liczy się jako 'strona problematyczna' w odróżnieniu od strony, którą powinienem po prostu pominąć?
Strona do pominięcia ma słabą ekonomię z natury — niski AOV, niska intencja — więc jej maxCPC jest naprawdę maleńki i zawsze taki będzie (/etui-na-telefon przy 0,02 €). Strona problematyczna powinna konwertować — przyzwoity AOV, realny popyt, dużo sesji — ale nie konwertuje, zwykle dlatego, że jej pierwsze wylistowane produkty są przepłacone albo źle posortowane (/spiwory przy 0,10 €). Strony do pominięcia zostawiasz; strony problematyczne naprawiasz, potem mierzysz ponownie.
Czy to działa tylko dla e-commerce?
Wzór maxCPC działa wszędzie, gdzie masz wartość konwersji — lead gen też, gdzie AOV staje się wartością leada. Diagnoza strony problematycznej (Merchant Center product_type, ceny konkurencji, kolejność sortowania kategorii) jest specyficzna dla e-commerce; problematyczne strony lead gen potrzebują własnej diagnozy, zwykle tarcia formularza lub niedopasowania oferty.
Jak to się łączy z AI Max i końcem DSA?
To jest powyżej tej decyzji. Jakikolwiek typ kampanii wybierzesz — AI Max, następcę DSA, klasyczny STAG — powinien zawsze celować tylko w strony, które przeszły ten filtr. Wybór strategii zmienia, jak kupujesz; ekonomia decyduje, co w ogóle warto kupować.
CTA: Chcesz stos budowy dla swojej strony, posortowany po tym, na co faktycznie stać każdą stronę? Puśćmy filtr na twoim GA4.