Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Sytuacja wygląda dramatycznie i zwykle zdarza się w najgorszym momencie: rano w panelu Merchant Center zamiast kilkunastu tysięcy aktywnych ofert widać kilkanaście, a wszystkie kampanie produktowe stoją. Komunikat wskazuje na niezgodność ceny lub dostępności, czyli formalnie na dane na stronie, nie w pliku.
Pierwsza reakcja większości osób jest zawsze taka sama: ponowne wysłanie pliku. To prawie nigdy nie pomaga, bo plik nie jest przyczyną. Przyczyną jest to, że Google odwiedził strony produktów i zobaczył coś innego, niż zostało przesłane.
Poniżej opisuję kolejność działań, którą stosuję w takiej awarii. Zaczynam od ustalenia zakresu, bo od tego zależy wszystko dalsze, a to jest krok najczęściej pomijany w pośpiechu.
Słowo „wszystko” w opisie awarii bywa nieprecyzyjne i ta nieprecyzyjność kosztuje godziny.
Sprawdzam trzy liczby: ile ofert jest aktywnych, ile odrzuconych i ile ma stan ostrzeżenia. Potem patrzę na rozbicie po typie problemu — czy dominuje jeden komunikat, czy jest ich kilka. Jeden komunikat dotyczący całego katalogu wskazuje na przyczynę systemową, na przykład zmianę w szablonie strony. Kilka różnych sugeruje, że problem narastał od dawna i dziś tylko przekroczył próg widoczności.
Sprawdzam też, czy odrzucenie dotyczy wszystkich krajów i wszystkich źródeł danych, czy tylko jednego. Sklep z kilkoma rynkami ma zwykle kilka źródeł i awaria potrafi dotyczyć tylko jednego z nich.
Na koniec ustalam moment. W panelu widać datę zmiany stanu i to jest najcenniejsza informacja w całej diagnostyce, bo pozwala zapytać zespół techniczny, co zostało wdrożone w tym dniu. Odpowiedź zwykle rozwiązuje sprawę szybciej niż analiza danych.
Warto rozumieć mechanizm, bo bez tego naprawa jest zgadywaniem.
Merchant Center nie ufa wyłącznie plikowi. Regularnie odwiedza strony produktów i odczytuje z nich cenę oraz dostępność, korzystając z danych strukturalnych, a gdy ich nie ma — z zawartości strony. Celem jest ochrona użytkownika przed sytuacją, w której klika ofertę za sto złotych i trafia na produkt za dwieście.
Jeśli wartości się różnią, dzieją się dwie rzeczy. Przy włączonych automatycznych aktualizacjach produktów Google może samodzielnie poprawić dane w ofercie na te ze strony. Przy wyłączonych — oznacza ofertę jako niezgodną i wstrzymuje ją.
Ma to ważną konsekwencję praktyczną. Włączone automatyczne aktualizacje maskują problem: oferty żyją, ale dane w koncie zaczynają się rozjeżdżać z systemem sklepowym. Wyłączone ujawniają problem natychmiast i boleśnie. Wolę drugie ustawienie u klientów z porządnym eksportem, a pierwsze tam, gdzie plik jest odświeżany rzadko.
Dodam, że odczyt ze strony wymaga dostępu. Strona produktu zablokowana w pliku robots, chroniona przed botami albo wymagająca skryptu do wyrenderowania ceny bywa odczytana jako oferta bez ceny — z takim samym skutkiem jak cena błędna.
Lista przypadków, które w praktyce odpowiadają za większość takich awarii.
Ostatni przypadek na liście jest najbardziej podstępny, bo formalnie oba miejsca podają prawdę. Rozbieżność w jednostce trzeba rozwiązać decyzją, a nie poprawką techniczną.
Trzeba powiedzieć wprost, że masowa niezgodność ceny bywa traktowana poważniej niż jako błąd danych.
Google ma zasadę dotyczącą wprowadzania w błąd i konsekwentna rozbieżność między ceną reklamowaną a ceną w koszyku mieści się w niej. Przy dużej skali i braku reakcji może się to skończyć zawieszeniem całego konta, a nie tylko wstrzymaniem ofert. To zupełnie inny poziom problemu, bo odzyskanie konta zajmuje tygodnie.
Sygnałów ostrzegawczych zwykle nie brakuje: powiadomienia o niezgodnościach pojawiają się przed zawieszeniem. Problem polega na tym, że w wielu firmach powiadomienia z Merchant Center idą na skrzynkę, do której nikt nie zagląda, i pierwszym objawem jest zatrzymanie kampanii.
Dlatego w każdym koncie, które przejmuję, sprawdzam adresy powiadomień i ustawiam je na osobę, która realnie coś z tym zrobi. To zajmuje pięć minut i jest jedną z najbardziej opłacalnych czynności w tym całym obszarze.
Jeśli zawieszenie już nastąpiło, kolejność jest odwrotna do intuicyjnej: najpierw naprawiam wszystkie rozbieżności i sprawdzam je ręcznie na kilkudziesięciu produktach, a dopiero potem składam wniosek o ponowne rozpatrzenie. Wniosek złożony przed naprawą zużywa jedną z ograniczonej liczby prób.
Kolejność, która sprawdza się w awarii, gdy ważny jest czas.
Krok pierwszy: weź listę odrzuconych ofert z panelu, wybierz kilka z różnych kategorii i sprawdź ręcznie każdą z nich. Otwórz stronę produktu, zobacz cenę widoczną dla użytkownika, sprawdź znacznik danych strukturalnych i porównaj z wartością z pliku. Trzy takie porównania zwykle wystarczą, żeby rozpoznać wzorzec.
Krok drugi: ustal, która strona ma rację. To decyzja handlowa: która cena jest tą, którą chcemy sprzedawać. Bez tej decyzji nie da się poprawnie zaprogramować niczego.
Krok trzeci: napraw źródło, nie objaw. Jeśli błąd jest w znaczniku, poprawia go zespół techniczny w szablonie. Jeśli w eksporcie, poprawiamy eksport. Regułę w panelu traktuję tu jako rozwiązanie tymczasowe na czas wdrożenia poprawki.
Krok czwarty: sprawdź poprawkę narzędziem do testowania danych strukturalnych i podglądem oferty w panelu, na kilku produktach z różnych kategorii, w tym takich z promocją i z wariantami.
Krok piąty: dopiero teraz wyślij plik i uruchom ponowne przetwarzanie. Wcześniejsze wysyłki niczego nie zmieniają, a zaciemniają obraz w historii konta.
Kilka rzeczy, które faktycznie skracają czas oczekiwania, i kilka, które go nie skracają, choć wszyscy je robią.
Skraca: poprawne mapy witryny i dostępność stron produktów dla robota, bo od tego zależy tempo ponownego odwiedzenia. Skraca też ograniczenie liczby zmian — jedna poprawka wdrożona i sprawdzona jest przetwarzana szybciej niż pięć wprowadzanych na przemian.
Nie skraca: wielokrotne ręczne wysyłanie tego samego pliku, zmiana harmonogramu pobierania na częstszy, usuwanie i ponowne dodawanie źródła danych. Ta ostatnia czynność potrafi wręcz wydłużyć proces, bo traci się historię oferty.
W trakcie oczekiwania warto zająć się czymś pożytecznym: przeglądem ofert z ostrzeżeniami, które nie zostały odrzucone. Zwykle wskazują na te same przyczyny i naprawa ich teraz oszczędza następnej awarii.
I rzecz organizacyjna. Klientowi mówię wprost, ile to potrwa, i nie obiecuję powrotu na następny dzień. Przy poprawnie naprawionym problemie liczy się to zwykle w dniach, nie w godzinach, a obietnica z powietrza kończy się rozmową gorszą niż sama awaria.
Ta awaria niemal zawsze jest powtarzalna, bo jej przyczyną jest brak połączenia między dwoma zespołami.
Ustalam więc trzy rzeczy. Pierwsza: dane strukturalne produktu są traktowane jako element funkcjonalny sklepu, a nie ozdoba SEO — a to znaczy, że wchodzą do listy sprawdzeń przed każdym wdrożeniem szablonu karty produktu.
Druga: monitoring. Prosty skrypt porównujący cenę z pliku z ceną odczytaną ze strony na losowej próbce produktów, uruchamiany codziennie, z powiadomieniem przy rozbieżności powyżej progu. Dzień pracy, a wyłapuje problem, zanim zrobi się z niego awaria.
Trzecia: kontrola po każdej promocji. Zakończenie akcji rabatowej jest w moim doświadczeniu najczęstszym momentem powstawania takich rozjazdów, bo ceny wracają w różnych systemach w różnym tempie.
Na koniec zdanie, które powtarzam przy każdym takim wdrożeniu: Merchant Center nie jest narzędziem marketingu, tylko interfejsem między systemem sprzedażowym a Google. Jeśli traktuje się go jak kanał reklamowy, w którym da się coś podkręcić ustawieniami, awarie tego typu będą wracać.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |