Почему 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%.
Закажите консультацию — мы оценим ваш проект и предложим оптимальное решение. Получите бесплатный аудит текущей микроразметки: найдём ошибки и покажем, как улучшить.







