Одно предложение во всех источниках
  1. Данные

    Артикул, цена и остаток

  2. Разметка

    Product связан с Offer

  3. Сверка

    Карточка, JSON-LD и фид

  4. Обновление

    Проверка обмена и кеша

Product описывает товар, а Offer — условия его продажи: цену, валюту, наличие и другие параметры предложения. Для интернет-магазина разметку нужно собирать из тех же данных, что выводятся покупателю. Если в карточке цена уже изменилась, а JSON-LD остался прежним, проблема находится в обновлении данных, а не в количестве заполненных свойств.

Ниже — пример для условного товара, схема подключения к CMS и план проверки. Он подойдёт для задания разработчику и приёмки результата. Перед запуском выберите конкретное поисковое представление: требования к товарному сниппету и торговому предложению различаются. Google объясняет выбор в обзоре разметки Product.

Где заканчивается Product и начинается Offer

Название, изображение, описание, бренд и артикул относятся к самому товару. Цена и доступность зависят от продавца и условий продажи. Одна модель может продаваться в нескольких магазинах, поэтому товар и предложение нельзя считать взаимозаменяемыми сущностями. В собственном магазине начните с текущего предложения на конкретной карточке.

Составьте таблицу полей до написания кода. Для каждого свойства укажите источник: справочник номенклатуры, прайс, остатки, описание или настройки доставки. Затем определите владельца данных. Это особенно важно, когда цену меняет менеджер в 1С, наличие приходит со склада, а редактор вручную поддерживает JSON в CMS.

Откуда брать данные для товарной разметки
СвойствоИсточник в магазинеПроверка
name, skuКарточка номенклатурыСовпадают модель и артикул
imageОсновной снимок вариантаФайл доступен и показывает этот товар
price, priceCurrencyДействующее предложениеТа же цена доступна покупателю
availabilityПравило продажи и остаткиМожно ли оформить именно такой заказ
shippingDetailsУсловия доставкиУчтены направление и исключения

Обратите внимание на смысл наличия. Нулевой остаток на одном складе не всегда означает отсутствие возможности купить товар. Бывает предзаказ, поставка под заказ или остаток у другого подразделения. Правило должен подтвердить бизнес; SEO-специалист не должен угадывать его по числу в выгрузке.

Пример JSON-LD для товара с одним предложением

Это учебный фрагмент для настольной лампы. Он показывает связь сущностей, а не копирует реальный магазин. На сайте JSON размещают внутри элемента script с типом application/ld+json. В статье код выведен как текст: сама статья не является карточкой продаваемой лампы.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://example.com/catalog/luma-42/#product",
  "name": "Настольная лампа Luma 42, зелёная",
  "image": "https://example.com/images/luma-42-green.webp",
  "description": "Настольная лампа с керамическим основанием и льняным абажуром.",
  "sku": "L42-GREEN",
  "brand": {"@type": "Brand", "name": "Luma"},
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/catalog/luma-42/",
    "price": "6490.00",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

Не подставляйте вымышленные GTIN, отзывы или среднюю оценку ради заполненного валидатора. Если у товара нет подтверждённых данных, сначала решите вопрос с их источником. Отсутствующий необязательный параметр и неверное утверждение о товаре — разные проблемы; вторую нельзя исправить хорошей формой JSON.

Для цены используйте числовое значение без знака рубля и разделителей тысяч, валюту передавайте отдельно. Если срок цены действительно установлен, можно добавить соответствующее поле. Не продлевайте вымышленную дату каждый день, чтобы предупреждение исчезло из отчёта. Условия в данных должны следовать реальному предложению.

Доставка, возврат и несколько вариантов товара

Условия доставки описывают через свойства предложения, а правила возврата — через подходящие типы и свойства Schema.org. Структуру и требования для торговых представлений сверяйте с документацией merchant listings. Здесь важно не перечислить максимальное число полей, а передать доступные покупателю условия.

Например, магазин доставляет лампу бесплатно только в пределах одного города. Нельзя записать нулевую стоимость доставки для всей страны. Если тариф зависит от адреса, веса или перевозчика, сначала выясните, какие условия можно выразить точно и как они показаны на странице. Сложные исключения лучше разобрать до внедрения общего шаблона.

Размеры и цвета требуют отдельной проверки. У каждой продаваемой комбинации могут быть собственные артикул, цена и остаток. Не привязывайте фотографию зелёной лампы к цене самой дешёвой белой версии, если посетитель попадает на другой выбор. Для структуры каталога используйте разбор вариантов товара.

Как связать разметку с CMS и фидом

Надёжная схема — общий источник для видимой карточки, структурированных данных и товарного фида. Разработчику нужно передать не просьбу «добавить Schema», а набор состояний. Минимальная выборка: обычная цена, скидка, предзаказ, закончившийся товар и вариант с другой стоимостью. По каждому состоянию заранее опишите ожидаемый результат.

Проверьте кеширование. После изменения цены обновиться должны HTML и JSON-LD, а не только число, которое браузер дорисовывает из API. Зафиксируйте допустимую задержку обмена внутри проекта и способ её обнаружить. Когда у каждой системы собственный расписанный импорт, одинаковые значения в момент ручной проверки ещё не доказывают согласованность в течение дня.

Особое внимание уделите персональным ценам. Участник программы лояльности может видеть сумму, недоступную обычному посетителю. Разметка публичного предложения должна соответствовать условиям его получения. Проверьте страницу без входа, в другом регионе доставки и после очистки cookies, чтобы случайно не опубликовать цену только для одного сегмента.

Если проблема заметна и в рекламе, начните с сверки карточки и YML-фида. Исправление общего источника выгоднее, чем ручное редактирование трёх копий одного значения. В журнале обмена сохраняйте идентификатор товара и время изменения: они помогают быстро найти потерянное обновление.

Проверка до и после публикации

Сначала проверьте синтаксис JSON, затем соответствие словарю Product и Offer. После этого используйте Rich Results Test для конкретного сценария Google. Успешная проверка означает соответствие проверяемым требованиям; внешний вид результата в выдаче выбирает поисковая система.

На тестовом товаре измените цену, переведите его в предзаказ и верните прежнее состояние. На каждом шаге сравните видимую карточку, исходный ответ сервера, итоговый HTML и фид. Такая проверка полезнее одного снимка валидатора сразу после установки модуля. Она показывает, работает ли интеграция при обычных действиях менеджера.

После выпуска сохраните несколько контрольных URL и список ожидаемых свойств. При обновлении шаблона или SEO-модуля повторяйте тест: второй модуль иногда добавляет ещё один Product с устаревшей ценой. В итоге на странице оказываются два противоречащих предложения, хотя каждое по отдельности синтаксически корректно.

Отчёт для владельца магазина должен быть коротким: какие шаблоны исправлены, какие состояния проверены, откуда теперь берутся данные и кто отвечает за ошибки обмена. Поисковые показы товарных представлений отслеживайте отдельно от технической приёмки. Так команда понимает и качество внедрения, и его дальнейший эффект.

Термины по теме

Документация