Структуровані дані Schema.org для товарів — повний гайд із прикладами
Детальний посібник зі структурованої розмітки Schema.org для інтернет-магазинів: JSON-LD, обов'язкові поля, приклади, валідація, часті помилки та рекомендації. Все, що потрібно для розширених снипетів товарів у пошуковій видачі.
📖 Зміст
- Що таке Schema.org і навіщо це потрібно
- Який формат розмітки використовувати
- Обов'язкові поля для картки товару
- Повний список рекомендованих полів
- Простий приклад JSON-LD (мінімум)
- Повна розмітка товару (GTIN, brand, SKU, рейтинг, відгуки)
- Варіативні товари (розмір/колір)
- BreadcrumbList (хлібні крихти)
- Рейтинг товарів (aggregateRating)
- Відгуки покупців (review)
- Інструменти перевірки та валідації
- Best practices та рекомендації
- Часті помилки та як їх виправити
- Шаблон для динамічної вставки
- Часті запитання (FAQ)
1. Що таке Schema.org і навіщо це потрібно
Schema.org — це словник (вендор-нейтральна схема) для структурованих даних, що підтримується великими пошуковими системами (Google, Yandex, Bing, Yahoo). Розмітка допомагає пошуковикам правильно зрозуміти вміст картки товару та може призвести до розширених снипетів (ціна, наявність, рейтинг, відгуки, фотографії), а також коректному відображенню в соцмережах через Open Graph і Twitter Cards.
Структуровані дані — це стандартизований формат передачі інформації про сторінку та її вміст. Пошукові системи використовують ці дані для покращення результатів пошуку: товарні снипети з ціною та наявністю, зіркові рейтинги, хлібні крихти та багато іншого.
Офіційні посилання:
2. Який формат розмітки використовувати
Google рекомендує JSON-LD (JavaScript Object Notation for Linked Data). Цей формат не втручається в DOM, його легко вставляти сервером і динамічно генерувати з даних БД. JSON-LD являє собою блок <script> з типом application/ld+json, який розміщується в <head> або <body> сторінки.
Існуючі формати розмітки:
- JSON-LD (рекомендується) — окремий блок скрипта, не впливає на верстку
- Microdata — атрибути в HTML-тегах (itemscope, itemtype, itemprop)
- RDFa — розширені атрибути для зв'язування даних
Для інтернет-магазину обирайте JSON-LD — це найгнучкіший і підтримуваний формат.
3. Обов'язкові поля для коректної картки товару
Мінімальний набір полів, необхідний для коректної обробки Google та відображення розширеного снипета:
- name — назва товару
- image — хоча б одне зображення (URL)
- description — короткий опис (1-2 речення)
- offers.price — ціна (числом, без символу валюти)
- offers.priceCurrency — валюта (ISO 4217, наприклад UAH, USD, EUR)
- offers.availability — доступність (повний URL із schema.org, наприклад
https://schema.org/InStock) - offers.url — URL сторінки товару (канонічний)
4. Повний список рекомендованих полів
- sku — артикул (внутрішній код товару)
- mpn — manufacturer part number (код виробника)
- gtin8 / gtin12 / gtin13 / gtin14 — штрихкод (GTIN-8, GTIN-12, GTIN-13, GTIN-14)
- brand — бренд (об'єкт Brand із полем name)
- category — категорія товару
- color, material, size, weight — фізичні характеристики
- aggregateRating — зведений рейтинг (AggregateRating)
- review — відгуки (масив Review)
- itemCondition — стан товару (NewCondition, UsedCondition тощо)
- additionalProperty — довільні властивості (PropertyValue)
- shippingDetails / OfferShippingDetails — умови та вартість доставки
- seller — організація-продавець (Organization)
- offers.priceValidUntil — дата закінчення дії ціни
5. Простий робочий приклад JSON-LD (мінімум)
Базовий приклад розмітки товару з обов'язковими полями:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones X100",
"image": "https://site.com/images/headphones-x100.jpg",
"description": "Бездротові навушники з шумозаглушенням.",
"offers": {
"@type": "Offer",
"url": "https://site.com/product/headphones-x100",
"priceCurrency": "UAH",
"price": "2499",
"availability": "https://schema.org/InStock"
}
}
</script>
Важно: price надсилайте як число або рядок цифр (без знаку валюти). availability використовуйте повний URL із schema.org (наприклад, https://schema.org/InStock).
6. Повна розмітка товару (GTIN, brand, SKU, рейтинг, відгуки)
Нижче — розширена розмітка з багатьма полями: GTIN, бренд, SKU, множинні зображення, aggregateRating, review, additionalProperty, shippingDetails, seller. Це найповніший приклад, який можна адаптувати під будь-який інтернет-магазин.
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Xiaomi Mi Band 7",
"image": [
"https://site.com/upload/mi-band-7-1.webp",
"https://site.com/upload/mi-band-7-2.webp"
],
"description": "Фітнес-браслет з AMOLED-екраном та пульсометром.",
"sku": "MI-BAND-7-BLACK",
"mpn": "MB7-2025",
"gtin13": "6954176850021",
"brand": {
"@type": "Brand",
"name": "Xiaomi"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Колір",
"value": "Чорний"
},
{
"@type": "PropertyValue",
"name": "Матеріал",
"value": "Силікон, метал"
}
],
"offers": {
"@type": "Offer",
"url": "https://site.com/product/mi-band-7/",
"priceCurrency": "UAH",
"price": "1499",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "BooStore.pro"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "50"
}
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "238"
},
"review": [
{
"@type": "Review",
"author": "Олена",
"datePublished": "2025-02-10",
"reviewBody": "Чудовий браслет, працює стабільно!",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
}
]
}
</script>
У цьому прикладі показано: базова інформація про товар, характеристики через additionalProperty, детальна інформація про пропозицію (ціна, валюта, наявність, стан, продавець, доставка), рейтинг та відгуки.
Тип Product — основний тип Schema.org для опису товару. Містить назву, опис, зображення, атрибути (бренд, GTIN, SKU) та вкладені типи Offer, AggregateRating, Review.
Тип Offer — опис комерційної пропозиції: ціна, валюта, наявність, стан, умови доставки, продавець.
Тип AggregateRating — зведений рейтинг товару на основі всіх відгуків.
Тип Review — окремий відгук покупця з автором, датою, текстом та оцінкою.
Тип BreadcrumbList — навігаційний ланцюжок (хлібні крихти), що показує шлях від головної сторінки до поточного товару.
7. Варіативні товари (розмір/колір) — підходи
Є два поширені підходи для розмітки товарів з варіантами (колір, розмір, матеріал):
- Один Product + масив offers — якщо всі варіанти на одній сторінці. Кожен Offer містить свою ціну, наявність та атрибути варіанту.
- Кілька Product — якщо у кожного варіанту є окрема сторінка/URL.
Приклад: Product з двома Offer (різні кольори, одна сторінка):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Футболка Classic",
"image": ["https://site.com/img/tshirt-red.jpg"],
"description": "Класична футболка з бавовни",
"sku": "TSHIRT-001",
"brand": {"@type": "Brand", "name": "BrandCo"},
"offers": [
{
"@type": "Offer",
"sku": "TSHIRT-001-RED",
"price": "599",
"priceCurrency": "UAH",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
{
"@type": "Offer",
"sku": "TSHIRT-001-BLUE",
"price": "599",
"priceCurrency": "UAH",
"availability": "https://schema.org/OutOfStock",
"itemCondition": "https://schema.org/NewCondition"
}
]
}
</script>
При використанні масиву offers кожен елемент повинен містити свій @type ("Offer"), ціну, валюту та статус наявності.
8. BreadcrumbList (хлібні крихти) — навігація
Хлібні крихти допомагають пошуковикам показати структуру сайту в снипеті та покращують користувацьку навігацію. Рекомендується розміщувати BreadcrumbList на кожній сторінці товару разом з Product.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Головна",
"item": "https://site.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Категорія: Браслети",
"item": "https://site.com/category/bracelets"
},
{
"@type": "ListItem",
"position": 3,
"name": "Xiaomi Mi Band 7",
"item": "https://site.com/product/mi-band-7/"
}
]
}
</script>
Кожен елемент масиву itemListElement — це об'єкт типу ListItem з полями position (порядковий номер), name (назва) та item (URL).
9. Рейтинг товарів (aggregateRating)
Рейтинг дозволяє відображати середню оцінку товару та кількість відгуків у розширеному снипеті. Це підвищує довіру користувачів та збільшує CTR з пошукової видачі.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones X100",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "154"
}
}
</script>
Рекомендація: ratingValue — число з десятковою крапкою (наприклад 4.7), reviewCount — ціле число. Не вказуйте фальшиві рейтинги — Google може накласти санкції.
Додатково можна вказати bestRating (максимальна оцінка, за замовчуванням 5) та worstRating (мінімальна оцінка, за замовчуванням 1).
10. Відгуки покупців (review)
Відгуки дозволяють детально описувати думку користувачів про товар, включаючи автора, дату публікації, текст та оцінку. Кожен відгук — окремий об'єкт Review у масиві.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones X100",
"review": [
{
"@type": "Review",
"author": "Олена",
"datePublished": "2025-05-10",
"reviewBody": "Дуже зручні навушники, чудовий звук!",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
},
{
"@type": "Review",
"author": "Ігор",
"datePublished": "2025-05-12",
"reviewBody": "Хороші, але трохи громіздкі.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4"
}
}
]
}
</script>
Кожен відгук включає автора (author), дату публікації (datePublished), текст (reviewBody) та рейтинг (reviewRating). Можна додавати будь-яку кількість відгуків, але тільки реальні.
11. Інструменти перевірки та валідації
- Google Rich Results Test — швидко показує помилки та попередження для rich snippets. Дозволяє перевірити URL або вставити код вручну.
- Schema.org Validator — детальна валідація схеми від консорціуму Schema.org.
- Google Search Console — у розділі «Покращення» → «Товари» можна відстежувати помилки після публікації.
- Yandex Webmaster — аналогічний інструмент для перевірки структурованих даних.
12. Best practices та рекомендації
- Генеруйте JSON-LD на сервері з БД — ціна, наявність, sku, зображення повинні бути синхронізовані з контентом сторінки.
- Не використовуйте тестові або фейкові дані в production.
- Якщо показуєте кілька цін (акції, знижки), використовуйте
priceValidUntilта вказуйте актуальну ціну вoffers.price. - Вказуйте
priceCurrencyу форматі ISO 4217 (UAH, USD, EUR, RUB). - Не створюйте конфліктну розмітку — ціна в JSON-LD повинна збігатися з видимою ціною на сторінці.
- Для міжнародних магазинів вказуйте локалі, адресу продавця та shippingDetails.
- Використовуйте
BreadcrumbListтаProductразом — це покращує навігацію у видачі. - Додавайте мінімум одне зображення з коректним URL (доступним для індексації).
- Регулярно перевіряйте розмітку через Google Rich Results Test та Search Console.
- Детальніше про покращення SEO сайту читайте у статті: Як покращити SEO сайту — керівництво.
- Для налаштування аналітики та відстеження eCommerce використовуйте матеріал: Налаштування GA4 та eCommerce аналітики.
13. Часті помилки та як їх виправити
- Помилка: price містить символ валюти (
2499 грн) — виправлення: зберігати та виводити тільки цифри, валюту вказувати вpriceCurrency. - Помилка: відсутність image або бите посилання — виправлення: додати мінімум 1 коректний доступний URL зображення.
- Помилка: неспівпадаючі URL — виправлення: використовуйте URL саме поточної сторінки товару в
offers.url. - Помилка: масив review або aggregateRating містить фальшиві дані — виправлення: показуйте тільки реальні відгуки та рейтинги.
- Помилка: неправильний формат availability — виправлення: використовуйте повний URL виду
https://schema.org/InStock. - Помилка: дублювання розмітки (кілька блоків JSON-LD з конфліктуючими даними) — виправлення: об'єднайте все в один блок.
- Помилка: відсутність breadcrumb на сторінках товарів — виправлення: додайте BreadcrumbList для покращення навігації у видачі.
14. Шаблон для динамічної вставки (PHP/Twig/Smarty)
Нижче — шаблон, де змінні замінюються сервером. Підставляйте свої значення замість %VAR%.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "%PRODUCT_NAME%",
"image": [%IMAGE_LIST%],
"description": "%SHORT_DESCRIPTION%",
"sku": "%SKU%",
"brand": {"@type": "Brand", "name": "%BRAND%"},
"offers": {
"@type": "Offer",
"url": "%PRODUCT_URL%",
"priceCurrency": "%CURRENCY%",
"price": "%PRICE%",
"priceValidUntil": "%PRICE_VALID_UNTIL%",
"availability": "%AVAILABILITY%"
}
}
</script>
❓ Часті запитання (FAQ)
Що таке Schema.org і яку користь це дає інтернет-магазину?
Schema.org — це словник структурованих даних, підтримуваний Google, Yandex, Bing та Yahoo. Розмітка допомагає пошуковикам розуміти вміст сторінок та відображати розширені снипети (ціна, наявність, рейтинг, відгуки). Це підвищує CTR з пошуку та покращує видимість товарів.
Який формат розмітки найкраще використовувати?
Google рекомендує JSON-LD. Він не впливає на верстку, легко генерується сервером, підтримує всі типи Schema.org і не конфліктує з HTML-розміткою. Microdata та RDFa вважаються застарілими підходами для нових проектів.
Чи обов'язково додавати всі поля з гайду?
Ні. Для коректного розширеного снипета достатньо обов'язкового мінімуму: name, image, description, offers.price, offers.priceCurrency, offers.availability, offers.url. Всі інші поля — рекомендаційні та розширюють можливості відображення.
Чи можна використовувати Schema.org для товарів з варіантами (колір, розмір)?
Так. Якщо варіанти на одній сторінці — використовуйте масив offers. Якщо на різних — створіть окремий Product для кожного варіанту. В обох випадках Google коректно обробляє розмітку.
Як перевірити, чи правильно працює розмітка на моєму сайті?
Використовуйте Google Rich Results Test (search.google.com/test/rich-results) — вставте URL або код розмітки. Після публікації відстежуйте помилки в Google Search Console у розділі «Покращення» → «Товари».
Чи потрібно додавати розмітку вручну, якщо сайт на BooStore.pro?
Ні. BooStore.pro вже містить всю базову мікророзмітку (Product, Offer, Price, Availability, BreadcrumbList, ImageObject, AggregateRating, Review). Додаткові поля (GTIN, MPN, brand) можна додати при необхідності через налаштування платформи.