JSON-LD dla PrestaShop: jak dodać Product schema bez programisty

Jeśli masz sklep na PrestaShop i chcesz, żeby ChatGPT, Gemini i Google widziały Twoje produkty jako ustrukturyzowane dane, wklej snippet JSON-LD z danymi Product schema do szablonu strony produktu.

Strona produktu sklepu internetowego z unoszącym się kodem JSON, odczytywanym przez wiązkę asystenta AI.
Direct Answer

Jeśli masz sklep na PrestaShop i chcesz, żeby ChatGPT, Gemini i Google widziały Twoje produkty jako ustrukturyzowane dane, wklej snippet <script type="application/ld+json"> z danymi Product schema do szablonu strony produktu. Bez pisania PHP.

Minimum to: name, image, offers (z price, priceCurrency, availability) i brand. Test po wklejeniu: Google Rich Results Test pod adresem https://search.google.com/test/rich-results.

Jeśli masz sklep na PrestaShop, dodaj JSON-LD Product schema do pliku product.tpl, bo agenty AI i Google Rich Results czytają te dane niezależnie od wyglądu strony. Sprawdź: czy snippet ma name, image, offers.price, offers.availability i brand.

Klient pyta ChatGPT: „Gdzie kupię buty do biegania z karbonową płytką do 600 zł?" albo „Jaki suplement z magnezem dla sportowca?" Jeśli Twój sklep na PrestaShop nie ma Product schema, model AI nie wie, że masz ten produkt, jaką ma cenę i czy jest dostępny. Google i agenty AI czytają dane strukturalne jako tekst JSON — niezależnie od wyglądu strony.

Brak Product schema to najczęstszy błąd wykrywany przez Audit AI w polskich sklepach e-commerce. Naprawa nie wymaga programisty — wymaga wiedzieć gdzie wkleić gotowy kod i co w nim zmienić.

Najważniejsze wnioski

  • JSON-LD to preferowany format dla danych strukturalnych według Google — nie wymaga zmian w HTML, wkleja się jako osobny blok <script>.
  • Minimum Product schema to sześć pól: name, image, description, brand, offers.price, offers.availability. Bez nich Google wyświetla błąd w Rich Results Test.
  • PrestaShop 1.7 i 8.x pozwalają dodać JSON-LD przez edycję pliku product.tpl w panelu administracyjnym — bez FTP, bez PHP.
  • Nie każdy sklep tego potrzebuje. Jeśli masz poniżej 5 produktów albo sprzedajesz wyłącznie usługi, priorytet jest niski.
  • Test zajmuje 5 minut — wklej URL produktu do Rich Results Test i widzisz błędy od razu.

Dlaczego to ważne w 2026

Google od kilku lat pokazuje rich snippets — produkty ze schema pojawiają się w wynikach z gwiazdkami, ceną i dostępnością. To nie jest nowość. Nowością jest drugi wymiar: ChatGPT Search i Gemini korzystają z danych strukturalnych przy budowaniu odpowiedzi zakupowych.

Kiedy użytkownik pyta AI o produkt z ceną, model szuka danych, które może powtórzyć bez zgadywania. PrestaShop 1.7.x i 8.x domyślnie nie generuje pełnego Product schema — moduł ps_shoppingcart i domyślny motyw Classic tworzą tylko metadane Open Graph, nie JSON-LD zgodny z wymaganiami Google. Większość polskich sklepów na PrestaShop ma tę lukę bez świadomości, że to luka.

Schema.org/Product ma ponad 50 właściwości. Google i agenty AI wymagają zaledwie kilku kluczowych — reszta to bonus dla specyficznych kategorii (elektronika, odzież, suplementy).

Sprawdź to teraz, zanim przejdziesz dalej: wejdź na https://search.google.com/test/rich-results i wklej URL swojego głównego produktu. Jeśli nie widzisz zakładki „Produkt" w wynikach — masz tę lukę i ten artykuł jest dla Ciebie. Bez Product schema Google nie wyświetli ceny ani dostępności produktu w wynikach wyszukiwania, nawet jeśli strona jest w indeksie.

Czym JSON-LD różni się od innych formatów

Są trzy sposoby kodowania danych strukturalnych: JSON-LD, Microdata i RDFa. PrestaShop niekiedy generuje Microdata wbudowane w HTML — ale Google oficjalnie rekomenduje JSON-LD jako format preferowany, bo jest łatwiejszy w utrzymaniu.

| Format | Gdzie siedzi | Trudność edycji | Rekomendacja Google | | --------- | ---------------------- | --------------- | ------------------- | | JSON-LD | Osobny blok <script> | Łatwa | ✅ Preferowany | | Microdata | Wpleciony w HTML | Trudna | ⚠️ Akceptowany | | RDFa | Atrybuty w tagach HTML | Trudna | ⚠️ Akceptowany |

JSON-LD to jeden osobny blok. Edytujesz go bez ruszania struktury HTML — nie setki tagów rozsianych po szablonie.

Krok po kroku: jak dodać Product schema w PrestaShop

  1. Znajdź plik szablonu produktu

    W panelu PrestaShop wejdź do Wygląd → Motywy i logo → Edytuj aktualny motyw. Szukasz pliku catalog/product.tpl. Jeśli Twój hosting ma menedżer plików (cPanel File Manager albo Plesk), możesz edytować plik bezpośrednio pod ścieżką:

    ścieżka pliku
    themes/{nazwa-motywu}/templates/catalog/product.tpl

    Przed edycją: pobierz kopię pliku na komputer. 30 sekund, które może zaoszczędzić kilka godzin.

    Słabo
    Edytuję plik bez kopii, bo „zawsze można cofnąć”.
    Lepiej
    Pobieram kopię product.tpl lokalnie. Jeśli coś się posypie, upload oryginalnego pliku przywraca sklep w 2 minuty.
  2. Przygotuj snippet JSON-LD

    Podstawowy snippet Product schema — zawiera wszystkie pola wymagane przez Google:

    product-schema-static.html
    <script type="application/ld+json">
    {
    "@context": "https://schema.org/",
    "@type": "Product",
    "name": "NAZWA PRODUKTU",
    "image": [
    "URL DO ZDJECIA PRODUKTU"
    ],
    "description": "OPIS PRODUKTU (max 5000 znaków)",
    "brand": {
    "@type": "Brand",
    "name": "NAZWA MARKI"
    },
    "offers": {
    "@type": "Offer",
    "url": "URL STRONY PRODUKTU",
    "priceCurrency": "PLN",
    "price": "CENA NUMERYCZNA",
    "priceValidUntil": "2026-12-31",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock"
    }
    }
    
    </script>

    To wersja statyczna — ręcznie wypełniona. Dla kilku produktów wystarczy.

    Sklep obuwniczy: dla butów do biegania wpisz w brand nazwę producenta (np. "ASICS"), w name pełną nazwę modelu z rozmiarem, w price aktualną cenę PLN.

    Sklep z suplementami: w name podaj pełną nazwę z gramatyką ("Magnez B6 forte 60 tabletek"), w description skład i dawkowanie.

  3. Zamień wartości statyczne na dynamiczne (opcjonalnie)

    Przy więcej niż 10 produktach ręczne wypełnianie każdego snippetu to za dużo roboty. PrestaShop używa silnika szablonów Smarty — pozwala wstawiać zmienne z bazy danych.

    Wersja dynamiczna dla PrestaShop 1.7/8.x:

    product-schema-dynamic.tpl
    <script type="application/ld+json">
    {
    "@context": "https://schema.org/",
    "@type": "Product",
    "name": "{$product.name|escape:'html':'UTF-8'}",
    "image": [
      "{$product.cover.bySize.large_default.url}"
    ],
    "description": "{$product.description_short|strip_tags|escape:'html':'UTF-8'}",
    "brand": {
      "@type": "Brand",
      "name": "{if $product.manufacturer_name}{$product.manufacturer_name|escape:'html':'UTF-8'}{else}Sklep{/if}"
    },
    "offers": {
    "@type": "Offer",
    "url": "{$product.url}",
      "priceCurrency": "{$currency.iso_code}",
    "price": "{$product.price_amount}",
    "priceValidUntil": "2026-12-31",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "{if $product.availability == 'available'}https://schema.org/InStock{else}https://schema.org/OutOfStock{/if}"
    }
    }
    
    </script>

    Nie znasz Smarty? Wklej wersję statyczną dla głównych produktów. Dynamiczna przydaje się gdy chcesz pokazać plik programiście lub obsłużyć cały katalog za jednym razem.

  4. Wklej snippet we właściwe miejsce

    W pliku product.tpl znajdź zamykający tag </head> albo {'{block name=\'head_end\'}'}. Wklej snippet tuż przed tym tagiem.

    product.tpl
    {_ JSON-LD Product schema — dodano 2026-05-27 _}
    
    <script type="application/ld+json">
    {...snippet...}
    </script>
    
    {/block}

    Komentarz z datą pozwala zidentyfikować zmianę po roku, gdy nie będziesz pamiętał co edytowałeś.

    Snippet musi być w sekcji <head> albo bezpośrednio w <body> — nie poniżej stopki.

  5. Zapisz plik i sprawdź w Rich Results Test

    Po zapisaniu product.tpl otwórz stronę dowolnego produktu w sklepie. Skopiuj URL i wklej do:

    url
    https://search.google.com/test/rich-results

    Kliknij Test URL. Google pobierze stronę i pokaże wynik:

    • ✅ Zielony checkmark: snippet poprawny, kwalifikuje się do rich results
    • ❌ Błąd: lista brakujących lub niepoprawnych pól z opisem co zmienić

    Jeśli widzisz Missing field "offers" — sprawdź czy zmienna $product.price_amount zwraca wartość. Niektóre wersje PrestaShop używają $product.price zamiast $product.price_amount.

  6. Sprawdź dodatkowe właściwości dla swojej kategorii

    Dla produktów, przy których klienci porównują szczegóły techniczne, dodaj pola specyficzne dla kategorii:

    Dla odzieży i obuwia:

    schema-odzież.json
    "color": "Czarny",
    "size": "42",
    "material": "skóra naturalna",
    "audience": {
    "@type": "PeopleAudience",
    "suggestedGender": "male"
    }

    Dla suplementów i kosmetyków:

    schema-suplementy.json
    "additionalProperty": [
    {
      "@type": "PropertyValue",
      "name": "Gramatura",
      "value": "500g"
    }
    ]

    Dla elektroniki:

    schema-elektronika.json
    "model": "GX-500",
    "gtin13": "1234567890123"

    Nie dodawaj pól, których wartości nie jesteś pewny — błędne dane structured data są gorsze niż brak danych.

  7. Monitoruj w Search Console co miesiąc

    Rich Results Test sprawdza jeden URL na raz. Do regularnego monitoringu użyj Google Search Console — zakładka Ulepszenia pokazuje status danych strukturalnych dla całej witryny, pogrupowany według błędów i ostrzeżeń.

    Sklep z 50 produktami widzi tam listę problemów od razu — zamiast sprawdzać każdą stronę osobno.

Gotowe snippety do skopiowania

Snippet minimalny (wersja statyczna)

Wypełnij CAPS_LOCK wartościami ze swojego sklepu:

product-schema-minimal.html
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "PEŁNA NAZWA PRODUKTU",
"image": "https://twojsklep.pl/img/p/NAZWA-ZDJECIA.jpg",
"description": "KRÓTKI OPIS PRODUKTU",
"brand": {
  "@type": "Brand",
  "name": "MARKA"
},
"offers": {
  "@type": "Offer",
  "url": "https://twojsklep.pl/produkt/nazwa-produktu",
  "priceCurrency": "PLN",
  "price": "199.00",
  "priceValidUntil": "2026-12-31",
  "itemCondition": "https://schema.org/NewCondition",
  "availability": "https://schema.org/InStock"
}
}
</script>

Snippet z recenzjami (agregowane oceny)

Tylko jeśli masz recenzje widoczne na stronie produktu:

product-schema-with-reviews.html
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "PEŁNA NAZWA PRODUKTU",
"image": "URL DO ZDJECIA",
"brand": { "@type": "Brand", "name": "MARKA" },
"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.5",
  "reviewCount": "23"
},
"offers": {
  "@type": "Offer",
  "priceCurrency": "PLN",
  "price": "199.00",
  "availability": "https://schema.org/InStock"
}
}
</script>

ratingValue i reviewCount muszą zgadzać się z recenzjami widocznymi na stronie. Jeśli nie masz recenzji — nie dodawaj aggregateRating. Google karze za fałszywe oceny.

Checklista wdrożenia Product schema w PrestaShop

Checklista · 0/18 zrobione
  • Pobrano kopię pliku product.tpl przed edycją
  • Snippet JSON-LD dodany do sekcji <head> lub <body> strony produktu
  • Pole name zawiera pełną nazwę produktu
  • Pole image to działający pełny URL do zdjęcia produktu (nie ścieżka relatywna)
  • Pole description wypełnione (min. 50 znaków)
  • Pole brand.name zawiera nazwę producenta lub marki
  • Pole offers.price to liczba bez symbolu waluty ("199.00", nie "199 zł")
  • Pole offers.priceCurrency to kod ISO waluty ("PLN")
  • Pole offers.availability to pełny URL schematu ("https://schema.org/InStock" lub "https://schema.org/OutOfStock")
  • URL strony produktu w offers.url prowadzi do właściwego produktu
  • Test w Rich Results Test — brak błędów krytycznych
  • W Google Search Console brak ostrzeżeń dla sekcji "Produkt" w Ulepszeniach
  • Dane strukturalne zgodne z tym, co widzi użytkownik (cena, dostępność, oceny)
  • Cena w snippecie odpowiada cenie wyświetlanej na stronie (z VAT jeśli tak wyświetlasz)
  • priceValidUntil ustawione na datę w przyszłości
  • Przy wariantach produktu — snippet załadowany dynamicznie dla aktywnego wariantu
  • Przy recenzjach: aggregateRating.reviewCount zgadza się z liczbą recenzji na stronie
  • Przypomnienie do miesięcznego sprawdzenia w Search Console

Plan wdrożenia na 7 dni

  1. Wybierz 3 produkty z największym ruchem. Sprawdź w Google Analytics lub Search Console które strony produktów mają najwięcej sesji. Zanotuj ich CTR — to linia bazowa do pomiaru efektów.

  2. Pobierz product.tpl, zrób kopię. Przygotuj statyczny snippet dla każdego z 3 produktów — wypełnij ręcznie ceny, nazwy, URL zdjęcia.

  3. Wklej snippet do product.tpl. Zapisz. Sprawdź każdy z 3 produktów w Rich Results Test. Popraw błędy.

  4. Zaloguj się do Google Search Console. Sprawdź czy pojawia się zakładka "Produkt" w Ulepszeniach. Jeśli nie — czekaj 48h, Google jeszcze nie zindeksował zmian.

  5. Jeśli masz ponad 10 produktów — skonwertuj snippet na wersję dynamiczną ze zmiennymi Smarty albo przekaż wersję statyczną programiście z prośbą o automatyzację.

  6. Uzupełnij pola specyficzne dla kategorii: color/size dla odzieży, gtin13 dla elektroniki, additionalProperty dla suplementów.

  7. Sprawdź Search Console ponownie. Ustaw przypomnienie na 14 i 30 dni. Wklej URL sklepu do Audit AI — pełny raport AI Readiness ze statusem wszystkich danych strukturalnych.

Najczęstsze błędy przy wdrażaniu Product schema

Cena z symbolem waluty w polu price

Google oczekuje liczby, nie tekstu. Przecinek dziesiętny też jest błędem — używaj kropki.

Słabo
"price": "199,00 zł"
Lepiej
"price": "199.00", "priceCurrency": "PLN"
availability niezgodna z widocznym stanem produktu

Google sprawdza zgodność danych strukturalnych z treścią strony. Niezgodność może skutkować wyłączeniem rich results.

Słabo
"availability": "https://schema.org/InStock" // produkt niedostępny na stronie
Lepiej
"availability": "{if $product.availability == 'available'}https://schema.org/InStock{else}https://schema.org/OutOfStock{/if}"
Zdjęcie jako ścieżka relatywna

JSON-LD wymaga pełnych URL. Ścieżka relatywna nie działa w kontekście parsowanym przez zewnętrzne narzędzia.

Słabo
"image": "/img/p/12345.jpg"
Lepiej
"image": "https://twojsklep.pl/img/p/12345.jpg"
Snippet poza <head> lub <body>

Niektóre motywy PrestaShop mają niestandardowe struktury szablonów. Snippet wklejony po zamykającym </html> nie będzie wykryty przez walidator.

Zawsze sprawdź w Rich Results Test — jeśli wynik jest pusty mimo wklejonego snippetu, prawdopodobnie trafił poza <body>.

Jak mierzyć efekty po wdrożeniu

Google musi ponownie zindeksować strony po zmianie — dla aktywnych sklepów trwa to kilka godzin do kilku dni. Nie sprawdzaj efektów w pierwszej dobie.

Sygnały warte śledzenia:

  • Rich Results w Search Console → Ulepszenia → Produkt: zielony status i liczba prawidłowych elementów
  • CTR w Search Console: produkty z rich snippet mogą mieć wyższy CTR — zanotuj CTR dla 3 kluczowych produktów jeszcze dzisiaj i porównaj po 30 dniach
  • Kliknięcia z AI Search: ruch z domen OpenAI, Google Gemini lub Perplexity — widoczny w Google Analytics 4 przy odpowiednich ustawieniach
  • Rich snippet w wynikach Google: wpisz site:twojsklep.pl nazwa-produktu — czy wynik pokazuje gwiazdki i cenę?

Ustaw przypomnienie w kalendarzu na 7 i 14 dni po wdrożeniu. Dla sklepów z małym ruchem organicznym zmiany mogą być widoczne dopiero po 30 dniach.

Dla kogo to nie jest dobre rozwiązanie

Nie musisz tego wdrażać jeśli:

  • Sprzedajesz wyłącznie usługi, nie produkty fizyczne (schema.org ma osobne typy: Service, LocalBusiness)
  • Sklep jest zamknięty dla ogółu, B2B z dostępem po logowaniu — Google nie zindeksuje tych stron
  • Masz mniej niż 5 produktów i nie planujesz skalowania — nakład jest nieproporcjonalny do zysku
  • Motyw PrestaShop jest mocno zmodyfikowany i nie masz dostępu do product.tpl — bez edycji szablonu lub dedykowanej wtyczki wdrożenie nie jest możliwe

Poczekaj z wdrożeniem jeśli:

  • Ceny lub dostępność zmieniają się kilka razy dziennie bez automatycznej aktualizacji — ryzyko niezgodności między snippet a stanem faktycznym jest zbyt duże
  • Sklep jest w trakcie migracji na nowy motyw — wdrożenie schema po stabilizacji da pewniejszy wynik

Podsumowanie

Product schema JSON-LD w PrestaShop zajmuje jedno popołudnie: kopia pliku, wklejony snippet, test w Rich Results Test. Efekty widać w dwóch miejscach — rich snippets w Google i lepsza widoczność w odpowiedziach AI na zapytania zakupowe.

Zacznij od trzech produktów z największym ruchem. Sprawdź Rich Results Test. Wróć do Search Console po tygodniu. Jeśli chcesz zobaczyć pełny raport AI Readiness swojego sklepu — włącznie ze statusem danych strukturalnych, robots.txt, llms.txt i zgodnością z agentami AI — uruchom bezpłatny audyt na Audit AI.

FAQ

Czy Product schema działa na PrestaShop 1.6?
Technicznie tak — JSON-LD to zwykły blok <script>, możesz go dodać do każdej wersji. Ale PrestaShop 1.6 jest od lat bez wsparcia bezpieczeństwa. Priorytetem jest najpierw migracja do 8.x, a dopiero potem schema.
Czy potrzebuję osobnego snippetu dla każdego produktu?
Nie, jeśli używasz wersji dynamicznej ze zmiennymi Smarty. Jeden snippet w product.tpl obsługuje wszystkie produkty — zmienne {$product.name}, {$product.price_amount} itp. są zastępowane automatycznie dla każdej strony.
Co się stanie jeśli cena w snippecie nie zgadza się z ceną na stronie?
Google może dezaktywować rich results dla Twojego sklepu i wyświetlić ostrzeżenie w Search Console. Niezgodność jest wykrywana przez automatyczne skany porównujące snippet z widoczną treścią strony.
Czy mogę użyć wtyczki zamiast edytować product.tpl?
Tak. Na rynku są moduły PrestaShop do zarządzania structured data (np. SEO Expert, Rich Snippets by Presta-SEO). Kosztują 50–150 € i nie wymagają edycji plików. Dla sklepów bez dostępu do szablonów to szybsze rozwiązanie.
Ile czasu zajmie zanim Google pokaże rich snippets w wynikach?
Od kilku godzin do 2–4 tygodni, zależnie od częstotliwości indeksowania Twojego sklepu. Aktywne sklepy z dużym ruchem są indeksowane częściej. Sprawdź Search Console po 7 dniach — zakładka Ulepszenia pokaże status.

Źródła

Sprawdź, czy AI cytuje Twoją stronę

Audyt AI-ready w 60 sekund: GEO, llms.txt, Schema, struktura treści. Powiemy, co konkretnie naprawić — i w jakiej kolejności.

Uruchom bezpłatny audyt
60 sekundBez rejestracji50 checkpointów