Dane strukturalne (structured data) to jeden z najskuteczniejszych sposobów na wyróżnienie się w wynikach wyszukiwania Google. Dla sklepów internetowych właściwa implementacja Schema.org może znacząco zwiększyć CTR dzięki rich results - bogatym wynikom z cenami, ocenami i dostępnością produktów.
Czym są dane strukturalne Schema.org?
Schema.org to wspólna inicjatywa Google, Microsoft, Yahoo i Yandex, która definiuje standardowy słownik do opisywania treści na stronach internetowych. Dzięki temu wyszukiwarki lepiej rozumieją kontekst Twoich stron.
Formaty implementacji
Dane strukturalne można implementować w trzech formatach:
- JSON-LD (rekomendowany przez Google)
- Microdata (wbudowane w HTML)
- RDFa (rozszerzenie HTML5)
Google oficjalnie rekomenduje JSON-LD, ponieważ:
- Jest oddzielony od kodu HTML
- Łatwiejszy w implementacji i utrzymaniu
- Mniej podatny na błędy
- Wspiera dynamiczne generowanie
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Nazwa produktu"
}
</script>
Product Schema - podstawa e-commerce
Product to główny typ Schema.org dla stron produktowych. Pozwala opisać wszystkie kluczowe informacje o produkcie.
Minimalna implementacja
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Koszulka polo męska Premium",
"image": "https://example.com/images/koszulka-polo.jpg",
"description": "Elegancka koszulka polo z bawełny organicznej. Dostępna w rozmiarach S-XXL.",
"sku": "POLO-001",
"brand": {
"@type": "Brand",
"name": "Premium Fashion"
},
"offers": {
"@type": "Offer",
"price": "149.99",
"priceCurrency": "PLN",
"availability": "https://schema.org/InStock"
}
}
Pełna implementacja z wszystkimi polami
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Koszulka polo męska Premium",
"image": [
"https://example.com/images/koszulka-polo-front.jpg",
"https://example.com/images/koszulka-polo-back.jpg",
"https://example.com/images/koszulka-polo-detail.jpg"
],
"description": "Elegancka koszulka polo z bawełny organicznej. Dostępna w rozmiarach S-XXL. Idealna na co dzień i do biura.",
"sku": "POLO-001",
"mpn": "925872",
"gtin13": "5901234123457",
"brand": {
"@type": "Brand",
"name": "Premium Fashion"
},
"manufacturer": {
"@type": "Organization",
"name": "Premium Fashion Sp. z o.o."
},
"category": "Odzież > Męska > Koszulki polo",
"color": "Granatowy",
"material": "100% bawełna organiczna",
"size": "M",
"audience": {
"@type": "PeopleAudience",
"suggestedGender": "male"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/koszulka-polo-premium",
"price": "149.99",
"priceCurrency": "PLN",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "Sklep Premium Fashion"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "15.00",
"currency": "PLN"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "PL"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 3,
"unitCode": "DAY"
}
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "PL",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "156",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Jan Kowalski"
},
"datePublished": "2025-10-15",
"reviewBody": "Świetna jakość materiału, idealnie leży. Polecam!"
}
]
}
Offer Schema - ceny i dostępność
Offer opisuje ofertę sprzedaży produktu. Jest zagnieżdżony w Product lub może istnieć samodzielnie.
Statusy dostępności
"availability": "https://schema.org/InStock" // Dostępny
"availability": "https://schema.org/OutOfStock" // Niedostępny
"availability": "https://schema.org/PreOrder" // Przedsprzedaż
"availability": "https://schema.org/BackOrder" // Na zamówienie
"availability": "https://schema.org/Discontinued" // Wycofany
"availability": "https://schema.org/LimitedAvailability" // Ograniczona dostępność
Stany produktu
"itemCondition": "https://schema.org/NewCondition" // Nowy
"itemCondition": "https://schema.org/UsedCondition" // Używany
"itemCondition": "https://schema.org/RefurbishedCondition" // Odnowiony
"itemCondition": "https://schema.org/DamagedCondition" // Uszkodzony
Warianty produktu (AggregateOffer)
Gdy produkt ma wiele wariantów z różnymi cenami:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Buty sportowe Runner Pro",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "299.00",
"highPrice": "349.00",
"priceCurrency": "PLN",
"offerCount": "5",
"availability": "https://schema.org/InStock"
}
}
AggregateRating - oceny i recenzje
AggregateRating podsumowuje oceny produktu. To kluczowy element dla rich results z gwiazdkami.
Podstawowa implementacja
{
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "89",
"bestRating": "5",
"worstRating": "1"
}
Z pełnymi recenzjami
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Słuchawki bezprzewodowe Pro",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "234",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Anna Nowak"
},
"datePublished": "2025-11-20",
"reviewBody": "Najlepsze słuchawki jakie miałam. Świetna izolacja dźwięku."
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Piotr Wiśniewski"
},
"datePublished": "2025-11-18",
"reviewBody": "Bardzo dobre, ale etui mogłoby być mniejsze."
}
]
}
BreadcrumbList - ścieżka nawigacji
BreadcrumbList pomaga Google zrozumieć strukturę serwisu i wyświetla ścieżkę w wynikach wyszukiwania.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Strona główna",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Odzież męska",
"item": "https://example.com/odziez-meska/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Koszulki polo",
"item": "https://example.com/odziez-meska/koszulki-polo/"
},
{
"@type": "ListItem",
"position": 4,
"name": "Koszulka polo Premium"
}
]
}
Organization i LocalBusiness
Dla stron firmowych i o nas:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Premium Fashion Sp. z o.o.",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://www.facebook.com/premiumfashion",
"https://www.instagram.com/premiumfashion",
"https://www.linkedin.com/company/premiumfashion"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+48-22-123-45-67",
"contactType": "customer service",
"availableLanguage": ["Polish", "English"]
}
}
Jeśli masz fizyczny sklep, użyj LocalBusiness:
{
"@context": "https://schema.org",
"@type": "Store",
"name": "Premium Fashion - Sklep stacjonarny",
"image": "https://example.com/sklep.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "ul. Marszałkowska 100",
"addressLocality": "Warszawa",
"postalCode": "00-001",
"addressCountry": "PL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.2297,
"longitude": 21.0122
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "20:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "18:00"
}
],
"telephone": "+48-22-123-45-67"
}
Implementacja w popularnych platformach
WooCommerce
WooCommerce ma wbudowane dane strukturalne, ale warto je rozszerzyć wtyczką:
- Rank Math SEO - pełna kontrola nad Schema
- Yoast SEO - podstawowe dane strukturalne
- Schema Pro - zaawansowane opcje
Shopify
Shopify automatycznie generuje podstawowe dane Product. Rozszerzenie:
- Edycja pliku
product.liquid - Aplikacje z App Store (JSON-LD for SEO)
PrestaShop
// W szablonie produktu
{literal}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{/literal}{$product.name|escape:'htmlall':'UTF-8'}{literal}",
"image": "{/literal}{$product.cover.large.url}{literal}",
"description": "{/literal}{$product.description_short|strip_tags|escape:'htmlall':'UTF-8'}{literal}",
"sku": "{/literal}{$product.reference}{literal}",
"offers": {
"@type": "Offer",
"price": "{/literal}{$product.price_amount}{literal}",
"priceCurrency": "PLN",
"availability": "https://schema.org/{/literal}{if $product.quantity > 0}InStock{else}OutOfStock{/if}{literal}"
}
}
</script>
{/literal}
Custom (JavaScript/Astro/Next.js)
// Generowanie JSON-LD w JavaScript
function generateProductSchema(product) {
return {
"@context": "https://schema.org",
"@type": "Product",
"name": product.name,
"image": product.images,
"description": product.description,
"sku": product.sku,
"brand": {
"@type": "Brand",
"name": product.brand
},
"offers": {
"@type": "Offer",
"price": product.price.toFixed(2),
"priceCurrency": "PLN",
"availability": product.inStock
? "https://schema.org/InStock"
: "https://schema.org/OutOfStock",
"itemCondition": "https://schema.org/NewCondition"
},
...(product.rating && {
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": product.rating.average.toFixed(1),
"reviewCount": product.rating.count.toString()
}
})
};
}
// Wstrzyknięcie do HTML
const schema = generateProductSchema(productData);
document.head.insertAdjacentHTML(
'beforeend',
`<script type="application/ld+json">${JSON.stringify(schema)}</script>`
);
Testowanie i walidacja
Narzędzia Google
-
Rich Results Test - Oficjalne narzędzie Google https://search.google.com/test/rich-results
-
Schema Markup Validator - Szczegółowa walidacja https://validator.schema.org/
-
Google Search Console - Raport “Ulepszenia” pokazuje błędy w danych strukturalnych
Częste błędy walidacji
- Brak wymaganych pól - np.
offersbezprice - Nieprawidłowe wartości - np.
availabilitybez pełnego URL - Błędne typy danych - np.
pricejako number zamiast string - Brak kontekstu - zapomniany
@context
Najlepsze praktyki
1. Dokładność danych
Dane strukturalne MUSZĄ odpowiadać treści widocznej na stronie. Google karze za rozbieżności.
2. Jedna implementacja na stronę
Unikaj duplikowania tego samego typu Schema na jednej stronie.
3. Aktualizuj dane dynamicznie
Ceny, dostępność i oceny powinny być aktualizowane w czasie rzeczywistym.
4. Testuj przed wdrożeniem
Zawsze waliduj Schema przed publikacją na produkcji.
5. Monitoruj w Search Console
Regularnie sprawdzaj raport “Ulepszenia” w Google Search Console.
Podsumowanie
Dane strukturalne Schema.org to must-have dla każdego sklepu internetowego. Prawidłowa implementacja:
- Zwiększa CTR dzięki rich results (gwiazdki, ceny, dostępność)
- Pomaga Google lepiej zrozumieć Twoje produkty
- Może poprawić pozycje w wynikach wyszukiwania
- Ułatwia integrację z Google Shopping
Zacznij od podstawowej implementacji Product z Offer, a następnie rozszerzaj o AggregateRating, Review i szczegóły wysyłki. Pamiętaj o regularnym testowaniu i monitorowaniu w Search Console.
Źródła
-
Google Search Central - Structured data markup https://developers.google.com/search/docs/appearance/structured-data
-
Schema.org - Product https://schema.org/Product
-
Google Search Central - Product structured data https://developers.google.com/search/docs/appearance/structured-data/product
-
Google Rich Results Test https://search.google.com/test/rich-results
-
Schema.org - Offer https://schema.org/Offer
-
Google Search Central - Review snippet https://developers.google.com/search/docs/appearance/structured-data/review-snippet



