Зачем настраивать Product / Offer Schema
Product Schema — это структурированная разметка Schema.org для товаров и услуг, которая передаёт поисковой системе информацию о цене, наличии, рейтинге, бренде и характеристиках продукта. Главный эффект — расширенные сниппеты (Rich Snippets) в поисковой выдаче: звёздочки рейтинга, цена, статус «В наличии» прямо под заголовком страницы.
Расширенный сниппет занимает больше места в выдаче и привлекает больше внимания. По данным различных исследований, Rich Snippets увеличивают CTR на 20-40% по сравнению с обычными результатами. Для интернет-магазина это означает ощутимый рост трафика без изменения позиций — просто за счёт того, что сниппет стал заметнее и информативнее.
Яндекс активно использует Product Schema для формирования товарных сниппетов и карточек в Яндекс Маркете. Google отображает цены и рейтинги в обычной выдаче, а также использует данные для Google Shopping (хотя этот сервис ограничен в России с 2022 года). Даже без Google Shopping, товарная разметка важна — она влияет на отображение сниппетов в обычном поиске.
Для каких страниц нужна Product Schema
Product Schema добавляется на страницы конкретных товаров — не на каталоги и не на категории. Каждая карточка товара получает свою разметку с индивидуальными данными: своя цена, свой рейтинг, свой статус наличия.
- Интернет-магазины — обязательно для каждой карточки товара.
- Сервисные компании — для страниц конкретных услуг с фиксированной ценой (не «от 10 000 рублей», а конкретная услуга с ценой).
- Агрегаторы — для каждого листинга с ценой и характеристиками.
- SaaS-продукты — для страниц тарифов и планов.
Пошаговая инструкция
Шаг 1. Подготовьте данные для разметки
Для каждого товара соберите:
- Название товара (name) — точное, как на странице.
- Описание (description) — 50-200 символов, содержательное.
- Изображение (image) — URL основного фото товара.
- Бренд (brand) — производитель.
- SKU или артикул (sku) — уникальный идентификатор.
- GTIN/EAN (gtin13) — штрихкод, если есть. Для Google это сильный сигнал доверия к товару.
- Цена (price) — конкретная цена в числовом формате.
- Валюта (priceCurrency) — RUB для российского рынка.
- Наличие (availability) — InStock, OutOfStock, PreOrder.
- Рейтинг (aggregateRating) — средняя оценка и количество отзывов, если есть.
Шаг 2. Создайте JSON-LD разметку для товара
JSON-LD — рекомендуемый формат. Размещается в <head> или в <body> страницы. Пример для товара интернет-магазина:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Аккумуляторная дрель-шуруповёрт Bosch GSR 18V-50",
"description": "Профессиональный шуруповёрт с бесщёточным двигателем. Крутящий момент 50 Нм, 2 аккумулятора 2.0 Ач, кейс.",
"image": "https://example.ru/images/bosch-gsr-18v-50.jpg",
"brand": {
"@type": "Brand",
"name": "Bosch"
},
"sku": "06019H5000",
"gtin13": "3165140953160",
"offers": {
"@type": "Offer",
"url": "https://example.ru/bosch-gsr-18v-50/",
"priceCurrency": "RUB",
"price": "12990",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Название магазина"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "23"
}
}
</script>
Шаг 3. Настройте Offer — блок с ценой и наличием
Offer — ключевой компонент Product Schema, отвечающий за отображение цены в сниппете. Важные нюансы:
Цена. Указывайте в числовом формате без пробелов и символа валюты: "price": "12990", а не "price": "12 990 ₽". Валюта указывается отдельным полем priceCurrency.
Срок действия цены. Поле priceValidUntil — дата, до которой цена актуальна. Google рекомендует указывать, чтобы подтвердить актуальность данных. Ставьте реалистичную дату — например, конец текущего года или дату ближайшего пересмотра цен.
Наличие. Возможные значения:
https://schema.org/InStock— товар в наличии.https://schema.org/OutOfStock— нет в наличии.https://schema.org/PreOrder— предзаказ.https://schema.org/BackOrder— под заказ (доставка в течение определённого времени).https://schema.org/Discontinued— снят с производства.
Несколько предложений. Если один товар продаётся в нескольких вариантах (размер, цвет) с разными ценами, используйте массив offers:
"offers": [
{
"@type": "Offer",
"name": "Размер S",
"price": "2990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "Размер M",
"price": "2990",
"priceCurrency": "RUB",
"availability": "https://schema.org/OutOfStock"
}
]
Или используйте AggregateOffer, если нужно показать диапазон цен:
"offers": {
"@type": "AggregateOffer",
"lowPrice": "2990",
"highPrice": "4990",
"priceCurrency": "RUB",
"offerCount": "5"
}
Шаг 4. Добавьте рейтинг и отзывы
AggregateRating и Review — необязательные, но крайне ценные блоки. Звёздочки в сниппете — мощный визуальный якорь, увеличивающий CTR.
Правила:
- Рейтинг должен быть основан на реальных отзывах с вашего сайта. Нельзя указывать рейтинг, которого нет на странице.
- Минимум для отображения звёздочек — обычно от 3-5 отзывов. С одним отзывом Google может не показать сниппет.
- Данные в Schema должны совпадать с тем, что видит пользователь на странице. Если в разметке рейтинг 4.8, а на странице нет отзывов — это нарушение.
Пример блока с отзывами:
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Иван Петров"
},
"datePublished": "2026-02-10",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"reviewBody": "Отличный шуруповёрт, использую на стройке каждый день. Батарея держит весь рабочий день."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "23",
"bestRating": "5",
"worstRating": "1"
}
Шаг 5. Реализуйте автоматическую генерацию для CMS
Для интернет-магазина с сотнями товаров ручное добавление разметки невозможно. Нужна автоматическая генерация на основе данных из CMS.
WooCommerce (WordPress). Плагины Yoast SEO и Rank Math автоматически генерируют Product Schema из данных WooCommerce: цена, наличие, изображение, категория. Проверьте, что плагин корректно подтягивает все поля. Часто по умолчанию не заполняются brand, gtin, sku — их нужно добавить через дополнительные поля или кастомный код.
1С-Битрикс. Модуль SEO включает базовую товарную разметку. Для расширенной — потребуется доработка шаблона компонента каталога.
Кастомная CMS. Добавьте генерацию JSON-LD в шаблон карточки товара. Подтягивайте данные из базы: название, цену, наличие, рейтинг. Шаблон JSON-LD заполняется динамически для каждого товара.
Шаг 6. Валидируйте разметку
После реализации проверьте разметку на нескольких страницах разного типа (товар в наличии, товар без отзывов, товар не в наличии):
- Google Rich Results Test (
search.google.com/test/rich-results) — покажет, как Google интерпретирует разметку и будет ли отображать Rich Snippet. - Schema Markup Validator (
validator.schema.org) — строгая проверка по спецификации. - Яндекс Вебмастер → Инструменты → Валидатор микроразметки.
Исправьте все ошибки (errors). Предупреждения (warnings) — по возможности тоже: чем больше рекомендуемых полей заполнено, тем выше вероятность получить расширенный сниппет.
Шаг 7. Поддерживайте актуальность данных
Товарная разметка требует постоянной актуализации. Цена изменилась, но в Schema осталась старая — это нарушение. Товар закончился, а в разметке InStock — нарушение. Google и Яндекс проверяют соответствие данных в Schema и на странице.
Для автоматически генерируемой разметки (из CMS) — убедитесь, что данные обновляются при каждом изменении товара. Для ручной разметки — создайте процесс регулярной проверки: раз в месяц пройдите по товарам и убедитесь, что цены и наличие соответствуют реальности.
Типичные ошибки
- Product Schema на страницах категорий. Разметка Product предназначена для конкретного товара, а не для списка товаров. На странице категории используйте ItemList или CollectionPage, но не Product.
- Несовпадение цены в Schema и на странице. В разметке указана цена 5990, а на странице — 6990 (цену обновили, разметку забыли). Поисковая система обнаружит расхождение и может перестать показывать сниппет или наложить санкции за структурированный спам.
- Самопоставленный рейтинг. На сайте нет системы отзывов, но в разметке указан AggregateRating 4.9 на основе «0 отзывов». Это манипуляция, Google за это наказывает. Рейтинг — только на основе реальных отзывов на странице.
- Цена в неправильном формате.
"price": "от 10 000"— не число."price": "10 000"— пробел внутри числа. Правильно:"price": "10000". Если цена диапазонная — используйте AggregateOffer с lowPrice и highPrice. - Отсутствие обязательных полей. Product без name или image. Offer без price или availability. Разметка технически валидна, но не получит Rich Snippet, потому что не хватает данных для отображения.
- Дублирование разметки от плагина и вручную. SEO-плагин генерирует Product Schema, и разработчик добавил свою. Два блока Product на одной странице — конфликт. Проверьте исходный код страницы и оставьте один источник разметки.
- Разметка для нетоварных страниц. Product Schema на странице «О компании» или на главной — нарушение. Разметка должна соответствовать типу контента на странице.
Что проверить в итоге
- Product Schema добавлена на все страницы карточек товаров в формате JSON-LD.
- Заполнены обязательные поля: name, image, offers (с price, priceCurrency, availability).
- Заполнены рекомендуемые поля: description, brand, sku, gtin13, review, aggregateRating.
- Цена указана в числовом формате без пробелов и символа валюты.
- Статус наличия (availability) соответствует реальному наличию товара.
- Указан priceValidUntil с реалистичной датой.
- Рейтинг основан на реальных отзывах, видимых на странице.
- Данные в Schema совпадают с данными на странице (цена, название, рейтинг).
- Для магазина на CMS — разметка генерируется автоматически из данных товара.
- Разметка прошла валидацию в Google Rich Results Test, Schema Markup Validator и Яндекс Вебмастере.
- Нет дублирования разметки от плагина и ручного кода.
- Выстроен процесс актуализации — при изменении цены или наличия Schema обновляется автоматически.