Подгрузка товарного фида
Для подгрузки товаров может использоватся как файл в формате YML, так и в формате Google Merchant Feed.
Файл должен быть доступен к скачиванию по гиперссылке.
Пример рекомендуемого YML
Чем больше полей заполнено — тем лучше
<yml_catalog date="2020-08-04 02:00">
<shop>
<name>Магазин</name>
<company>Магазин</company>
<url>https://site.ru/</url>
<brands>
<brand url="http://site.ru/brand/1" logo="http://site.ru/logo/1">Lego</brand>
<brand url="http://site.ru/brand/2" logo="http://site.ru/logo/2">Лукойл</brand>
<brand url="http://site.ru/brand/3">BMW</brand>
</brands>
<categories>
<category url="http://site.ru/cat/1" id="1" imageUrl="http://site.ru/img/1">Спорт и отдых</category>
<category url="http://site.ru/cat/2" id="2" parentId="1" imageUrl="http://site.ru/img/2">Тренажеры и фитнес</category>
<category url="http://site.ru/cat/3" id="3" parentId="2" imageUrl="http://site.ru/img/3">Тренажеры</category>
<category url="http://site.ru/cat/4" id="4" parentId="3">Эллиптические тренажеры</category>
</categories>
<offers>
<offer type="vendor.model" available="true" id="1" group_id="1">
<url>https://site.ru/product/1</url>
<price>1000.00</price>
<oldprice>1399.00</oldprice>
<price type="opt">800.00</price>
<price type="opt2">600.00</price>
<currencyId>RUR</currencyId>
<name>Тренажер</name>
<categoryId>4</categoryId>
<picture>https://site.ru/images/1.png</picture>
<typePrefix>Эллиптический тренажер</typePrefix>
<vendor>Matrix</vendor>
<model>A3X 2012</model>
<description>Описание</description>
<vendorCode>артикул-товара</vendorCode>
<snippet>подпись-к-товару</snippet>
<label>ярлык-на-товар-акция-на-товар</label>
<count>2</count>
<pickup>true</pickup>
<delivery>true</delivery>
<isPreorder>true</isPreorder>
<sales_notes>Сборка - бесплатно.</sales_notes>
<manufacturer_warranty>true</manufacturer_warranty>
<param name="Хит">Да</param>
<param name="Новинка">Нет</param>
<param name="popularity">3</param>
<param name="Вес в упаковке" unit="кг">221</param>
<param name="Длина" unit="м">1.8</param>
<param name="Ширина" unit="м">0.7</param>
<param name="Высота" unit="м">1.7</param>
<region id="msk">
<available>true</available>
<price>9999</price>
<oldprice>1399.00</oldprice>
<count>2</count>
<pickup>true</pickup>
<delivery>true</delivery>
<isPreorder>true</isPreorder>
</region>
<region id="spb">
<available>false</available>
<price>11200</price>
</region>
</offer>
</offers>
</shop>
</yml_catalog>
Обязательные теги и поддержка множественных значений
Чтобы товар корректно индексировался, участвовал в поиске и отображался в виджете, фид должен соответствовать минимальным требованиям структуры и типов данных.
Ниже приведён понятный ориентир: что обязательно, что критично для качества, и какие теги можно передавать несколько раз.
С официальными рекомендациями от Yandex вы можете ознакомиться в официальной документации.
1. Минимальный обязательный набор для товара (<offer>)
Для корректной загрузки и индексации каждый
-
@id— идентификатор товара. Положительное целое число (id="0" запрещён); -
@available— наличие товара. Допустимые значения: true / false; -
<url>— валидный URL карточки товара; -
<price>— числовое значение цены; -
<currencyId>— код валюты (RUR, RUB, USD, EUR и др.); -
<categoryId>— существующая категория.
Название товара:
-
либо
<name>; -
либо связка
typePrefix+model+vendor.
Если <name> отсутствует и невозможно собрать название из трёх тегов — товар не будет корректно проиндексирован.
2. Важные поля для качества поиска
Эти теги не обязательны технически, но сильно влияют на релевантность и поведение поиска:
-
<description>— чем подробнее описание, тем точнее поиск; -
<picture>— ссылка на изображение товара; -
<vendorCode>или<offerCode>— поиск по артикулу; -
<vendor>— бренд товара для поиска и фильтрации; -
<param>— участвуют в фильтрации и ранжировании; -
<param name="popularity">— может использоваться в формуле ранжирования.
Чем больше корректно переданных данных — тем стабильнее и качественнее работает поиск.
3. Поддержка множественных тегов
Некоторые теги можно передавать несколько раз внутри одного товара.
Разрешено передавать несколько:
-
<categoryId>— товар может принадлежать нескольким категориям; -
<picture>— галерея изображений (приоритет — первая картинка); -
<param>— характеристики (без ограничений по количеству); -
<price type="...">— мультицены (opt, opt2 и т.д.); -
<region>— несколько регионов для одного товара.
Мультирегиональность
Если используется <region>, то данные о наличии, цене и остатках должны передаваться внутри соответствующего блока <region>.
Если <region> не используется — эти параметры указываются в <offer>.
4. Теги, которые должны быть единственными
Ожидается одно значение на товар:
-
<url>- ссылка на страницу товара; -
<name>-название товара; -
<currencyId>- валюта; -
<vendor>- бренд; -
<model>- наименование модели; -
<typePrefix>- тег для альтернативного формирования названия; -
<description>- описание; -
<vendorCode>/<offerCode>- достаточного указать одно из значений; -
<oldprice>- перечерктнутая цена; -
<label>- маркетинговые бейджи на карточке товара, например "Новинки", "Хит продаж".
Для передачи нескольких <label> используйте дополнительный CSV-фид в личном кабинете.
5. Важные ограничения
-
Все
idдолжны начинаться с 1. -
Использование
id="0" запрещено. -
Повторяющиеся
offer/@idнедопустимы. -
categoryIdдолжен ссылаться на существующую категорию.
Типы данных должны соответствовать формату (цена — число, available — boolean и т.д.).
6. Что считается критичной ошибкой
Критичными считаются:
-
отсутствие обязательных тегов;
-
некорректная структура XML;
-
дубли
offer/@id; -
нередача неэранированных специальных символов, например
&. Пример корректно передачи&. -
ссылка на несуществующую категорию;
-
невозможность определить название товара;
В таких случаях товар может быть исключён из индексации.
Описание дополнительных тегов
Данные теги доступно определять как в теле тега offer для глобального поиска и в теле тега region:
-
count- может использоваться для передачи остатков товара; -
pickup- возможность самовывоза; -
delivery- возможность доставки; -
isPreorder- возможность предзаказа.
Если используете region нужно использовать count внутри блока region.
Если без использования region нужно использовать count внутри блока offer.