2026-08-31
Reklamy wyprzedanych produktów: przestań przepalać budżet (2026)
Reklama wyprzedanego produktu to płacenie za wizyty, których nikt nie może sfinalizować — klient klika, trafia na „produkt niedostępny” i wychodzi. A w polskim multichannel opóźnienie między sprzedażą ostatniej sztuki a pauzą tej reklamy sięga 24–48 godzin[1]. Przez tę dobę czy dwie algorytm nie tylko przepala budżet na martwe kliknięcia — najpewniej zbiera z tego wyprzedanego SKU sygnały, które psują ocenę Twojej oferty. To nie drobny wyciek. To wyciek, który sam się pogłębia.
W skrócie
- 97% sklepów płaci za martwe kliknięcia. W badaniu 500 retailerów aż 97% wciąż serwowało reklamy wyprzedanych produktów — często 24–48h po wyczerpaniu zapasu[1]. To budżet wydany na wizyty, których nikt nie sfinalizuje.
- Winny jest cykl dobowy. Około 90% sklepów odświeża stany raz na ~24h; tylko 5% robi to co 6–23h[1]. Sprzedaż na Allegro zdejmuje towar w sekundy — feed i reklama dowiadują się nazajutrz.
- Gorzej niż zmarnowany klik. Niedokładna dostępność to jeden z głównych powodów odrzuceń ofert w Merchant Center[2], a rozjazd feed↔landing potrafi zdyskwalifikować produkt[3]. Karmisz też algorytm sygnałem „ta oferta rozczarowuje”.
- Polski multichannel jest szczególnie narażony. Allegro to ~42% rynku[9] i 15,3 mln aktywnych kupujących[5]. Ostatnia sztuka często sprzedaje się tam, zanim Twój feed w ogóle mrugnie.
- Rozwiązanie to łańcuch, nie jedna wtyczka. Magazyn/ERP jako źródło prawdy ➔ poprawny atrybut
availabilityw feedzie ➔ reguły automatyczne. Pauzuj na poziomie wariantu, nie całego produktu.
To nie jest kolejne „monitoruj swój feed”. Monitorowanie to za mało — zanim zobaczysz problem w panelu, budżet już wyciekł. Poniżej pokazuję, gdzie pęka łańcuch od magazynu do reklamy przy sprzedaży na kilku kanałach naraz i jak go spiąć, żeby reklama gasła w minuty, a nie w dobę.
Sprzedajesz ostatnią sztukę na Allegro. Google dowie się za dobę.
Poniedziałkowy poranek. Masz jedną sztukę popularnego modelu butów. O 9:14 ktoś kupuje ją na Allegro — stan w magazynie natychmiast spada do zera. Ale feed do Google i Meta odświeża się raz na dobę, powiedzmy o 3:00 w nocy. Więc przez najbliższe ~18 godzin ten but wisi w feedzie jako in_stock: reklamowany, licytowany, promowany.
Przez te osiemnaście godzin płacisz podwójnie. Po pierwsze, ludzie klikają. Trafiają na kartę, która mówi „niedostępny” albo — gorzej — pozwala dodać do koszyka i wywala błąd przy płatności. Wychodzą. Po drugie, i to jest ta droższa część: system reklamowy dalej licytuje ten SKU, bo feed mówi „dostępny”, więc z jego perspektywy nic złego się nie dzieje.
To nie scenariusz brzegowy. To domyślne zachowanie sklepu na wielu kanałach: sprzedaż zdejmuje stan w sekundy, a warstwa reklamowa dowiaduje się o tym z opóźnieniem jednego cyklu synchronizacji. U większości ten cykl trwa dobę.
Sedno problemu: to nie jest problem „braku danych”. Dane o tym, że towar się skończył, istnieją — siedzą w Twoim magazynie od 9:14. Problem to latencja: ile czasu potrzeba, żeby ta informacja dotarła z magazynu przez feed do decyzji reklamowej. I to tę latencję trzeba skrócić, nie „monitorować feed”.
97% sklepów płaci za martwe kliknięcia
Nie musisz wierzyć mi na słowo. Analiza 500 globalnych retailerów przeprowadzona przez ShoppingIQ przed Black Friday 2025 pokazała, że 97% z nich nadal płaciło za kliknięcia w wyprzedane produkty — często jeszcze 24–48 godzin po wyczerpaniu zapasu[1]. To nie jest margines. To praktycznie cały rynek.
Dlaczego akurat Google Shopping boli najbardziej? Bo tam idzie najwięcej pieniędzy: ~75% budżetu retail search w USA, a domyślne ustawienia pozwalają reklamom wyprzedanych produktów działać bez żadnej kontroli[1]. Nikt tego nie wyłącza, bo nikt tego nie ustawił, żeby się wyłączało.
To okno 24–48h to nie „reklama chodziła kilka minut za długo”. To pełna doba, czasem dwie, w których najlepiej konwertujący produkt pompuje budżet w ślepą uliczkę. I tu jest ironia: im lepszy produkt, tym szybciej się wyprzedaje i tym więcej przepala po wyprzedaniu — bo algorytm widzi, że kliknięć było dużo.
Skąd bierze się to okno? Z tego, jak rzadko sklepy w ogóle odświeżają stan.
Gorzej niż zmarnowany klik: algorytm uczy się na wyprzedanym SKU
Gdyby problem kończył się na zmarnowanych kliknięciach, byłby drogi, ale prosty. Prawdziwy koszt jest głębszy. Performance Max i Advantage+ to czarne skrzynki — ustawiasz cel i budżet, a algorytm decyduje, komu i za ile pokazać produkt. (Pisałem o tym szerzej przy okazji reklamy Google i Meta dla MŚP.) Karmią się dwoma rzeczami: danymi z Merchant Center i sygnałami z Twojej strony docelowej.
Najpierw twarda strona. Niedokładne dane produktowe — a dostępność jest jednym z najczęstszych powodów — należą do głównych przyczyn odrzuceń ofert w Merchant Center[2]. Jest też strona miękka, trudniejsza do zmierzenia: kiedy algorytm wysyła ruch na produkt, który okazuje się niedostępny, najpewniej dostaje sygnał zwrotny „ta oferta rozczarowuje” — i to zostaje na koncie. W żadnym raporcie nie zobaczysz tego wprost, ale bidding na sygnałach jakości działa właśnie tak.
Jest jeszcze twardsza konsekwencja. Atrybut availability jest w Merchant Center wymagany, a jeśli feed mówi in_stock, podczas gdy strona docelowa pokazuje produkt jako niedostępny, Google może zdyskwalifikować ten produkt[3]. Rozjazd między feedem a landingiem to nie ostrzeżenie — to podstawa do wyrzucenia oferty. A powtarzające się rozjazdy podkopują zaufanie do całego konta.
I tu jest pułapka: problem wychodzi na jaw za późno. W badaniu Rithum jedna na trzy firmy przyznaje, że sygnały są rozproszone po tylu systemach, że stockouty, błędy feedu i opóźnienia dostaw wychodzą na jaw dopiero, gdy klient je zgłosi albo gdy spadną wyniki[4]. O wycieku dowiadujesz się po fakcie.
Reklama, która prowadzi do „produkt niedostępny”, to najdroższy sposób palenia budżetu, jaki istnieje. Płacisz za kliknięcie, tracisz klienta i jeszcze uczysz algorytm, że Twoja oferta rozczarowuje.
Dlaczego polski multichannel jest wyjątkowo narażony
Teraz specyfika Polski, bo tu problem jest ostrzejszy niż na rynkach, gdzie sklep sprzedaje głównie z własnej strony. U nas centrum grawitacji to Allegro. Platforma osiągnęła w 2025 GMV bliskie 70 mld zł i miała 15,3 mln aktywnych kupujących[5], a jej udział w polskim rynku e-commerce to około 42% — dla porównania drugi Amazon.pl ma ~8%, a Zalando ~4,5%[9]. Reszta obrotu rozkłada się na ponad 55 000 mniejszych sklepów, przy udziale e-handlu w całym detalu na poziomie ~9,1%[6].
Co to znaczy dla stanów? Że Twój najgorętszy towar najczęściej sprzedaje się tam, na Allegro, a nie na Twojej stronie — i to Allegro zdejmuje stan pierwsze, w momencie zakupu. Jeśli używasz Base (dawniej BaseLinker) albo innego ERP jako centrum, synchronizacja między marketplace’ami bywa bardzo szybka — Base integruje się z ponad 2000 systemami i automatycznie synchronizuje stany, a przy zerowym stanie potrafi za Ciebie zamknąć oferty[7]. Ale ten sam sprawnie zsynchronizowany stan często NIE dociera równie szybko do feedu reklamowego, bo feed do Google/Meta zwykle generuje się na innym harmonogramie.
Sprzedaż synchronizuje się między kanałami szybko, a przyklejona do niej reklama — dobowo. Reklama jest najsłabszym ogniwem. Poniżej: kto zdejmuje stan pierwszy i ile trwa, zanim reklama się o tym dowie.
| Kanał | Kto zdejmuje stan najpierw | Typowe opóźnienie do pauzy reklamy |
|---|---|---|
| Allegro | Marketplace — w sekundy od zakupu, przez ERP/Base zamyka oferty gdzie indziej[7] | Do 24–48h, jeśli feed reklamowy chodzi w cyklu dobowym[1] |
| Sklep własny (Shopify / PrestaShop / WooCommerce) | Silnik sklepu w czasie rzeczywistym | Krótsze — jeśli feed czyta stan wprost z bazy sklepu; dłuższe przy feedzie cache’owanym |
| Retail / POS (sklep stacjonarny) | Kasa / system POS przy paragonie | Zależy od integracji POS↔ERP; często najdłuższe, bo POS bywa poza cyklem feedu |
| Inne marketplace (eMAG / Zalando) | Marketplace, podobnie jak Allegro | Do 24–48h, ta sama luka feedu co przy Allegro[1] |
Wiersze „sklep własny” i „POS” to typowe wzorce, nie dane z badania — zależą od Twojej konkretnej integracji. Okno 24–48h pochodzi z globalnego badania ShoppingIQ[1] i przeniesione jest tu na realia polskich marketplace’ów; mechanizm zamykania ofert przy zerowym stanie — z dokumentacji Base[7].
Wzorzec jest prosty: im dalej kanał sprzedaży od feedu reklamowego, tym większa luka.
Łańcuch synchronizacji: magazyn ➔ feed ➔ reguły reklam
Dobra wiadomość: nie musisz naprawiać całej firmy — tylko jeden łańcuch przepływu informacji, ogniwo po ogniwie.
Ogniwo 1: magazyn / ERP jako jedyne źródło prawdy o stanie
Stan magazynowy może mieć tylko jedno źródło prawdy. Jeśli Allegro, sklep i feed każdy trzyma własną „prawdę” o dostępności, zawsze się rozjadą. W polskich realiach tym źródłem jest najczęściej ERP albo Base — to on wie, że o 9:14 zeszła ostatnia sztuka, i to on ma tę informację rozesłać wszędzie, łącznie z feedem[7]. Jeśli Twój feed reklamowy generuje się z osobnej, nieaktualizowanej tabeli — tu masz pierwszą dziurę do załatania.
Ogniwo 2: feed z poprawnym atrybutem availability
Feed musi nieść prawidłowy atrybut availability. Merchant Center przyjmuje cztery wartości: in_stock, out_of_stock, preorder i backorder[3]. To nie kosmetyka — to atrybut wymagany, a jego rozjazd ze stroną docelową dyskwalifikuje produkt[3]. Ważny niuans przy przedsprzedaży i zamówieniach oczekujących: produkty tymczasowo niedostępne oznaczaj jako backorder, a jeszcze niewydane jako preorder — ale oba wymagają atrybutu availability_date, inaczej też zostaną zdyskwalifikowane[3].
Ogniwo 3: custom_label na dostępność i rotację zapasu
Tu zaczyna się sterowanie. Dodaj do feedu custom_label kodujący poziom zapasu albo tempo rotacji — „niski stan”, „ostatnie sztuki”, „normalny”. Dzięki temu produkty na wyczerpaniu potraktujesz inaczej niż resztę: niższa stawka, osobna grupa, szybsza pauza. To etykieta, na której zbudujesz reguły.
Ogniwo 4: reguły automatyczne po stronie reklam
Ostatnie ogniwo to egzekucja — i tu każda platforma robi to inaczej.
Google Ads / Performance Max. Najprostszy mechanizm masz wbudowany: produkt, który w feedzie dostaje availability = out_of_stock, przestaje być serwowany w Shopping i PMax przy najbliższym odświeżeniu — nie pauzujesz go ręcznie, wystarczy że atrybut mówi prawdę. Dla stopnia pośredniego („ostatnie sztuki”) użyj custom_label_0: oznacz nim SKU na wyczerpaniu i wydziel je do osobnej grupy plików (listing group / asset group), na której obniżysz stawki albo którą wykluczysz. A jeśli chcesz reagować na poziomie kampanii, reguła automatyczna (Narzędzia → Reguły → „Wstrzymaj”, uruchamiana co kilka godzin) pilnuje warunku za Ciebie — przy pojedynczych produktach jednak to feed, nie reguła, wykonuje właściwą robotę.
Meta / Advantage+. Tu sterujesz zestawem produktowym. W Commerce Manager → Katalog → Zestawy produktowe zbuduj zestaw z filtrem availability = in stock (albo inventory > wybrany próg) i skieruj kampanię Advantage+ dokładnie na ten zestaw[8]. Wyprzedany wariant wypada z zestawu sam — reklama przestaje go pokazywać bez ręcznej pauzy. To jest odpowiednik „auto-pauzy”, którego Meta nie daje jednym przełącznikiem.
Jedna zasada ważniejsza od wszystkich reguł: skróć cykl odświeżania feedu, zanim zaczniesz kombinować z wyrafinowaną automatyzacją. Dziewięciu na dziesięciu sklepów odświeża stan raz na dobę[1] — a Allegro dostaje aktualizację natychmiast. Ten dobowy cykl to zwykle nie brak możliwości, tylko domyślne ustawienie, którego nikt nie ruszył. Samo zejście z 24h do kilku godzin zamyka większość okna, w którym przepalasz budżet — i to najtańszym możliwym kosztem. Ręczne pilnowanie tego codziennie kosztowałoby realne godziny; policzyłem to w tekście o tym, ile automatyzacja oszczędza sklepowi.
Progi zamiast paniki: nie pauzuj wszystkiego
Zanim rzucisz się gasić wszystko z niskim stanem — ostrożnie. Nadgorliwa automatyzacja potrafi zrobić więcej szkody niż sam wyciek.
Nie gaś kampanii przy jednej sztuce, jeśli jutro masz restock. Wyłączenie reklamy i tak zresetuje fazę uczenia kampanii, a Ty stracisz sprzedaż na produkcie, który zaraz wróci. Próg, nie zero.
Pauzuj na poziomie wariantu, nie całego produktu. To jeden z najdroższych błędów. Wyprzedał się rozmiar M? Reklamuj dalej S, L, XL i inne kolory, a wyłącz tylko martwy wariant. Gaszenie całości przy braku jednego rozmiaru to dobrowolna rezygnacja ze sprzedaży, którą masz w ręku.
Uważaj na fałszywe alarmy. Błąd synchronizacji, chwilowe zero podczas inwentaryzacji, opóźniona korekta zwrotu — każde na moment pokaże zero tam, gdzie towar jest. Dlatego reguły odpal najpierw w trybie „tylko alert”, zanim pozwolisz im gasić kampanie. I pamiętaj o różnicy platform z poprzedniej sekcji: Google potrafi zdjąć wyprzedany produkt sam, gdy feed mówi prawdę — Meta nie, tam sterujesz zestawem produktowym. Kto liczy, że Meta „sama to wyłączy”, będzie płacił za martwe kliknięcia najdłużej.
Od czego zacząć: plan na najbliższy tydzień
Najpierw sprawdź, czy w ogóle masz problem — potem łataj ogniwo po ogniwie. Realistyczna kolejność na tydzień:
Sprawdź, czy feed i stan w ogóle się zgadzają. Zanim cokolwiek zautomatyzujesz, zweryfikuj rozjazd. Weź kilka produktów o niskim stanie i porównaj: co mówi magazyn, co mówi feed, co pokazuje strona docelowa. Jeśli już tu widać różnice, masz źródło wycieku. Zacznij od bezpłatnego audytu śledzenia i konfiguracji (Tracking Checker), żeby sprawdzić, czy Twoje dane w ogóle spinają się poprawnie.
Ustaw atrybut availability jako pochodną magazynu. Zadbaj, żeby availability w feedzie był generowany wprost ze stanu w ERP/Base, a nie z osobnej, ręcznie aktualizowanej tabeli. Cztery wartości, poprawnie mapowane, plus availability_date dla backorder i preorder[3]. To fundament — bez niego reguły nie mają na czym stanąć.
Uruchom reguły w trybie „tylko alert”. Zanim pozwolisz automatowi gasić kampanie, niech przez kilka dni tylko Cię powiadamia: „ten SKU spadł poniżej progu”. Zobaczysz, czy trafia, i wyłapiesz fałszywe alarmy z inwentaryzacji czy zwrotów, zanim zrobią szkodę.
Włącz pauzę na poziomie wariantu + custom_label. Gdy zaufasz alertom, przełącz je w działanie. Pauzuj wariant (rozmiar/kolor), nie cały produkt. W Google użyj reguł/skryptów na custom_label, w Meta — filtrów zestawu produktowego poniżej progu[8].
Wprowadź cotygodniowy przegląd rozjazdów feed↔stan. Raz w tygodniu sprawdź, gdzie feed i magazyn się rozjechały i dlaczego. To wyłapie systematyczne błędy (jeden kanał, który nie synchronizuje się poprawnie) zanim urosną. Sprawdź też Diagnostykę w Merchant Center i Commerce Manager[8].
Kolejność to rekomendacja redakcyjna oparta na progu wejścia i zwrocie — najpierw diagnoza, potem fundament danych, dopiero na końcu automat. Liczby w opisach pochodzą ze źródeł podanych w tekście.
Cały ten łańcuch sprowadza się do jednego pytania: ile czasu mija od chwili, gdy schodzi ostatnia sztuka, do chwili, gdy reklama o tym wie. Dziś u większości sklepów to doba. Skróć tę drogę, a przestaniesz płacić za kliknięcia, których nikt nie może sfinalizować — i przestaniesz uczyć algorytm, że Twoja najlepsza oferta rozczarowuje.
FAQ
Sources
- ShoppingIQ / Search Engine Land — „Study: Retailers are bleeding ad spend on Google Shopping this Black Friday” (badanie 500 globalnych retailerów, listopad 2025: 97% płaci za kliknięcia w wyprzedane produkty, często 24–48h po wyprzedaży; ~90% odświeża stan co ~24h, 5% co 6–23h, 2% co 48h; Google Shopping ≈ 75% budżetu retail search w USA). searchengineland.com
- Productsup — „Top 5 reasons for Google Merchant Center disapprovals and how to fix them in 2026” (niedokładne/niespójne dane produktowe, w tym dostępność, należą do głównych przyczyn odrzuceń ofert w Merchant Center, które zasilają Shopping i Performance Max). productsup.com
- Google Merchant Center — dokumentacja atrybutu availability (wymagany; 4 wartości: in_stock, out_of_stock, preorder, backorder; niezgodność feed↔strona docelowa → dyskwalifikacja; backorder/preorder wymagają availability_date). support.google.com
- Rithum — „Ecommerce ad spend waste” (1 na 3 firmy: sygnały rozproszone po tylu systemach, że stockouty, błędy feedu i opóźnienia dostaw wychodzą na jaw dopiero z reklamacji klienta albo spadku wyników). rithum.com
- Allegro — „Allegro's GMV nears 70 bln PLN in 2025…” (GMV ≈ 70 mld zł w 2025; 15,3 mln aktywnych kupujących w Polsce). media.allegro.pl
- edrone — „Statystyki e-commerce Polska” (ponad 55 000 aktywnych sklepów internetowych; udział online w detalu ≈ 9,1%). edrone.me
- Base (dawniej BaseLinker) — funkcje platformy (integracje z ponad 2000 systemami, marketplace’ami i sklepami; „automatyczna synchronizacja stanów magazynowych i cen na wielu platformach marketplace jednocześnie”; „może także zamykać za Ciebie oferty, jeśli stan lub cena będą równe zeru”). base.com
- Prediko — „Meta Ads & Inventory Management” (Meta nie oferuje jednego uniwersalnego auto-pauza per produkt; wyprzedane SKU wyklucza się filtrami zestawu produktowego poniżej progu zapasu; availability na poziomie wariantu; „Check Commerce Manager → Catalog → Diagnostics on a regular schedule”). prediko.io
- Rzeczpospolita / Mediapanel — polski rynek e-commerce 2025 (Allegro ≈ 42% rynku i 69,7 mld zł sprzedaży; Amazon.pl ~8%, OLX ~5%, Zalando ~4,5%; udział e-handlu w detalu ~9,1%). rp.pl