Spis treści
- Czym jest header bidding i dlaczego zastąpił waterfall
- Jak działa Prebid.js: od zapytania do wyświetlenia reklamy
- Konfiguracja Prebid.js krok po kroku
- Zgody, RODO i TCF w header biddingu
- Ile może zyskać wydawca i jak to zmierzyć
- Najczęstsze błędy w header biddingu i jak je wykryć
- Header bidding po wyroku w sprawie ad techu Google
- Najczęściej zadawane pytania
Header bidding to technika sprzedaży reklam, w której strona wydawcy przed wywołaniem serwera reklam zbiera oferty od wielu SSP i giełd jednocześnie, a następnie przekazuje najlepsze z nich do serwera reklam, gdzie konkurują z AdX i sprzedażą bezpośrednią. Najpopularniejszym narzędziem do tego celu jest otwartoźródłowa biblioteka Prebid.js. W porównaniu ze starym modelem kaskadowym header bidding zwykle podnosi stawki, bo każdy kupujący widzi odsłonę w tym samym momencie i licytuje o nią realnie, a nie dostaje jej dopiero wtedy, gdy wcześniejsi partnerzy zrezygnują.
Najważniejsze w skrócie
- Header bidding zastępuje kaskadę (waterfall) równoczesną aukcją wielu partnerów przed wywołaniem serwera reklam.
- Prebid.js to darmowa biblioteka rozwijana przez Prebid.org, z adapterami dla kilkuset SSP i modułami do zgód, walut, cen minimalnych i identyfikatorów.
- Wyniki aukcji Prebid trafiają do Google Ad Managera jako klucze targetowania, np. hb_pb z ceną i hb_bidder z nazwą partnera.
- Najczęstsze źródła strat to zbyt długie limity czasu, za dużo adapterów, brak wpisów w ads.txt i źle skonfigurowane zgody TCF.
- Wzrost przychodu mierz testem z podziałem ruchu i wskaźnikiem przychodu na 1000 sesji, a nie samym eCPM.
Czym jest header bidding i dlaczego zastąpił waterfall
Header bidding to sposób na to, żeby wszyscy partnerzy sprzedażowi wydawcy licytowali odsłonę równocześnie. Przed jego upowszechnieniem wydawcy sprzedawali powierzchnię kaskadowo.
W modelu kaskadowym serwer reklam odpytywał partnerów po kolei, według historycznej średniej stawki. Jeśli pierwszy partner nie kupił odsłony za cenę minimalną, trafiała do drugiego, potem do trzeciego. Problem polegał na tym, że partner z niższą średnią mógł być gotów zapłacić więcej właśnie za tę odsłonę, ale nigdy nie dostawał szansy. Do tego Google AdX, dzięki integracji z serwerem reklam Google, przez lata miał przewagę informacyjną – część tych praktyk była przedmiotem procesu, który opisujemy w tekście o wyroku w sprawie ad techu Google.
Header bidding odwraca tę logikę. Kod w nagłówku strony wysyła zapytania do wszystkich skonfigurowanych SSP jednocześnie, czeka na odpowiedzi przez ustalony czas i przekazuje najlepsze oferty do serwera reklam. Tam konkurują z kampaniami bezpośrednimi i z AdX. Jeśli dopiero zaczynasz poznawać role SSP, DSP i giełd, zacznij od przewodnika po programmatic.
Jak działa Prebid.js: od zapytania do wyświetlenia reklamy
Prebid.js działa w przeglądarce użytkownika i spina aukcję header biddingu z serwerem reklam. Cały cykl trwa zwykle do jednej, półtorej sekundy.
- Strona ładuje bibliotekę Prebid.js zbudowaną z wybranych adapterów i modułów.
- Prebid odczytuje sygnał zgody z platformy CMP i definicje miejsc reklamowych (ad units).
- Adaptery wysyłają równoległe zapytania do SSP, każde w formacie danego partnera.
- Prebid czeka na odpowiedzi do upływu limitu czasu; spóźnione oferty są odrzucane.
- Biblioteka wybiera najlepszą ofertę dla każdego miejsca i ustawia klucze targetowania w tagu Google Publisher Tag.
- Serwer reklam porównuje ofertę Prebid z kampaniami bezpośrednimi i AdX, a wybrana kreacja się wyświetla.
- Jeśli wygrał partner z Prebid, kreacja jest renderowana przez Prebid Universal Creative.
Client-side, server-side czy model mieszany
Prebid ma dwie główne odmiany: bibliotekę działającą w przeglądarce i Prebid Server, który prowadzi aukcję na serwerze. Wybór wpływa na szybkość strony i skuteczność dopasowania użytkowników.
| Model | Gdzie odbywa się aukcja | Zalety | Wady | Dla kogo |
|---|---|---|---|---|
| Prebid.js (client-side) | Przeglądarka | Dobre dopasowanie identyfikatorów, łatwy start | Wiele połączeń z przeglądarki, obciążenie strony | Większość serwisów, 4–8 partnerów |
| Prebid Server (server-side) | Serwer | Jedno połączenie z przeglądarki, lepsza wydajność, obsługa aplikacji i CTV | Słabsze dopasowanie cookies, koszt utrzymania | Duże serwisy, aplikacje, wideo |
| Model mieszany | Przeglądarka i serwer | Najlepsi partnerzy w przeglądarce, reszta na serwerze | Bardziej złożona konfiguracja i raportowanie | Wydawcy z zespołem ad ops |
Google ma też własne rozwiązanie serwerowe, Open Bidding, które działa wewnątrz Ad Managera. Dla wielu wydawców sensowna jest kombinacja: Prebid dla głównych SSP i Open Bidding jako dodatkowe źródło popytu.
Konfiguracja Prebid.js krok po kroku
Poniższy przykład pokazuje minimalną konfigurację dla jednego miejsca reklamowego z dwoma partnerami, zgodami TCF i walutą PLN w serwerze reklam. Identyfikatory partnerów są przykładowe – prawdziwe dostaniesz od SSP.
var PREBID_TIMEOUT = 1000;
var FAILSAFE_TIMEOUT = 3000;
var adUnits = [{
code: 'div-baner-top',
mediaTypes: { banner: { sizes: [[750, 200], [750, 100]] } },
bids: [
{ bidder: 'appnexus', params: { placementId: 12345678 } },
{ bidder: 'rubicon', params: { accountId: 1001, siteId: 2002, zoneId: 3003 } }
]
}];
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function () { googletag.pubads().disableInitialLoad(); });
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function () {
pbjs.setConfig({
consentManagement: {
gdpr: { cmpApi: 'iab', timeout: 8000, defaultGdprScope: true }
},
currency: { adServerCurrency: 'PLN', granularityMultiplier: 4 },
priceGranularity: 'dense'
});
pbjs.addAdUnits(adUnits);
pbjs.requestBids({ bidsBackHandler: wyslijDoAdServera, timeout: PREBID_TIMEOUT });
});
function wyslijDoAdServera() {
if (pbjs.adserverRequestSent) return;
pbjs.adserverRequestSent = true;
googletag.cmd.push(function () {
pbjs.que.push(function () {
pbjs.setTargetingForGPTAsync();
googletag.pubads().refresh();
});
});
}
setTimeout(wyslijDoAdServera, FAILSAFE_TIMEOUT);
Najważniejsze elementy: disableInitialLoad() wstrzymuje wywołanie serwera reklam do czasu zakończenia aukcji, timeout w requestBids określa, jak długo Prebid czeka na oferty, a funkcja awaryjna z setTimeout gwarantuje, że reklamy wyświetlą się nawet wtedy, gdy Prebid się nie załaduje. Moduł currency przelicza oferty na złote, a granularityMultiplier dopasowuje przedziały cenowe do waluty.
Klucze targetowania i pozycje w Google Ad Manager
Prebid przekazuje wynik aukcji do serwera reklam jako klucze targetowania. Najważniejsze to hb_pb (zaokrąglona cena), hb_bidder (zwycięski partner), hb_adid (identyfikator oferty) i hb_size (rozmiar). Po stronie Ad Managera tradycyjnie tworzy się zamówienie z setkami pozycji, z których każda odpowiada jednemu przedziałowi ceny. Ad Manager oferuje też funkcję Header Bidding Trafficking, która upraszcza tę konfigurację; według projektu wyroku w sprawie ad techu Google ma ona trafić do wszystkich wydawców Ad Managera.
Gęstość przedziałów cenowych (priceGranularity) to kompromis: im drobniejsze przedziały, tym dokładniejsza konkurencja z AdX, ale też więcej pozycji do utrzymania. W praktyce wydawcy często stosują własne przedziały: drobne w zakresie stawek, w którym odbywa się większość aukcji, i grube powyżej.
Zgody, RODO i TCF w header biddingu
Każdy partner Prebid przetwarza dane użytkownika, dlatego aukcja musi respektować zgody zebrane przez CMP. W Europie standardem jest TCF, a Google wymagał migracji do wersji 2.3 do 28 lutego 2026 r.
Moduł zarządzania zgodą w Prebid odczytuje ciąg TC z CMP i przekazuje go partnerom. Ustawienie defaultGdprScope: true sprawia, że przy braku informacji z CMP Prebid traktuje ruch jako objęty RODO, co jest bezpieczniejszym założeniem dla polskiego serwisu. Jeśli CMP ładuje się wolno, limit timeout w konfiguracji zgód decyduje, jak długo Prebid czeka na sygnał. Zbyt krótki limit oznacza aukcje bez zgód i niższe stawki. Wymogi wobec samego banera opisujemy w przewodniku po banerze cookies zgodnym z TCF 2.3 i Prawem komunikacji elektronicznej.
Do konfiguracji warto dodać moduł identyfikatorów użytkownika (User ID), który obsługuje identyfikatory alternatywne. Ich działanie i zgodność z RODO omawiamy w artykule o UID2, ID5 i RampID. Obowiązki prawne wydawcy w konkretnej sytuacji najlepiej skonsultować z prawnikiem.
Ile może zyskać wydawca i jak to zmierzyć
Efekt header biddingu zależy od jakości ruchu, liczby partnerów i dotychczasowej konfiguracji. Jedyną wiarygodną metodą oceny jest test z podziałem ruchu.
Załóżmy hipotetycznie, że serwis ma 3 mln odsłon miesięcznie i średni przychód 4 zł za tysiąc odsłon, czyli 12 000 zł. Jeśli po wdrożeniu header biddingu przychód na tysiąc odsłon wzrośnie do 4,80 zł, miesięczny przychód wyniesie 14 400 zł. Jednocześnie wolniejsze ładowanie reklam może obniżyć liczbę odsłon na sesję, więc część zysku zniknie. Dlatego porównuj przychód na 1000 sesji, a nie tylko eCPM.
| Wskaźnik | Co mówi | Sygnał ostrzegawczy |
|---|---|---|
| Przychód na 1000 sesji | Łączny efekt stawek i liczby odsłon | Spadek mimo wyższego eCPM |
| Odsetek przekroczonych limitów czasu | Ilu partnerów nie zdąża z ofertą | Powyżej kilkunastu procent dla partnera |
| Udział wygranych na partnera | Czy partner wnosi realny popyt | Bliski zeru przez kilka tygodni |
| Wskaźnik wypełnienia | Odsetek miejsc z reklamą | Nagły spadek po zmianie konfiguracji |
| Widoczność reklam | Czy odsłony są realnie oglądane | Niska widoczność miejsc na dole strony |
Test przeprowadź na losowo podzielonym ruchu, np. 50% sesji z nową konfiguracją i 50% ze starą, przez co najmniej dwa pełne tygodnie. Zasady planowania takiego testu opisujemy w artykule o wielkości próby w testach A/B. Na znaczeniu zyskuje też widoczność reklam, o czym piszemy w tekście o viewability i attention metrics.
Najczęstsze błędy w header biddingu i jak je wykryć
W praktyce większość problemów z header biddingiem da się wykryć w konsoli przeglądarki. Dodanie parametru ?pbjs_debug=true do adresu strony włącza szczegółowe logi Prebid, a polecenie pbjs.getBidResponses() w konsoli pokazuje otrzymane oferty.
Zbyt wielu partnerów. Każdy adapter to dodatkowe połączenie i kod. Powyżej kilku, kilkunastu partnerów przyrost stawek zwykle nie rekompensuje spowolnienia. Usuń tych, którzy rzadko wygrywają.
Zbyt długi limit czasu. Limit 3000 ms zbiera więcej ofert, ale reklamy pojawiają się z opóźnieniem, a użytkownik zdąży przewinąć stronę. Zacznij od ok. 1000 ms i testuj.
Brak wpisów w ads.txt. Jeśli SSP nie ma wpisu w pliku ads.txt, wielu kupujących nie złoży oferty. Po dodaniu partnera zawsze aktualizuj ads.txt i sprawdź jego plik sellers.json.
Wpływ na Core Web Vitals. Ciężka biblioteka i wiele skryptów partnerów pogarszają szybkość strony. Zbuduj Prebid tylko z potrzebnych modułów i zarezerwuj miejsce na reklamy, żeby uniknąć przesunięć układu. Więcej w poradniku o tagach a Core Web Vitals.
Odświeżanie reklam bez kontroli widoczności. Automatyczne odświeżanie miejsc, których nikt nie widzi, zawyża liczbę odsłon i obniża wartość powierzchni w oczach kupujących, a w skrajnych przypadkach może być traktowane jako nieważny ruch. Jak kupujący wykrywają takie praktyki, wyjaśniamy w artykule o ad fraud.
Header bidding po wyroku w sprawie ad techu Google
Rozstrzygnięcie sądu w USA z września 2026 r. nakłada na Google obowiązek integracji AdX z Prebid. Gdy wejdzie w życie, AdX ma konkurować w aukcji Prebid na równych zasadach, a serwer reklam Google połączy się z Prebid Server.
Dla wydawcy oznacza to, że dobrze utrzymana konfiguracja Prebid stanie się jeszcze ważniejsza. Jeśli korzystasz z przestarzałej wersji biblioteki, pliku zbudowanego lata temu albo konfiguracji, której nikt nie rozumie, to dobry moment, żeby ją uporządkować. Kupujący z kolei będą widzieć tę samą odsłonę różnymi ścieżkami, co zwiększa znaczenie Supply Path Optimization. Wszystkie teksty o aukcjach i sprzedaży powierzchni znajdziesz w podtemacie Programmatic i RTB.
Najczęściej zadawane pytania
Czy header bidding spowalnia stronę?
Może, jeśli jest źle skonfigurowany. Każdy partner to dodatkowe połączenie z przeglądarki, a aukcja opóźnia wywołanie serwera reklam. Wpływ ograniczysz, wybierając kilku najlepszych partnerów, ustawiając limit czasu ok. 1000 ms, budując bibliotekę tylko z potrzebnych modułów i przenosząc część partnerów do Prebid Server.
Czy Prebid.js jest płatny?
Nie. Prebid.js to biblioteka open source rozwijana przez organizację Prebid.org i można z niej korzystać bez opłat licencyjnych. Koszty pojawiają się po stronie wdrożenia i utrzymania: pracy programisty lub zespołu ad ops, ewentualnego hostingu Prebid Server oraz opłat pobieranych przez SSP od wartości sprzedanych odsłon.
Ilu partnerów SSP podłączyć w header biddingu?
Nie ma jednej liczby, ale wielu wydawców osiąga najlepszy wynik przy kilku aktywnych partnerach w przeglądarce. Każdego nowego partnera dodawaj na próbę i sprawdzaj po kilku tygodniach jego udział w wygranych aukcjach oraz odsetek spóźnionych odpowiedzi. Partner, który prawie nie wygrywa, zwykle tylko spowalnia stronę.
Jak sprawdzić, czy Prebid działa na mojej stronie?
Dodaj do adresu parametr pbjs_debug=true i otwórz konsolę przeglądarki – zobaczysz logi aukcji, zapytania do partnerów i otrzymane oferty. W konsoli możesz też wpisać pbjs.getBidResponses(), aby wyświetlić odpowiedzi. Pomocne są również rozszerzenia przeglądarki do debugowania Prebid, które pokazują aukcje dla każdego miejsca reklamowego.
Czym różni się Prebid od Open Bidding Google?
Prebid to otwarte, niezależne narzędzie, które działa w przeglądarce lub na serwerze i zbiera oferty przed wywołaniem serwera reklam. Open Bidding to serwerowe rozwiązanie Google działające wewnątrz Ad Managera, w którym zewnętrzne giełdy licytują razem z AdX. Wielu wydawców korzysta z obu jednocześnie, porównując ich udział w przychodach.