Когда беру в работу b2b интернет-магазин с оптовыми ценами, в первую очередь уточняю у заказчика логику ценообразования, а не дизайн или платформу: сколько уровней цен нужно, как считается скидка за объём и видит ли розничный покупатель те же товары, что оптовик. От этого зависит архитектура каталога, корзины и личного кабинета - обычный магазин собирается на коробочном решении за пару недель, а проект с разными ценами для розницы, мелкого опта и дистрибьюторов почти всегда требует кастомной логики.
Чем оптовый интернет-магазин отличается от розничного
Розничный магазин продаёт одному сегменту покупателей по одной цене. В b2b-проекте цена и сама возможность оформить заказ зависят от того, кто зашёл на сайт. На практике встречаю такой набор требований:
- Цена скрыта до авторизации или показывается «по запросу», пока менеджер не подтвердит статус клиента
- Для разных групп покупателей - розница, мелкий опт, дистрибьютор - разные прайсы на одни и те же товары
- Минимальная партия для заказа, например кратно упаковке или паллете
- Оплата не всегда онлайн: юрлица часто заказывают по счёту с отсрочкой 7-30 дней
- За клиентом закреплён менеджер, который видит историю заказов и может вручную скорректировать цену
- Нужен экспорт прайса в Excel или CSV - часть b2b-покупателей заказывает не через корзину, а присылает список артикулов
Личный кабинет и сегментация покупателей
Ролевая система - основа b2b-магазина. Обычно завожу три-четыре роли: розница, мелкий опт, крупный опт, дистрибьютор - и к каждой привязываю свою наценку или скидку от базовой цены. В WooCommerce это решается плагином вроде B2B for WooCommerce или кастомным полем в профиле пользователя с хуком на цену товара; для проекта на WordPress закладываю такую доработку в стоимость сайта - от 60 000 ₽ за сайт на WordPress, если логика ролей простая, и отдельной задачей, если ролей больше трёх и цены различаются нелинейно.
С Tilda сложнее: она не умеет показывать разные цены разным пользователям из коробки. Делаю это скриптом - после авторизации через отдельный бэкенд токен кладётся в localStorage, скрипт на странице каталога подменяет цену и кнопку «в корзину» под роль клиента. Простая доработка такого рода стоит от 3 000 ₽, но если нужна полноценная интеграция с CRM и подтверждением статуса контрагента, это уже комплексная работа от 40 000 ₽.
Отдельно ставлю уведомления менеджеру: как только оптовый клиент оформляет заказ выше порога, скажем от 50 000 ₽, бот на aiogram присылает сообщение в рабочий чат с составом заказа и контактами - так менеджер не пропускает крупную заявку среди розничных. Такой бот отдельной задачей обычно укладывается от 30 000 ₽.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Оптовые цены: уровни скидок и минимальные партии
Рабочая схема оптовых цен почти всегда строится на уровнях по количеству, а не на фиксированной оптовой цене для всех, кто её попросил. Пример из практики - для клиента с товаром средней стоимости 1000 ₽ настроили такую сетку:
| Объём заказа | Скидка | Цена за единицу |
|---|---|---|
| 1-9 шт | - | 1000 ₽ |
| 10-49 шт | 5% | 950 ₽ |
| 50-199 шт | 12% | 880 ₽ |
| от 200 шт | 20% | 800 ₽ |
Логика на фронтенде простая - функция принимает количество и базовую цену и возвращает цену конкретного уровня:
function getTierPrice(basePrice, qty) {
const tiers = [
{ min: 200, discount: 0.20 },
{ min: 50, discount: 0.12 },
{ min: 10, discount: 0.05 },
];
const tier = tiers.find(t => qty >= t.min);
const discount = tier ? tier.discount : 0;
return Math.round(basePrice * (1 - discount));
}
Отдельно закладываю округление, обычно до рубля, и разделение цены с НДС и без - юрлица в заявке часто просят прайс без налога, а физлица видят цену с ним. Если у бизнеса больше 4-5 уровней или скидка зависит не только от количества, но и от суммы всех прошлых заказов клиента за квартал, логику переношу на бэкенд и завязываю на историю заказов, а не считаю на клиенте.
Интеграция с 1С, CRM и складом
Оптовый магазин без синхронизации остатков с 1С - риск продать позицию, которой физически нет на складе, сразу на крупную сумму. Обмен настраиваю двумя способами: через штатный CommerceML-обмен 1С с сайтом на WordPress, либо через n8n, если у клиента 1С в облаке или доступен только веб-сервис - n8n забирает остатки и цены по расписанию и обновляет карточки товаров в CMS. Такая автоматизация обычно от 25 000 ₽, для более сложного сценария, когда нужен двусторонний обмен и создание заказов в 1С из сайта, закладываю отдельный бэкенд - от 40 000 ₽.
Из CRM для b2b чаще вижу Bitrix24 и amoCRM: при оформлении заказа сайт создаёт сделку через вебхук, менеджер продолжает работу там, а не в админке магазина. Готовые скрипты для типовых интеграций и синхронизации каталогов я собираю в библиотеке готовых скриптов - часть задач закрывается доработкой готового решения, а не разработкой с нуля.
Оплата и доставка для оптовых заказов
Для розничных и мелкооптовых заказов подключаю обычный онлайн-эквайринг, чаще всего T‑Bank: для WooCommerce есть официальный плагин, для Tilda эквайринг встроен в саму платформу. А вот для крупных сделок с юрлицами оплата картой на сайте почти не встречается: клиент получает счёт, платит по безналу, часто с отсрочкой 7-14, иногда 30 дней - это уже не функция магазина, а процесс, завязанный на 1С-Бухгалтерию и ручную работу менеджера.
С доставкой похожая история: для штучных заказов считаю стоимость через API СДЭК прямо в корзине, по индексу и весу. Для палетных партий и сборных грузов автоматический расчёт не имеет смысла, обычно ставлю форму «рассчитать индивидуально», и менеджер уже сам договаривается с транспортной компанией.
Какую платформу выбрать под оптовый интернет-магазин
| Платформа | Гибкость ролевых цен | Когда подходит | Цена от меня |
|---|---|---|---|
| Tilda | Только через скрипты поверх готового сайта | 1-2 роли, простая скидка | сайт от 30 000 ₽, скрипт от 3 000 ₽ |
| WordPress + WooCommerce | Плагины закрывают большинство сценариев | 3-5 ролей, стандартные интеграции | от 60 000 ₽ |
| Кастомная разработка (SaaS) | Полный контроль над логикой | индивидуальные прайсы, сложные интеграции | от 300 000 ₽ |
Если у бизнеса два-три уровня цен и несложная логика, беру WordPress с WooCommerce: экосистема плагинов закрывает большую часть типовых задач, и это дешевле кастома. Когда у клиента индивидуальные прайсы под каждого дистрибьютора, сложные условия отсрочки и нужна интеграция с внутренними системами, которых на рынке ещё не существует в готовом виде, ухожу в кастомную разработку - такую SaaS-логику веду от 30000 ₽. На рынке похожий проект под ключ в студиях обычно стоит от 200 000 до 500 000 ₽, разброс сильно зависит от глубины интеграций.
Интернет-магазин под ключ
Интернет-магазин
от 80 000 ₽
Подробнее →Частые вопросы
Сколько стоит разработка b2b интернет-магазина с оптовыми ценами?
Зависит от платформы и сложности ролевой системы. Магазин под ключ с базовой логикой оптовых цен оцениваю от 80 000 ₽, для проекта с несколькими уровнями скидок, интеграцией с 1С и CRM - от 300 000 ₽. Точная цифра появляется после того, как разберём количество ролей, способов оплаты и внешних систем, с которыми магазин должен обмениваться данными.
Можно ли сделать оптовые цены на Tilda?
Можно, но с оговорками. Сама Tilda не умеет показывать разные цены разным пользователям - эту логику добавляю отдельным скриптом поверх готового сайта: авторизация, определение роли клиента и подмена цены на странице каталога. Для одной-двух ролей хватает доработки от 3 000 ₽, для полноценной интеграции с CRM и подтверждением статуса контрагента цена ближе к 40 000 ₽.
Как синхронизировать остатки и цены с 1С без ручного ввода?
Чаще всего через n8n - он забирает данные из 1С по расписанию, через веб-сервис или выгрузку CommerceML, и обновляет карточки товаров на сайте без участия человека в процессе. Для WordPress-проектов иногда хватает штатного механизма обмена, если движок это поддерживает.
Нужна ли отдельная CRM для оптового магазина?
Если заказов больше десятка в день и с клиентами работает не один менеджер - да, иначе заявки теряются в почте и мессенджерах. CRM не обязательно покупать отдельно: обычно хватает вебхука из магазина в Bitrix24 или amoCRM при оформлении заказа, дальше менеджер ведёт сделку уже там.