Интернет-магазин мебели в Москве и Питере. В каталоге около 44 000 товаров: кресла, стулья, диваны. Заказчик хотел, чтобы этот каталог продавался еще и на Авито.
Модуль выгрузки на Авито у магазина уже стоял. Работал он плохо. В кабинете автозагрузки висело 1 845 опубликованных объявлений, и рядом — 3 320 с ошибками. То есть из всего каталога Авито видел совсем небольшую часть, а остальное магазин просто не продавал на площадке.

Я взялся разобраться. Сначала прошел по всему проекту: на чем сделан магазин, как устроен каталог, какие модули за что отвечают и где формируется выгрузка. Магазин на PHP и Yii2, так что новый код должен был лечь в эту же систему и работать рядом с тем, что уже есть.
Авито принимает товары через фид — файл с описанием объявлений в строго заданной структуре. У каждой категории свой набор обязательных полей: у кресла одни, у дивана другие. Если поля не сходятся со структурой, объявление уходит в ошибку и на площадку не попадает.
Старый модуль собирал фид по правилам, которые уже устарели. С конца 2025 года Авито переписал требования: поменял обязательные поля и стал требовать фид строго под новую структуру. Чинить старый код было дороже, чем написать модуль заново — так, чтобы он строил валидный фид под актуальные правила и встраивался в текущую систему магазина без ее переделки.
Я написал основу модуля и начал выгружать товары. На небольшом объеме все шло как надо: число опубликованных выросло с 1 845 до 7 304, а ошибок осталось 801 вместо прежних трех тысяч.

Дальше я отправил в выгрузку весь каталог. В автозагрузке стало 44 885 объявлений, и сразу всплыло 17 838 ошибок.

Главная проблема была в обязательных полях. Авито менял их часто. Сегодня фид принимается, а назавтра половина каталога в ошибках — за ночь площадка переделала несколько категорий и их обязательные поля. Модуль нужно было сделать так, чтобы он подстраивался под текущие требования категории, а не под те, что были вчера.
Я доработал модуль под изменчивые поля и прогнал каталог еще раз. Опубликованных стало 38 431, ошибок — меньше 5 000, и с каждым днем их становится меньше.

Теперь модуль собирает фид каждый день сам. Заводят в магазине новый товар — назавтра он уже на Авито, руками ничего делать не нужно. Из 1 845 объявлений на старте магазин дошел до 38 000 с лишним, и каталог продается на площадке целиком.
Бэкенд — PHP, Yii2
Встроено в существующую систему магазина
Выгрузка — фид под актуальные требования Авито, по расписанию каждый день