Два типа для двух ситуаций
Тип Offer описывает одно конкретное предложение: одну цену у одного продавца. Тип AggregateOffer объединяет несколько предложений на один и тот же товар и показывает диапазон цен. Выбор определяется тем, что реально происходит на странице.
| Ситуация на странице | Какой тип использовать |
|---|---|
| Карточка товара с одной ценой | Offer |
| Один товар, несколько вариантов исполнения с разной ценой | AggregateOffer с вложенными Offer |
| Один товар у нескольких продавцов (агрегатор) | AggregateOffer с вложенными Offer |
| Страница категории со списком товаров | Не Offer: используйте ItemList |
Как устроен AggregateOffer
Пример разметки
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Диван «Альфа»",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "RUB",
"lowPrice": "45900",
"highPrice": "62900",
"offerCount": "3"
}
}
</script>
Дополнительные свойства предложения
priceValidUntil— дата, до которой действует цена; полезно для акций.itemCondition— состояние:NewCondition,UsedCondition,RefurbishedCondition.seller— продавец, если он отличается от владельца сайта.url— адрес страницы, на которой предложение доступно.
Правила для каталога
Диапазон в разметке должен отражать реальные цены на странице: lowPrice — минимальная, highPrice — максимальная. Если цены на странице не видны пользователю, размечать их нельзя. Для страниц со списком товаров подходит отдельный тип — ItemList для подборок, а базовые правила описания товара собраны в статье про разметку Product.
Типичные ошибки в предложениях
| Ошибка | Последствие |
|---|---|
lowPrice больше highPrice | Разметка признаётся некорректной |
| Диапазон цен не совпадает с ценами на странице | Расхождение данных, потеря доверия |
priceValidUntil указана в прошлом | Цена считается неактуальной |
| Цена записана вместе с символом валюты | Значение не распознаётся как число |
Условия доставки и возврата
К предложению можно добавить сведения о доставке и политике возврата — для этого в Schema.org есть отдельные свойства, например shippingDetails и hasMerchantReturnPolicy. Их стоит указывать только в том случае, если условия действительно опубликованы на сайте и вы готовы их поддерживать в актуальном виде. Выдуманные или устаревшие условия хуже, чем их отсутствие.
Как проверить разметку предложений
- Откройте страницу товара и найдите блок разметки в исходном коде.
- Сравните цену, валюту и наличие с тем, что видит покупатель.
- Прогоните страницу через валидатор и убедитесь, что в отчёте нет ошибок и предупреждений по предложению.
- Через несколько дней после публикации загляните в отчёты панели вебмастера по структурированным данным.
Частые вопросы
Чем AggregateOffer отличается от Offer?
Offer описывает одно предложение с одной ценой, а AggregateOffer объединяет несколько предложений на один товар и показывает диапазон цен и их количество.
Можно ли использовать AggregateOffer на странице категории?
Нет: он описывает несколько предложений на один товар. Для списка разных товаров используют ItemList.
Обязательно ли указывать offerCount?
Не обязательно, но при указании диапазона это число помогает системе понять, из скольких предложений он складывается.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.