Каталог панели только выглядит вашим. На деле каждая услуга в витрине - это ваша строка с вашим названием и вашей ценой, привязанная к позиции в каталоге поставщика. А поставщик эту позицию может убрать в любой момент: выкинуть убыточную услугу, пересобрать линейку, почистить каталог после смены источника. Вас он не спросит и не предупредит. Разбираем, что после этого происходит с витриной, почему панель об этом молчит и как находить такие позиции раньше, чем на них наткнётся клиент.
Что на самом деле происходит при удалении
Синхронизация каталога устроена прямолинейно: панель запрашивает у поставщика список услуг и приводит свою копию его каталога в соответствие с ответом. Позиции, которой в ответе нет, в копии тоже не остаётся. Пока всё логично.
Неочевидное начинается дальше. Ваша услуга в витрине - это не та же самая запись. Это отдельная строка с собственным названием, описанием и ценой, которая лишь ссылается на позицию поставщика парой «поставщик + идентификатор услуги». Ссылается именно строкой, а не жёсткой связью на уровне базы, поэтому удаление одной записи не тянет за собой другую.
Результат: копия каталога поставщика уже без услуги, а ваша услуга осталась в витрине активной. Она видна клиентам, её можно положить в заказ, у неё живая цена и живые границы объёма. Единственное, чего за ней больше нет, - исполнителя.
Ровно то же случается и без удаления. Поставщик пересобрал каталог и выдал тем же самым услугам новые идентификаторы: снаружи «ничего не изменилось», а по факту все ваши привязки указывают в пустоту. С точки зрения панели это неотличимо от удаления.
Почему панель об этом молчит
Самое обидное здесь то, что панель знает об исчезновении позиции: она же сама и убрала её из копии каталога. Просто сказать об этом оказывается некому.
- Журнал изменений каталога до этого не доходит. Журнал есть, и он полезнее, чем кажется: в него пишется, что у поставщика поменялись ставка, минимум, максимум, название или категория. Удаления в этом списке нет - менять нечего, запись просто перестала существовать.
- Мониторинг смотрит в другую сторону. Проверка здоровья синхронизации следит за свежестью статусов заказов: не завис ли обмен, приходят ли обновления. Расхождение между вашим каталогом и каталогом поставщика в её поле зрения не попадает вообще.
- В витрине услуга выглядит здоровой. Ни пометки, ни значка. Отличить её от рабочей можно только сверкой двух списков, а руками такое не делает никто.
Случай из сентября 2026, чтобы это не выглядело теорией. Поставщик разом убрал восемнадцать позиций - обычная плановая чистка на его стороне. Битые услуги в тот же час появились в четырёх арендованных панелях: в двух по восемнадцать штук, ещё в двух по одной. Ни одна панель не подала сигнала. Нашлись они только сверкой каталогов, и уже после того, как всё произошло.
Во что это обходится
Дальше события идут по одному сценарию, и он неприятный:
- клиент оформляет заказ на услугу, которой у поставщика уже нет;
- панель списывает сумму с его баланса - заказ-то создан;
- заказ уходит поставщику, тот отвечает отказом вида «неверный идентификатор услуги»;
- заказ падает во внутренний статус ошибки, и деньги при этом на баланс не возвращаются;
- клиент видит у себя не «ошибку», а «ожидание» - и спокойно ждёт.
Последний пункт выглядит как сокрытие, а на деле это осознанный компромисс: сбой отправки обычно дожимают повторные попытки за несколько минут, и слово «Ошибка» в кабинете плодило бы тикеты про заказы, которые уйдут сами. Поэтому клиенту показывается pending, а настоящий статус виден оператору в админке - подробнее об этом в статье про то, почему заказ висит в Pending.
И вот тут удалённая услуга выпадает из общего правила. Повторные попытки умеют отличать временный сбой от постоянного: «неверная услуга», «услуга не привязана», «неверная ссылка» в повторе не нуждаются, повтор их не исправит. Такие заказы откладываются оператору - и это правильно. Проблема в том, что оператора никто не позвал. Заказ лежит, клиент видит «ожидание», деньги списаны, и так до первой жалобы.
Как найти битые позиции
Проверка сводится к одному действию: сверить свои услуги с копией каталога поставщика по паре «поставщик + идентификатор услуги» и забрать те, у которых пары не нашлось. Это одна выборка, её не надо изобретать каждый раз - достаточно один раз сохранить и запускать.
Несколько практических деталей:
- Копия каталога должна быть свежей. Синхронизация каталогов тяжелее синхронизации балансов, поэтому обычно она идёт реже: у нас каталоги обновляются раз в час, балансы раз в пятнадцать минут. Сверка по вчерашней копии покажет вчерашнюю картину.
- Проверять по событию, а не только по календарю. Поводы: поставщик объявил чистку или пересборку каталога, вы сменили у него API-ключ, вы добавили второго поставщика на те же услуги. Плановая сверка раз в неделю нужна, но именно событийная ловит основную массу.
- Не забыть про выключенных поставщиков. Услуга, привязанная к поставщику, которого вы отключили или у которого кончился доступ, ведёт себя так же: в витрине живая, исполнителя нет.
И отдельная страховка в обратную сторону, о которой обычно не думают, пока не обожгутся. Если поставщик ответил пустым каталогом - упал его API, протух ключ, сменился адрес, - наивная синхронизация честно вычистит всё до единой позиции и превратит в битый весь ваш каталог разом. Поэтому пустой ответ обязан считаться ошибкой синхронизации, а не командой «удалить всё». У нас это отдельная проверка, и падает она намеренно.
Что делать с найденным
- Отключать, а не удалять жёстко. Мягкое отключение сохраняет идентификатор услуги и её историю заказов. Жёсткое удаление рвёт ссылки в старых заказах и в аналитике, а выигрыша не даёт никакого.
- Перепривязать, если позиция просто переехала. Чаще всего услуга у поставщика никуда не делась, у неё сменился идентификатор. Ищите по названию и категории, а не по номеру, и сверяйте цену и границы объёма до того, как включать обратно.
- Заменить поставщика, если услуга ходовая. Позиция, которая кормит, не должна ждать, пока прежний поставщик её вернёт. Лучше поставить её на другого и вернуться к этому вопросу без спешки.
- Разобрать зависшие заказы руками. По каждому - либо вернуть деньги на баланс, либо переоформить на живую услугу. Оставлять их лежать нельзя: с точки зрения клиента это оплаченный и не выполненный заказ, чем бы он ни назывался в вашей админке.
- Написать клиенту первым. Сообщение «услуга у нашего поставщика снята, мы вернули деньги на баланс и предлагаем такую-то замену» закрывает вопрос. То же самое, сказанное после жалобы, уже воспринимается как отписка. Подробнее о том, как устроены такие разговоры, - в разборе поддержки клиентов и возвратов.
Как не попадать в это снова
- Ходовые позиции - минимум у двух поставщиков. Это главное правило, и оно же самое неудобное: второй поставщик требует денег на балансе и внимания. Зато топовые услуги перестают зависеть от чужой плановой чистки.
- Читать журнал изменений каталога. Резкий скачок ставки, переименование, смена категории - частые предвестники того, что позицию скоро переделают или уберут. Журнал показывает это до, а сверка только после.
- Держать описание услуги честным. Если в витрине написано что-то своё, не связанное с тем, что на самом деле исполняет поставщик, перепривязка вслепую поставит клиенту не ту услугу. Как собирать каталог, чтобы этого не было, разобрано в статье про каталог услуг SMM-панели.
- Выбирать поставщиков с оглядкой на их дисциплину. Частота, с которой у поставщика «пропадают» услуги, - такой же критерий, как цена и скорость. Остальные критерии - в чек-листе о том, как выбрать поставщика SMM-услуг.
Итог
Удалённая у поставщика услуга не исчезает из вашей витрины - она превращается в ловушку, которая выглядит как обычный товар и срабатывает на первом же клиенте. Автоматического сигнала об этом у панелей, как правило, нет, поэтому сверка каталогов должна быть вашей привычкой, а не разовой реакцией на жалобу. Пятнадцать минут раз в неделю дешевле одного разбора с клиентом, у которого списали деньги и ничего не сделали.
Проверить, как это устроено на живой панели, можно без затрат: заказы через наш собственный каталог не тарифицируются вообще, а по сторонним поставщикам бесплатны первые 100 заказов в месяц. Этого хватает, чтобы собрать витрину, подключить поставщика и посмотреть, что именно панель показывает вам, когда у него что-то меняется.