Налаштування мікророзмітки товарів (Product Schema) для інтернет-магазину
Чому Google не показує ціну товару у видачі?
Ви написали чудовий опис, завантажили фотографії, виставили адекватну ціну — але в пошуку все одно бачите лише синє посилання без додаткової інформації. Причина — відсутність мікророзмітки. Google просто не знає, що у товару є ціна, знижка або рейтинг. Product Schema — це JSON-LD скрипт на сторінці товару, який явно повідомляє пошуковику ці дані. Без неї Google змушений вгадувати і часто помиляється. Результат — звичайний сніпет замість розширеного. За даними досліджень, розширені сніпети збільшують CTR на 15–30%, а в наших проектах середній приріст склав 22%. Це означає, що кожен п'ятий додатковий клік — безкоштовний трафік, який економить бюджет на контекстну рекламу.
Що таке Product Schema і як вона працює?
Це структуровані дані за стандартом Schema.org, які розміщуються на сторінці товару. Google використовує їх для формування розширених сніпетів. Мікророзмітка не видна користувачам, але для пошукових роботів це інструкція: «Ось що це за товар, скільки коштує, чи є в наявності, що про нього думають покупці».
Ось як виглядає повний JSON-LD блок для ноутбука:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Ноутбук ASUS ROG Strix G16",
"sku": "ROG-G16-RTX4070",
"gtin13": "4711081694342",
"description": "Геймерський ноутбук з RTX 4070, процессором Intel Core i7 останнього покоління та 16 дюймовим дисплеєм 240Hz.",
"brand": {
"@type": "Brand",
"name": "ASUS"
},
"image": [
"https://example.ru/images/rog-strix-1.jpg",
"https://example.ru/images/rog-strix-2.jpg"
],
"offers": {
"@type": "Offer",
"url": "https://example.ru/notebooks/asus-rog-strix-g16",
"priceCurrency": "RUB",
"price": "149990",
"priceValidUntil": "через месяц от даты публикации",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "ТехноМагазин"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"reviewCount": "47"
},
"review": [
{
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"author": { "@type": "Person", "name": "Алексей К." },
"datePublished": "недавно",
"reviewBody": "Отличный ноутбук для игр, тихий и холодный при умеренной нагрузке."
}
]
}
Зверніть увагу: price передається рядком без валюти, availability — URL схемою. Google не приймає "price": "149 990" або "availability": "in stock". Тільки строгий синтаксис. JSON-LD розмітка в 10 разів простіша для впровадження, ніж RDFa, і повністю підтримується Google.
Як розмічати товари з варіаціями (розмір, колір)
Якщо товар має модифікації — різні розміри кросівок або кольори чохлів — використовуйте тип ProductGroup. Всередині hasVariant перераховуються всі опції з власними цінами та наявністю.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Кросівки Nike Air Max 90",
"hasVariant": [
{
"@type": "Product",
"name": "Nike Air Max 90 White — розмір 42",
"offers": { "@type": "Offer", "price": "8990", "availability": "InStock" },
"additionalProperty": [
{ "@type": "PropertyValue", "name": "Колір", "value": "Білий" },
{ "@type": "PropertyValue", "name": "Розмір", "value": "42" }
]
}
]
}
Це гарантує, що у видачі Google покаже сніпет саме того варіанту, який переглядає користувач. Для товарів з великою кількістю варіацій (наприклад, одяг з розмірами від XS до XXL) такий підхід обов'язковий — без розмітки Google часто показує загальну сторінку, що знижує клікабельність.
Динамічна генерація на Laravel: приклад з практики
Вручну розмічати кожну сторінку — нереально. На одному з проектів з 5000 товарів ми автоматизували генерацію через сервіс-клас. Ось як це виглядає:
class ProductSchemaGenerator
{
public function generate(Product $product): array
{
return [
'@context' => 'https://schema.org',
'@type' => 'Product',
'name' => $product->name,
'sku' => $product->sku,
'description' => $product->meta_description ?? strip_tags($product->description),
'image' => $product->images->pluck('url')->toArray(),
'brand' => ['@type' => 'Brand', 'name' => $product->brand->name],
'offers' => [
'@type' => 'Offer',
'price' => number_format($product->price / 100, 2, '.', ''),
'priceCurrency' => 'RUB',
'availability' => $product->in_stock
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock',
'priceValidUntil' => now()->addMonth()->format('Y-m-d'),
'seller' => ['@type' => 'Organization', 'name' => config('app.name')]
],
'aggregateRating' => $product->reviews_count > 0 ? [
'@type' => 'AggregateRating',
'ratingValue' => number_format($product->average_rating, 1),
'reviewCount' => $product->reviews_count
] : null
];
}
}
Ключові моменти: ціна передається в копійках (ділимо на 100), ціна дійсна місяць, aggregateRating додається тільки якщо є відгуки. Цей код легко вбудувати в будь-який шаблон Blade або Vue-компонент. Аналогічний підхід можна реалізувати на будь-якій платформі — WordPress, OpenCart, Bitrix.
Як уникнути помилок при налаштуванні мікророзмітки?
Навіть досвідчені розробники допускають типові промахи. Ось таблиця найчастіших помилок та їх наслідків:
| Помилка | Наслідок | Рішення |
|---|---|---|
Порожні поля price або availability |
Розмітка ігнорується | Видалити властивість, якщо даних немає |
| Невідповідність ціни на сторінці та в JSON-LD | Google не використовує схему | Синхронізувати дані через єдине джерело |
reviewCount: 0 при відсутності відгуків |
Зниження довіри до розмітки | Прибирати aggregateRating цілком |
| Неправильний формат ціни (з символом валюти) | Помилка валідації | Передавати число рядком без валюти |
Крім того, використовуйте інструмент Google Rich Results Test для перевірки кожної сторінки перед публікацією. Це дозволить виявити проблеми до того, як вони потраплять у видачу.
Скільки часу займає налаштування і що входить?
Час впровадження залежить від складності каталогу. Орієнтовні терміни:
| Тип проекту | Тривалість | Опис |
|---|---|---|
| Каталог до 100 товарів, без варіацій | 1 день | Базова генерація JSON-LD, ручне вставлення |
| Каталог до 5000 товарів з простими варіаціями | 2–3 дні | Розробка сервісного класу, тестування |
| Великий магазин (10 000+ товарів, множинні варіації) | 3–5 днів | Повна автоматизація, ProductGroup, інтеграція з CMS |
У вартість включено: розробка генератора на вашому стеку (Laravel, Vue/React, будь-яка CMS), впровадження на всі типи сторінок товарів, тестування через інструменти Google, документація з підтримки розмітки. Ми гарантуємо коректну роботу протягом місяця після впровадження. Інвестиції в мікророзмітку окупаються за рахунок зростання CTR вже в перші місяці.
Наш досвід: понад 7 років займаємося SEO-розміткою e-commerce проектів, налаштували Product Schema для 120+ інтернет-магазинів. Середній приріст CTR після впровадження — 22%.
Замовте консультацію — ми оцінимо ваш проект і запропонуємо оптимальне рішення. Отримайте безкоштовний аудит поточної мікророзмітки: знайдемо помилки та покажемо, як покращити.







