Автоматическое обновление цен и остатков на сайте через API
Как сделать, чтобы цены и остатки на сайте обновлялись сами — из прайса поставщика, 1С или МойСклад. Откуда брать данные, как сопоставить товары, как часто обновлять и какие страховки поставить, чтобы один кривой файл не обнулил весь каталог.

Самая частая просьба от владельцев магазинов, которые выросли из ручного режима: «хочу, чтобы цены и наличие на сайте были как у поставщика (или как в 1С), а не как менеджер успел поправить». Задача звучит просто, но в ней есть пара мест, где легко потерять деньги. Разберу на типовом сценарии — магазин, у которого товары от одного-двух поставщиков плюс свой склад.
Откуда приходят данные
«Через API» — это общее название. На практике источник бывает четырёх видов, и от него зависит вся схема:
- Прайс-файл поставщика — Excel или CSV, который приходит на почту или лежит по ссылке. Самый частый и самый капризный вариант: поставщик может поменять колонки без предупреждения.
- Фид поставщика — XML или YML по постоянной ссылке, обновляется у поставщика сам. Удобнее файла: структура стабильная, забирать можно по расписанию.
- API поставщика — сайт сам спрашивает цены и остатки по своим артикулам. Самый точный вариант, но есть не у всех.
- Своя учётная программа — 1С выгружает данные в стандартном формате обмена с сайтом (CommerceML), МойСклад отдаёт их через свой API. Если учёт ведётся там, это главный источник правды.
Если источников несколько — например, свой склад в 1С и два поставщика с файлами — нужно заранее договориться о правиле: что показываем, если товар есть и у нас, и у поставщика, и какая цена главная.
Как сопоставить товары
Обмен работает, только если программа понимает, что строка «Перфоратор ABC-2000, арт. 12345» в прайсе — это вот этот товар на сайте. Сопоставляют по одному из полей:
- Артикул поставщика — хранится в карточке товара на сайте отдельным полем;
- Штрихкод — самый надёжный, если поставщик его передаёт;
- Код из 1С или МойСклад — если источник — ваш учёт.
Сопоставлять по названию нельзя: «Перфоратор ABC 2000» и «Перфоратор ABC-2000» для программы разные товары. Первый запуск почти всегда показывает пару сотен строк без пары — их нужно один раз разобрать руками.
Что обновлять, а что не трогать
Автообновление должно менять узкий набор полей — обычно цену, старую цену и остаток. Описания, фото, SEO-тексты, адреса страниц — ваши, и обмен их не трогает. Иначе после каждого запуска пропадают тексты, которые вы писали под продвижение.
Новые товары из прайса лучше создавать черновиками: появилась позиция у поставщика — она ждёт, пока кто-то добавит фото и описание, а не вылезает на сайт голой строкой.
Цена: наценка по правилам
В прайсе поставщика обычно закупочная или рекомендованная цена. Розничную сайт считает сам по правилам:
- наценка в процентах, своя для каждой категории или бренда;
- округление до красивой цифры — до 10 или до 90 рублей;
- минимальная цена, ниже которой товар не продаётся, даже если поставщик ошибся в прайсе.
Как часто обновлять
- Остатки — чем чаще, тем лучше: раз в 15–60 минут, если источник это позволяет. Устаревший остаток — это заказ на товар, которого нет.
- Цены — обычно раз в сутки, ночью. Цена, которая меняется по нескольку раз за день, раздражает покупателей, положивших товар в корзину.
Запускает обмен планировщик на сервере (cron). Большой каталог обрабатывают порциями, чтобы обновление не нагружало сайт в рабочее время.
Страховки, без которых нельзя
Это то, на чём теряют деньги чаще всего:
- Пустой или обрезанный файл. Поставщик выложил прайс на 10 строк вместо 10 000 — наивный обмен обнулит остаток у всего каталога, и сайт покажет «нет в наличии» на всём. Правило: если в новом файле товаров меньше, чем, например, 80% от прошлого, обмен останавливается и присылает уведомление.
- Скачок цены. Цена изменилась больше чем на 30–50% — товар не обновляется, а попадает в список на проверку. Ошибка с лишним нулём в прайсе так не доберётся до витрины.
- Товар пропал из прайса. Не удалять его с сайта, а ставить «нет в наличии» или скрывать. Удалённая страница — это потерянные позиции в поиске и ссылки, ведущие в никуда.
- Журнал. Каждый запуск пишет, сколько товаров обновлено, сколько не найдено, что пропущено и почему. Без журнала через месяц уже никто не знает, откуда на сайте такая цена.
- Уведомление о сбое. Обмен не запустился или упал — сообщение в Telegram или на почту в тот же час, а не через неделю по жалобам покупателей.
Сначала — на копии сайта
Первый запуск никогда не делают на рабочем магазине. Обмен прогоняют на копии, смотрят журнал и выборочно сверяют 20–30 товаров руками: цена с наценкой посчиталась правильно, остатки по вариантам разошлись правильно, тексты не пострадали. Только после этого включают расписание на живом сайте.
Что получится в итоге
- цены и наличие на сайте совпадают с источником с задержкой в минуты, а не дни;
- менеджер не правит цены руками, а разбирает короткий список товаров «на проверку»;
- ошибка в прайсе поставщика не попадает на витрину.
Если учёт у вас в 1С, начните со статьи про интеграцию сайта с 1С. Если вы продаёте ещё и на маркетплейсах — посмотрите, как связать сайт с Ozon и Wildberries, чтобы остаток был общим. Настройку обмена под ваш прайс или учётную программу я делаю в рамках услуги интеграции; в 100300 CMS обмен с МойСклад уже есть готовым модулем.
Вопросы и ответы
Чем фид поставщика лучше прайса в Excel?
Как часто нужно обновлять остатки?
Что будет, если поставщик пришлёт пустой файл?
Удалять ли с сайта товары, которых больше нет в прайсе?
Можно ли обновлять цены, не трогая описания товаров?
Читайте также
Интеграция сайта с Ozon и Wildberries: цены, остатки, заказы
Как связать свой интернет-магазин с маркетплейсами, чтобы не вести каталог дважды: что именно синхронизировать, где источник правды, чем отличаются FBO и FBS и на чём обычно ломается обмен. Отдельно — короткий раздел про службы доставки, с которыми маркетплейсы часто путают.
Интеграция сайта с 1С: сроки, этапы и подводные камни
Как на практике устроен обмен сайта с 1С: протокол CommerceML, что передаётся в каждую сторону — каталог, цены, остатки, заказы, — сколько это занимает, что подготовить в 1С до старта и на чём обмен чаще всего ломается.
Зачем бизнесу Telegram-бот: задачи, интеграции, ошибки
Какие задачи Telegram-бот действительно снимает с людей, а где он бесполезен или вреден. Плюс из чего складывается стоимость и какие ошибки чаще всего делают при запуске.
Беру новые проекты
Обсудим вашу задачу?
Расскажите о проекте — перезвоню в течение рабочего дня, задам пару вопросов и назову цену и срок.
Отвечаю в течение рабочего дня