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:

  1. JSON-LD (rekomendowany przez Google)
  2. Microdata (wbudowane w HTML)
  3. 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 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

  1. Rich Results Test - Oficjalne narzędzie Google https://search.google.com/test/rich-results

  2. Schema Markup Validator - Szczegółowa walidacja https://validator.schema.org/

  3. Google Search Console - Raport “Ulepszenia” pokazuje błędy w danych strukturalnych

Częste błędy walidacji

  1. Brak wymaganych pól - np. offers bez price
  2. Nieprawidłowe wartości - np. availability bez pełnego URL
  3. Błędne typy danych - np. price jako number zamiast string
  4. 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

  1. Google Search Central - Structured data markup https://developers.google.com/search/docs/appearance/structured-data

  2. Schema.org - Product https://schema.org/Product

  3. Google Search Central - Product structured data https://developers.google.com/search/docs/appearance/structured-data/product

  4. Google Rich Results Test https://search.google.com/test/rich-results

  5. Schema.org - Offer https://schema.org/Offer

  6. Google Search Central - Review snippet https://developers.google.com/search/docs/appearance/structured-data/review-snippet