Статті ·
Чому Prom не приймає фід: сім причин і як їх знайти за хвилину
Розбір причин, через які Prom, Rozetka й Хорошоп відхиляють товари під час імпорту YML-фіду, і як знайти конкретні offer id без розробника.
Найгірше в імпорті фіду — не сама помилка, а те, як про неї повідомляють. Майданчик пише «завантажено 1 842 з 2 100 товарів» і не каже, які саме 258 не пройшли. Далі починається листування з розробником магазину, який теж не знає, бо у нього фід «віддається нормально».
Причин, через які товар відвалюється, насправді небагато. Ось вони в порядку від найчастішої, з поясненням, чому саме так.
1. Ціна нульова або відсутня
Класика для товарів «під замовлення» і «ціна за запитом». У магазині це може виглядати нормально, але у фіді <price>0</price> означає для майданчика некоректну позицію, і він її просто не бере.
Рішення не технічне, а комерційне: або виставити ціну, або прибрати такі товари з вивантаження. Тримати їх у фіді нема сенсу — вони все одно не імпортуються.
2. Категорія, якої немає в списку категорій
У товара стоїть categoryId, якого немає в блоці <categories>. Зазвичай так стається після чистки каталогу: категорію видалили, а товари на неї ще посилаються.
<categories>
<category id="1">Інструменти</category>
</categories>
<offers>
<offer id="103">
<categoryId>99</categoryId> <!-- категорії 99 не існує -->Такі товари не потрапляють у каталог, навіть якщо решта полів заповнена бездоганно.
3. Валюта поза блоком currencies
У товара <currencyId>USD</currencyId>, а в <currencies> оголошена лише гривня. Трапляється, коли частину каталогу завантажили від постачальника, що працює в доларах.
4. Символ & без екранування
Ця помилка ламає не окремий товар, а весь файл: XML перестає парситися, і майданчик відхиляє фід цілком. У назві «Ключі & біти» амперсанд має бути записаний як &.
5. Немає зображення
Prom товар без картинки прийме, але покаже його гірше. Google Merchant Center відхилить. Якщо ви вивантажуєте фід ще й у Merchant, це критично. Для Rozetka картинка за довідкою обов’язкова: від однієї до п’ятнадцяти, лише по https і без кирилиці та пробілів в адресі.
6. HTML-теги в назві
Назва Лійка <b>садова</b> у картці показується як текст із символами тегів. Виглядає це так, ніби магазин зламався.
Окремо підступний випадок: деякі парсери на такій назві повертають порожній рядок або службовий текст, і товар імпортується з назвою на кшталт [object Object].
7. Дублі id і дублі товарів
Однакові id у двох товарів — імпорт залишить лише один. Складніший випадок: id різні, але це один і той самий товар, просто від двох постачальників. Такі картки ділять між собою покази, відгуки й посилання, і жодна не набирає достатньо сигналів, щоб вийти в топ.
Як знайти конкретні товари
Усе вище перевіряється автоматично. Валідатор YML-фіду приймає посилання на фід або сам XML і повертає список offer id з поясненням, що саме не так із кожним.
Обов’язкові поля відрізняються по майданчиках, тому в інструменті окремі пресети для Prom, Rozetka, Хорошопу й Merchant Center. Артикул для Rozetka якраз необов’язковий — а от vendor, description, хоча б один заповнений param і stock_quantity (або quantity_in_stock) за довідкою Rozetka обов’язкові в кожній позиції. Без тега залишків позиція отримує статус «немає в наявності»: атрибута available для цього замало. Тому те саме вивантаження може пройти на одному майданчику й відвалитись на іншому.
Наш прогін двадцяти одного публічного фіду це підтверджує: базова структура — id, ціна, валюта, категорія — була ціла у шістнадцяти фідах, а без порушень обов’язкових елементів Rozetka виявився лише один. Найчастіше бракувало характеристик (15 фідів із 21), бренду (12) і залишків — залишки випадали в шести фідах, але це 43 % усіх товарів вибірки.
Що передати розробнику
- Вивантажте CSV зі списком проблемних offer id.
- Додайте назву перевірки — вона вже є в таблиці.
- Цього достатньо: розробнику не треба пояснювати, що таке YML, він побачить конкретні позиції й поле.
Що перевірити перед кожним вивантаженням
- усі ціни більші за нуль;
- кожен
categoryIdмає відповідник у<categories>; - валюти товарів оголошені в
<currencies>; - у текстах немає голого
&; - назви без HTML;
- id унікальні;
- для Rozetka: у кожній позиції є
vendor,descriptionі хоча б один заповненийparam; - для Rozetka: є
stock_quantityабоquantity_in_stockцілим числом — інакше позиція йде як «немає в наявності»; - для Rozetka: від однієї до п’ятнадцяти картинок, лише
https, без кирилиці й пробілів в адресі; - для Rozetka: назва до 255 символів і не повторює дослівно іншу,
currencyId— UAH, USD або EUR, файл у UTF-8.
Це п’ять хвилин перед вивантаженням проти двох днів листування після нього.