У производителя или бренда, который продаёт и в розницу, и оптом, оптовая половина бизнеса обычно живёт в почте. Байер пишет менеджеру, получает прайс-лист таблицей, отправляет заявку обратно, уточняет наличие, спрашивает, отгрузили ли прошлый заказ. Пока партнёров полтора десятка, это нормальная работа одного человека. Когда их сотни, менеджер превращается в справочное бюро.
B2B-кабинет на платформе розничного интернет-магазина — то решение, на котором ошибаются в обе стороны. Одни строят отдельную систему с нуля и платят за второй каталог, который надо вести руками. Другие включают «оптовый режим» переключателем и получают витрину, неудобную обеим аудиториям. Ниже — что в опте переиспользуется от розницы, что делается заново и когда кабинет не нужен вовсе.
Общего больше, чем кажется. Каталог один: номенклатура, характеристики, фотографии, описания, размерные сетки. Вести их дважды — самая дорогая из ошибок, потому что расхождение между розничной карточкой и оптовой обнаруживает партнёр, а не вы. Поиск, фильтры, корзина как механизм, профиль, уведомления, админка и обмен с учётом по номенклатуре и остаткам — один раз сделанная работа на обе части.
Отсюда честная формулировка выгоды: общая платформа экономит не разработку интерфейса, а содержание данных.
А вот чего она не экономит — та часть проекта, которую не видно на демонстрации: ценовая матрица под договор, правила отгрузки, состояние расчётов, роли сотрудников партнёра и права доступа к чужим ценам. Это недели работы, и ни один из блоков не дешевеет оттого, что каталог уже есть. Если вам считают оптовый кабинет по числу экранов, в смете не учтено главное.
В рознице цена одна, плюс акции и промокоды. В опте цена — результат нескольких условий сразу: кто покупает, сколько берёт, по какой товарной группе, на каких условиях оплаты, иногда — в каком канале он потом продаёт. Попытка выразить это процентом от розницы разваливается на второй неделе.
Первое решение принимается до макетов: источник цены. Правильный ответ почти всегда — учётная система, а кабинет показывает то, что в ней согласовано. Как только цену можно поправить и в учёте, и в админке сайта, вы получаете спор двух систем, который разбирают вручную по каждой претензии партнёра.
Второе — правило приоритета. Позиция может одновременно попасть в договорную цену партнёра, в сезонную акцию и в распродажу остатков. Что побеждает, решает коммерческий директор, а не разработчик: это одна строка договорённости — и несколько недель переделки, если её не было.
Третье — видимость. Оптовая цена не кэшируется в общем кеше страницы, не уезжает в товарные фиды и не отдаётся неавторизованному посетителю: партнёр видит свою цену и никогда чужую. Там, где дистрибуторы работают в соседних регионах и знают друг друга, это условие сотрудничества, а не настройка приватности. Проверяется элементарно: откройте карточку в анонимном окне и загляните в исходный код страницы.
Розничная корзина принимает любое число: захотел три — положил три. Оптовая обязана уметь другое: товар отгружается коробами, упаковками, в размерной ростовке, а у заказа под собственной торговой маркой свой порог. На странице для партнёров Peppy Woolton это названо прямо: «Минимальный заказ СТМ от 240 пар на цвет, размер и артикул» — то есть кратность считается по трём признакам сразу.
Техническая часть простая, организационная — нет. Кратность обязана быть свойством позиции и склада, то есть приезжать из учётной системы, а не подсказкой в описании карточки: подсказку проверяет менеджер глазами, и значит, не автоматизировано ничего.
Дальше — где проверять. Частая ошибка проектирования в том, что ограничения проверяются на последнем шаге оформления: байер полчаса собирал заявку из двухсот позиций, нажал «оформить» и получил список из сорока ошибок. Второй раз он откроет не кабинет, а почту. Правильное поведение: кратность округляется прямо в строке заказа с видимой пометкой, а минимальный объём и минимальная сумма видны в корзине всё время.
Отдельно решается, что делать с остатком меньше кратности: склад может отдать семнадцать штук при коробе в двадцать четыре, и в конце сезона это нормально. Либо неполный короб разрешён с пометкой, либо позиция спрятана. Решает коммерческая служба — важно, что решение принято до разработки, а не выяснено на приёмке.

Розничный покупатель платит и уходит. Оптовый работает с отсрочкой, и половина его вопросов к менеджеру — про деньги, а не про товар: сколько я должен, какие счета закрыты, где акт сверки, не упёрся ли я в лимит перед крупной отгрузкой. В кабинете это отдельный раздел — состояние расчётов, свободный остаток лимита, задолженность по срокам, счета и их статусы, закрывающие документы. По нашим наблюдениям он собирает заметную часть обращений, которые раньше шли менеджеру голосом; замера по конкретному проекту у нас не опубликовано, и выдавать наблюдение за цифру мы не станем.
Главный вопрос тут не технический, а управленческий, и ответ нужен до старта: превышение лимита блокирует оформление заказа или только предупреждает? Жёсткая блокировка снимает с менеджера неприятный разговор, но в сезон останавливает отгрузку лояльному партнёру, который заплатит через два дня. Мягкое предупреждение оставляет решение человеку — и тогда нужен тот, кто принимает его в тот же день. Оба варианта рабочие; нерабочий третий, когда решения нет.
И отдельно — с какой задержкой в кабинет приезжает оплата. Если платёж отражается через сутки, партнёр звонит так же, как раньше, только теперь ещё и с претензией, что в кабинете неправда. Там же решается, что он увидит, если цена или лимит не приехали из учёта: молча показанная вчерашняя цифра — это заказ, который потом придётся отменять с объяснениями.
Для розничного покупателя ноль в остатке — конец разговора. Для байера, планирующего закупку на сезон, ноль — повод спросить про ближайшую поставку, и карточка, умеющая сказать только «нет в наличии», возвращает его в переписку с менеджером.
Поэтому в оптовой части показывают не одно число, а картину: что доступно к отгрузке сейчас, что в производстве, что ожидается и когда; иногда добавляют возможность занять позицию из будущей партии. Это типичная конструкция оптовых кабинетов, а не описание нашего конкретного проекта — отмечаем прямо, чтобы не выдать практику за кейс.
Граница у неё жёсткая и лежит не в разработке: показывать дату поставки можно настолько, насколько производство готово за эту дату отвечать. Если план сдвигается на две недели каждый второй месяц, кабинет с датами станет витриной срывов, и доверия будет меньше, чем при честном «под заказ». Почти всегда достоверный минимум — срок сборки и отгрузки со склада, у Peppy Woolton он назван на странице для партнёров и измеряется днями.
Оптовая закупка редко бывает новой: магазин добирает ходовые размеры, сеть повторяет матрицу прошлого квартала. Самый частый сценарий в кабинете — не «найти товар», а «повторить прошлое с правками».
Отсюда три инструмента первой очереди. Повтор прошлой отгрузки одним действием, с переносом в корзину всего, что ещё доступно, и видимым списком того, чего больше нет. Ввод по артикулам строками — байер со списком на двести позиций не будет кликать по карточкам, он вставит их из своего файла. И загрузка заявки таблицей целиком вместе с историей прошлых отгрузок и документами по ним.
Последнее ломается чаще всего, и ломается не в коде: в файле партнёра стоят его собственные артикулы, а не ваши. Либо кабинет ищет по артикулу партнёра — и тогда нужна карта соответствия, которую кто-то ведёт, — либо партнёр переносит коды руками и перестаёт пользоваться загрузкой через месяц. Выбор стоит сделать осознанно: карта соответствия — работа людей, а не строчка в смете.
Розничная регистрация — это форма и письмо со ссылкой. В опте регистрация и доступ — разные события: человек оставляет заявку, кто-то на вашей стороне проверяет, что это действительно магазин или сеть, и привязывает учётную запись к контрагенту в учёте. До привязки партнёр не видит ни своих цен, ни условий.
Это не формальность: именно здесь работает ограничение вроде того, что Peppy Woolton вынес на страницу для партнёров отдельной строкой — продукцию не отгружают для перепродажи на маркетплейсах. Проверить такое может только человек, а значит, у допуска должен быть названный ответственный со сроком ответа.
Второе — сотрудники партнёра. У сети это закупщик, который собирает заявку, и руководитель, который её утверждает; у дистрибутора добавляется бухгалтерия, которой нужны только документы. Одна учётная запись на компанию означает, что паролем пользуются втроём, а при увольнении закупщика его меняют по телефону через вашего менеджера. И сразу ответьте, кто отзывает доступ: администратор на стороне партнёра или ваш менеджер по заявке. Оба варианта нормальны, но если ответа нет, уволившийся закупщик полгода видит ваши условия.

Будем точны в том, что подтверждаем. В карточке проекта сказано: создали новый сайт и B2B-кабинет для дистрибуторов крупного регионального производителя детской одежды. Разбора внутренностей в кейсе нет, замеров тоже нет, и придумывать их мы не станем.
Всё остальное, что названо выше со ссылкой на Peppy Woolton, взято не из кейса, а с публичных страниц сайта клиента: раздел для партнёров и страница входа в кабинет. Ограничение сознательное — читатель должен видеть, где факт проекта, где публичная страница и где обобщение практики.
Почему пример полезен и без цифр: производитель перечислил свои правила работы открытым текстом — кратность под собственную марку, срок отгрузки, доставка транспортными компаниями, фотобанк продукции, персональный менеджер, ограничение по маркетплейсам. Собираетесь делать оптовый кабинет — напишите такой же список про себя. Каждая строка превращается либо в проверку в корзине, либо в поле в карточке партнёра, либо в правило допуска. Список, который не получается написать словами, в интерфейс не превращается.
Главный аргумент за общую платформу слышно через год после запуска: оптовая часть живёт на тех же потоках обмена, что и розничная, и они проектируются один раз.
Масштаб этой работы виден на нашем перезапуске GrandeBoutique.ru. В кейсе названы свыше 35 000 товарных позиций, более 30 интеграций и собственная архитектура безопасности; по каждой позиции ежедневно идёт актуализация цены, остатков и наличия в магазинах. Оптового кабинета в том проекте нет, и мы его не приписываем — важен зафиксированный объём обменной части для одного магазина. Добавьте вторую аудиторию со своими ценами, лимитами и документами, и станет понятно, почему отдельная оптовая система обходится не вдвое дороже, а заметно дороже.
Обратная сторона тоже есть. Общая платформа связывает два релиза в один: срочное изменение оптовых правил выкатывается на магазин, который в этот момент торгует. Лечится тестовым контуром и дисциплиной выкладки — то есть дополнительной работой, а не бесплатным следствием общей платформы.
Вопросы собраны под оптовую специфику: по ответам видно, делал человек B2B-часть или покажет вам розничный магазин с полем «скидка».
Отговариваем мы в этой теме часто, и вот по каким признакам. Партнёров меньше нескольких десятков и каждого ведёт свой менеджер: объём переписки не тот, ради которого строят систему, а сопровождать её придётся наравне с большой. Ассортимент невелик и меняется редко — актуальная таблица решает ту же задачу. Условия у всех одинаковые: сложность оптового кабинета растёт из различий, и если различий нет, строить вокруг них нечего. И самое важное: в учётной системе нет договорных цен в пригодном для выгрузки виде — пока они живут в почте и в голове коммерческого директора, кабинету неоткуда брать данные, и проект превратится в наведение порядка в учёте.
Это обобщение нашей практики, а не разбор клиента. Полезно оно тем, что каждый пункт проверяется за день и без подрядчика.
Общее у этих замен одно: каждая снимает часть нагрузки без перестройки процесса и за квартал даёт цифры, с которыми можно считать полноценный кабинет.
Порог для начала разговора низкий. Пришлите три вещи: сколько у вас партнёров и сколько из них заказывают чаще раза в квартал; как устроена цена — одна матрица на всех, персональные условия или и то и другое; и как сегодня приходит заявка. По трём ответам видно, что имеет смысл брать первой очередью, а что лучше не запускать при нынешнем состоянии учёта. Обратный ход тоже рабочий: присылайте готовую смету, назовём проверки корзины и потоки обмена, которых в ней не видно. Выйдет, что кабинет вам сейчас не нужен, — скажем прямо.
Посмотрим ваш сайт, скажем, что мешает ему приводить клиентов, и какие каналы дадут результат в вашей практике. Без обязательств, отвечаем в течение рабочего дня.