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.
Dane strukturalne w sklepie internetowym są jedną z niewielu prac, w których widać efekt bez czekania na przetasowania w rankingu. Nie poprawiają pozycji — Google mówi to wprost i tak też to opisuję klientom — ale zmieniają to, jak wynik wygląda. A wygląd wyniku przekłada się na liczbę kliknięć w sposób, który da się zaobserwować w Search Console w ciągu kilku tygodni.
W praktyce większość sklepów ma te znaczniki wdrożone w połowie: jest typ produktu i cena, nie ma dostępności albo są opinie, których nie widać na stronie. Efekt jest taki, że karta produktu kwalifikuje się do uboższego wariantu wyniku, choć wystarczyłoby uzupełnić dwa pola.
Poniżej przechodzę po trzech elementach z tytułu — opisie produktu, ocenach zbiorczych i polityce zwrotów — plus tym, co technicznie trzeba zrobić, żeby to działało w typowym sklepie. Piszę o stanie na koniec września 2024 roku, bo wymagania Google w tym obszarze zmieniają się kilka razy w roku.
Mechanizm jest prosty: znaczniki tłumaczą treść strony na format, którego wyszukiwarka nie musi zgadywać. Cena zapisana w kodzie jako liczba z walutą jest jednoznaczna; ta sama cena jako tekst w akapicie już nie, zwłaszcza przy promocjach i wariantach.
W zamian karta produktu może dostać w wynikach dodatkowe elementy: cenę, informację o dostępności, gwiazdki oceny, a przy spełnieniu dalszych warunków także dane o zwrotach i dostawie. Sklep zaczyna też pojawiać się w zestawieniach ofert i w powierzchniach zakupowych Google, do których zwykły opis tekstowy nie daje wejścia.
Jest jeszcze argument, który podaję rzadziej, ale uważam za ważny: znaczniki wymuszają porządek w danych. Nie da się poprawnie oznaczyć dostępności, jeśli sklep sam nie wie, co ma na stanie. Wdrożenie danych strukturalnych bardzo szybko obnaża tego typu zaległości.
Podstawą jest typ opisujący produkt, a w nim zagnieżdżona oferta. Tu warto rozróżnić dwa poziomy, bo w dokumentacji łatwo je pomieszać.
Bezwzględnie potrzebne są nazwa, obraz oraz oferta z ceną, walutą i dostępnością. Bez tego zestawu nie ma o czym rozmawiać — brak dostępności to najczęstszy powód, dla którego karta nie kwalifikuje się do rozszerzonego wyniku, i najczęściej pomijane pole w gotowych szablonach sklepowych.
Silnie zalecane, bo realnie zwiększają szansę na dopasowanie produktu do tego samego przedmiotu u innych sprzedawców: identyfikator globalny, numer katalogowy producenta, nazwa marki oraz opis. Sklep, który sprzedaje towar dostępny u konkurencji i nie podaje identyfikatorów, sam utrudnia sobie życie.
Kilka pułapek, które widzę najczęściej. Cena musi być liczbą bez symbolu waluty i bez spacji rozdzielających tysiące. Dostępność to jedna z wartości ze zdefiniowanej listy, nie dowolny tekst po polsku. Dla produktów z ceną zmienną w czasie warto podać datę ważności ceny. A przy wariantach — rozmiar, kolor — trzeba zdecydować, czy każdy wariant ma własny adres z własnymi znacznikami, czy jeden adres opisuje zakres cen. Oba podejścia są dopuszczalne, mieszanie ich nie.
To rozróżnienie jest kluczowe dla planowania pracy, a prawie nigdy nie pojawia się w rozmowach o „wdrożeniu schemy”.
Google traktuje inaczej stronę, na której produkt można kupić, a inaczej stronę, która o produkcie tylko pisze — recenzję, porównanie, wpis blogowy. Pierwsza kwalifikuje się do wyniku sprzedażowego, z ceną, dostępnością i ewentualnie danymi o zwrotach oraz dostawie. Druga może dostać skromniejszy wariant z oceną i zakresem cen, ale nie wejdzie do powierzchni zakupowych.
Praktyczny wniosek: karta produktu i wpis o produkcie potrzebują innego zestawu pól. Oznaczanie recenzji pełnym zestawem sprzedażowym nie da nic poza ostrzeżeniami w narzędziach, a często wprowadza w błąd, sugerując możliwość zakupu tam, gdzie jej nie ma.
W Search Console te dwa warianty mają zresztą osobne raporty i warto sprawdzać oba. Rozjazd między nimi bywa pierwszą wskazówką, że szablon strony kategorii albo wpisu na blogu generuje znaczniki, których nikt tam nie planował.
Ocena zbiorcza to element, o który klienci proszą najczęściej, bo gwiazdki w wynikach są widoczne od razu. To też element, przy którym najłatwiej złamać zasady.
Reguła podstawowa jest jedna i nie ma od niej wyjątków: oznaczona ocena musi być widoczna na stronie dla użytkownika. Wartość zaszyta w kodzie, której nie da się zobaczyć w treści, jest naruszeniem wytycznych i przy wykryciu kończy się utratą rozszerzeń dla całej domeny, nie tylko dla jednej podstrony.
Poza tym trzy rzeczy do sprawdzenia. Ocena musi opierać się na opiniach zebranych od klientów, a nie wystawionych przez sklep sobie samemu — Google od lat nie akceptuje ocen własnych dla organizacji ani jej usług. Liczba opinii musi być prawdziwa i musi się zgadzać z tym, co widać. Skala oceny powinna być zadeklarowana, jeśli nie jest to standardowa skala pięciostopniowa.
Osobna sprawa to produkty bez opinii. Nie wolno wtedy wystawiać zerowej oceny ani żadnej wartości zastępczej — pole trzeba po prostu pominąć. Widzę sklepy, w których szablon zawsze generuje ocenę, także dla nowości bez ani jednej opinii, i przy większym asortymencie ląduje to jako lawina błędów.
Ten element pojawił się w danych strukturalnych stosunkowo niedawno i jest dziś najmniej wykorzystywany, mimo że dla sklepu jest wyjątkowo praktyczny — informacja o darmowym zwrocie i terminie widoczna przy wyniku rozstrzyga część wątpliwości jeszcze przed kliknięciem.
Politykę zwrotów można podać na dwa sposoby. Pierwszy to zagnieżdżenie jej w ofercie na karcie produktu, wraz z krajem, do którego się stosuje, kategorią polityki, liczbą dni na zwrot, informacją o tym, kto płaci za przesyłkę zwrotną, i sposobem zwrotu. Drugi, dostępny od czerwca tego roku, to podanie jednej polityki dla całego sklepu na poziomie znacznika organizacji — w praktyce w podtypie opisującym sklep internetowy.
Ta druga droga jest w większości przypadków rozsądniejsza. Warunki zwrotu są zwykle takie same dla całego asortymentu, więc powtarzanie ich w każdym produkcie tylko rozdmuchuje kod i mnoży miejsca, w których dane mogą się rozjechać po zmianie regulaminu.
Dwa zastrzeżenia. Jeżeli sklep ma konto w Merchant Center, Google zaleca konfigurację zwrotów właśnie tam, a znaczniki traktować jako uzupełnienie — ustawienia w Merchant Center mają pierwszeństwo. I rzecz oczywista, o której łatwo zapomnieć: oznaczona polityka musi odpowiadać regulaminowi. Rozbieżność między znacznikiem a regulaminem to nie tylko problem z Google, ale i z prawem konsumenckim.
Analogicznie działają dane o dostawie — koszt, kraj, przewidywany czas realizacji. Na dziś obsługiwane są w ramach oferty produktu; podawanie ich zbiorczo na poziomie organizacji, tak jak przy zwrotach, nie jest jeszcze możliwe.
Zaczynam od formatu: zapis w formie osobnego bloku danych w skrypcie, a nie atrybutów rozsypanych po szablonie. Google zaleca ten sposób, a przy utrzymaniu różnica jest przepaścią — blok generuje się w jednym miejscu, zamiast być rozproszonym po dwudziestu plikach widoku.
Dalej kolejność prac, którą stosuję w typowym sklepie. Najpierw jeden szablon dla karty produktu i sprawdzenie go na kilku przypadkach: produkt dostępny, niedostępny, w promocji, z wariantami, bez opinii. Potem znacznik organizacji z polityką zwrotów, wstawiany globalnie. Na końcu pozostałe typy: okruszki nawigacyjne, strona kategorii, wpisy blogowe o produktach.
Trzy uwagi z praktyki. Jeśli sklep stoi na popularnym silniku, znaczniki generuje zwykle wtyczka i najpierw trzeba sprawdzić, czego brakuje w tym, co już wychodzi — zamiast dokładać drugi zestaw obok. Dwa bloki opisujące ten sam produkt to jedno z trudniejszych do wykrycia źródeł błędów.
Jeżeli treść generuje się skryptem po wczytaniu strony, blok danych musi się w źródle znaleźć w sposób, który wyszukiwarka zobaczy — najbezpieczniej po stronie serwera. I ostatnia: dane w znacznikach muszą pochodzić z tego samego miejsca co dane na stronie. Cena renderowana z jednego pola, a oznaczona z drugiego, rozjedzie się przy pierwszej promocji.
Test wyników z elementami rozszerzonymi mówi, czy strona kwalifikuje się do konkretnego wariantu wyniku. Walidator schematu mówi, czy zapis jest formalnie poprawny. To dwa różne pytania i potrzebne są oba narzędzia — kod bywa poprawny formalnie i jednocześnie bezużyteczny dla wyszukiwarki.
Utrzymanie sprowadzam do trzech nawyków. Raz w miesiącu przeglądam raporty danych strukturalnych w Search Console i patrzę na trend liczby błędów, nie na wartość bezwzględną — nagły skok prawie zawsze oznacza wdrożenie, nie zmianę u Google. Po każdej aktualizacji silnika sklepu albo wtyczki sprawdzam jedną kartę produktu ręcznie. A raz na kwartał czytam listę zmian w dokumentacji Google, bo wymagania w tym obszarze bywają zaostrzane bez rozgłosu.
Na koniec rzecz, którą powtarzam przy każdym takim wdrożeniu: to praca, która nie kończy się w dniu publikacji. Znaczniki opisują stan sklepu, a stan sklepu zmienia się codziennie. Jeżeli nikt nie odpowiada za ich zgodność z rzeczywistością, po roku będą opisywać sklep, którego już nie ma.
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 |