Как вынести сложный расчёт в онлайн-калькулятор и получить с него заявки – кейс агентства ADN

Как вынести сложный расчёт в онлайн-калькулятор и получить с него заявки

Есть класс бизнесов, где цену нельзя положить в прайс. Она собирается из десятка переменных, зависит от параметров, которые клиент сам не всегда знает, и меняется вместе с тарифами поставщиков. Производитель с конфигурацией под заказ, дистрибутор с ценой от объёма и условий договора, транспортная компания — устроены одинаково: посчитать умеют несколько человек в компании, и каждый расчёт стоит звонка.

Пока цена живёт в голове менеджера, сайт не приносит заявки. Он приносит запросы «перезвоните, обсудим», а это другая воронка — длиннее, дороже и с большим отвалом.

Ниже — как мы вынесли такой расчёт в интерфейс. Проект — калькулятор авиаперевозок для транспортной компании «Норд Вил», но выводы про расчётные интерфейсы переносятся на конфигураторы и B2B-кабинеты один в один.

Клиент: ТК «Норд Вил» (nordw.ru) — транспортная компания, авиаперевозки и автоперевозки сборных грузов по России. 

Что сделали: онлайн-калькулятор авиаперевозок с расчётом «от двери до двери», сравнением авиакомпаний и передачей заявок в Битрикс24 и 1С. 

Стек: Laravel, админ-панель на Orchid, SPA-фронтенд, публичное API. 

Смотреть вживую: nordw.ru/tools/calculation/#avia

С чего начали: входящих заявок на авиа не было вообще

Это не фигура речи и не «было мало». До запуска калькулятора «Норд Вил» не получал с сайта ни одной заявки на авиаперевозку. Направление жило целиком на телефоне: клиент звонил, менеджер уточнял параметры груза, уходил считать, перезванивал. Посчитать авиаперевозку в компании умели единицы — это отдельная компетенция, а не «посмотреть в прайс».

Параллельно была вторая, менее очевидная потеря. У компании уже есть база клиентов на автоперевозках сборных грузов по РФ. Значительная часть этих клиентов просто не знала, что «Норд Вил» возит ещё и самолётами. Когда у них появлялся срочный груз, они шли к конкурентам — не потому что там дешевле, а потому что не рассматривали своего же перевозчика как вариант.

Задача, с которой к нам пришли, звучала просто: сделать на сайте инструмент, который считает авиаперевозку сам. Дальше начинается предметная область.

Почему авиа нельзя посчитать так же, как авто

В автоперевозке цена — это в основном маршрут и объём. В авиа так не работает, и именно поэтому у большинства транспортных компаний на сайте либо нет калькулятора, либо стоит форма «оставьте телефон, мы посчитаем».

Что на самом деле входит в стоимость одной авиаотправки:

  • тариф авиакомпании — не одна цифра, а сетка: своя ставка на каждое направление, на каждый тип тарифа (GENERAL, EXPRESS, COURIER и специальные — PHARMA, DGR, LIVE, FRESH и другие) и на каждый весовой порог;
  • оплачиваемый вес — авиакомпания берёт деньги не за фактический вес, а за больший из фактического и объёмного. Лёгкий, но габаритный груз оплачивается по объёму, и разница бывает кратной;
  • топливный сбор — считается от веса;
  • оформление авианакладной;
  • терминальное оформление в аэропорту вылета и в аэропорту прилёта — две разные позиции;
  • сопровождение в аэропорту силами «Норд Вил»;
  • наземные плечи — забор груза по адресу в городе отправления и доставка по адресу в городе прилёта, по тарифам автоперевозок;
  • автоплечо до Москвы — для части городов перелёт стыкуется с автодоставкой, и это звено тоже попадает в цену;
  • страхование от объявленной стоимости и жёсткая упаковка, если груз того требует.

Десяток переменных, каждая со своей логикой. Менеджер, который держит это в голове, — ценный сотрудник, и таких в компании было мало. Наша работа состояла в том, чтобы вынести эту компетенцию из головы менеджера в интерфейс, которым может пользоваться человек с улицы.

Три способа задать груз: калькулятор внутри калькулятора

Первое, обо что спотыкается любой расчётный интерфейс в логистике, — пользователь не знает объём своего груза. Он знает, что у него «шесть коробок вот такого размера». Требовать от него кубометры — значит потерять его на первом же поле.

Поэтому в калькуляторе три режима ввода, и переключаются они на лету:

Простой. Общий вес и общий объём одной строкой. Для тех, кто возит регулярно и цифры знает.

По точным габаритам. Включается переключатель «Рассчитать с точными габаритами» — и вместо объёма появляются поля «Длина × Ширина × Высота». Система считает объём места, умножает на количество мест и тут же показывает результат прямо в строке: 1,0 × 1,0 × 1,0 = 1 м³.

По однотипным местам. Вес и объём одного места плюс количество таких мест.  Итог система считает сама. Это типовой сценарий: партия одинаковых коробок.

Строки грузовых мест добавляются и удаляются кнопкой «+ Добавить грузовое место» — для сборной отправки из разных по характеристикам мест. Общий объём и оплачиваемый вес пересчитываются при каждом изменении.

Смысл всей конструкции в одном: пользователь не обязан знать объём заранее. Он вводит то, что может измерить рулеткой, — остальное считает система. Это снимает главный барьер к заполнению формы.

Мы показываем не расчёт, а рынок

Калькулятор не выдаёт одну цену. Он считает стоимость по всем авиакомпаниям и всем подходящим тарифам сразу и показывает варианты списком. Для отправки Москва — Казань выдача выглядит так: «Аэрофлот, GENERAL, SVO → KZN», «S7, BIG, DME → KZN», «Аэрофлот, EXPRESS», «Аэрофлот, COURIER» — с ценой, минимальным весом по тарифу и аэропортами вылета и прилёта у каждой строки.

Здесь мы сознательно пошли против рыночной практики. Конкуренты чаще всего не показывают, какая авиакомпания повезёт груз, — цена есть, перевозчика нет. Мы решили открыть всё: клиент видит, за что платит и кто повезёт. Гипотеза была в том, что прозрачность в B2B продаёт лучше, чем управление ожиданиями, — и что человек, который сам выбрал перевозчика, доходит до сделки охотнее, чем тот, кому вариант назначили.

По умолчанию выбран самый дешёвый вариант. Но выбор остаётся за клиентом: кому-то важнее срок, кому-то — конкретный аэропорт вылета, у кого-то корпоративное соглашение с определённой авиакомпанией.

Детализация: чтобы не отвечать на вопрос «почему так дорого»

Каждый вариант раскрывается в полную детализацию — что именно входит в цену:

Позиции, которые считаются от веса, показаны со ставкой за килограмм — клиенту сразу видно, что именно вырастет, если груз окажется тяжелее.

Это не украшение интерфейса, а инструмент снятия возражений. В логистике непрозрачная цена читается как завышенная — клиент не понимает, где перевозка, а где наценка, и по умолчанию подозревает второе. Когда цена разложена по позициям и рядом стоит ставка за килограмм, разговор «почему так дорого» либо не начинается, либо начинается уже предметно.

«От двери до двери» одним числом

Калькулятор считает не перелёт, а перевозку. Клиент выбирает, что делает с грузом на каждом конце: «привезу в аэропорт или на терминал» либо «забрать по адресу», «заберу из аэропорта» либо «доставить по адресу». Наземные плечи считаются по тарифам автоперевозок «Норд Вил» и попадают в ту же итоговую сумму.

Для части городов в схему добавляется ещё одно звено: перелёт стыкуется с автодоставкой до Москвы. Это плечо тоже входит в расчёт — клиент видит финальную цифру, а не «авиа, а потом отдельно посчитаем машину».

Для «Норд Вил» это ещё и деньги: последняя миля остаётся у компании, а не уходит локальному перевозчику в городе прилёта.

Первую версию мы сделали неудобной. И переделали

Это самая полезная часть кейса, поэтому расскажем честно.

В первой версии расчёт запускался кнопкой «Рассчитать стоимость», а результаты выводились под формой. Логика была стандартная и на бумаге безупречная: ввёл данные — нажал — получил.

На практике получилось так. Пользователь заполнял форму, жал кнопку, скроллил вниз к результатам, смотрел цену, решал попробовать другой объём — скроллил обратно вверх, менял поле, снова жал кнопку, снова скроллил вниз. А сравнение вариантов — это не разовое действие, это как раз то, ради чего люди приходят в калькулятор. Каждая итерация стоила два скролла и клик.

Что изменили:

Убрали кнопку. Расчёт пересчитывается при любом изменении в форме. Да, это заметно больше нагрузки на бэкенд — мы сознательно разменяли серверные ресурсы на клики пользователя и закрыли вопрос кешированием расчётов.

Перенесли результаты вправо от формы. Блок «Предварительная стоимость услуг» стоит рядом с полями и обновляется на глазах. Ничего не нужно искать — итоговая сумма и оплачиваемый вес всегда в поле зрения.

Ограничили выдачу пятью лучшими предложениями по цене. Полный список вариантов — это не помощь, а работа, которую перекладывают на клиента. Пять — достаточно, чтобы увидеть разброс, и мало, чтобы не устать.

Добавили подсказку, чего не хватает. Пока форма заполнена не до конца, справа вместо цены стоит чек-лист: «Для расчёта стоимости укажите: Откуда ✓, Куда, Вес ✓, Объём ✓, Тип груза». Пользователь видит, какие два поля отделяют его от цифры.

Общий вывод, который мы забрали с проекта: в расчётных интерфейсах кнопка «Рассчитать» — почти всегда лишняя сущность. Она есть не потому, что нужна пользователю, а потому что так проще разработчику. Как только расчёт становится непрерывным, инструмент перестаёт быть формой и превращается в то, с чем играют, — а именно это и приводит к заявке.

Тарифы меняются, разработчики не нужны

Авиакомпании присылают тарифные письма регулярно — с периодом действия, списком пунктов продаж и матрицей ставок на несколько сотен строк: IATA-коды аэропортов вылета и прилёта, названия городов, тип воздушной линии, колонки по каждому типу тарифа и весовому порогу. Обновлять это руками через разработчиков — дорого и медленно, а значит, калькулятор быстро начал бы врать.

Поэтому в админке есть раздел «Загрузка тарифов»: ответственный сотрудник загружает xls-файл прайса по шаблону, система привязывает строки к городам и проверяет на дубли. Правка кода не нужна.

Через админ-панель управляются и все остальные сущности расчёта: авиакомпании, аэропорты, маршруты, типы грузов, типы тарифов и их связка, коэффициенты, значения по умолчанию, типы услуг. То есть модель расчёта настраивается бизнесом, а не переписывается разработчиком при каждом изменении на рынке.

Скидки на направления

Отдельный инструмент для коммерции. В админке заводится строка: город вылета, город прилёта, процент скидки, признак активности. Дальше калькулятор всё делает сам — на нужном направлении применяет скидку к стоимости перелёта, показывает старую цену зачёркнутой и выводит над списком плашку «Скидка 10%! На направление Москва — Астрахань». Сортировка по «самому дешёвому» учитывает уже цену со скидкой.

Это даёт отделу продаж рабочий рычаг: можно догружать обратные рейсы, разгонять приоритетные направления или отвечать на активность конкурента — без задачи в агентство и без релиза.

Заявка не теряется

Каждая заявка с калькулятора уходит по трём адресам одновременно: создаётся лид в Битрикс24 с UTM-метками и данными сквозной аналитики, передаётся в 1С и падает менеджеру на почту письмом с полным содержимым — параметры груза, выбранная авиакомпания, тариф, вся детализация стоимости. Рассылка идёт через Юнисендер Go.

В админке заявки лежат в разделе «Авиаперевозки → Заявки» в табличном виде: дата, откуда, куда, имя, телефон, сумма. Типов заявок три, и это не техническая деталь, а осознанное решение:

  1. выбран конкретный вариант доставки — с полной детализацией расчёта;
  2. нет маршрута между городами — клиент искал направление, которого в системе нет;
  3. нет тарифа под заданные параметры — груз не попал ни в один тариф.

Второй и третий типы обычно просто теряются: пользователь видит «ничего не найдено» и уходит. Мы превратили их в лиды — менеджер видит, что человек искал, и может предложить решение вручную. Заодно это бесплатная аналитика спроса: список направлений, которых нет в системе, — это готовый список того, что стоит добавить.

Разграничение доступа и страницы направлений

В админ-панели заведена отдельная роль «Менеджер по авиа»: сотрудник с этой ролью видит и правит только блок «Авиаперевозки», остальные разделы сайта для него закрыты. Это позволило отдать управление тарифами, скидками и заявками профильному человеку, не выдавая ему доступ ко всей системе.

Дополнительно сделаны SEO-страницы направлений вида nordw.ru/destinations/moskva-nizhniy-novgorod/ со встроенным калькулятором. Человек, который ищет «авиадоставка Москва Нижний Новгород», попадает сразу на страницу своего направления и считает цену, не разбираясь в структуре сайта.

Как это устроено технически

Бэкенд — Laravel, админ-панель — Orchid. Фронтенд калькулятора — SPA, чтобы пересчёт при каждом изменении формы шёл без перезагрузок. Расчёты кешируются: непрерывный пересчёт по всем авиакомпаниям — нагрузка, которую нужно было закрыть до продакшена.

Интеграции: Битрикс24 (лиды, UTM, сквозная аналитика), 1С (передача заявок и обмен тарифными данными), публичное API для встраивания расчёта на страницы направлений. Уведомления — Юнисендер Go, аналитика — Яндекс.Метрика плюс сквозная.

Интерфейс спроектирован в Figma — с макетами и интерактивным прототипом, на котором обкатывались режимы ввода груза до начала разработки.

Результат

Главное — входящие заявки на авиаперевозки появились. До запуска их не было ни одной; теперь они идут с сайта стабильно.

Дальше — то, чего в задаче не было, но что оказалось не менее ценным:

  • Калькулятором пользуются сами менеджеры отдела продаж. Он стал внутренним инструментом быстрого расчёта — и, что важнее, инструментом кросс-сейла. Менеджер на разговоре с клиентом по автоперевозкам за минуту показывает цену авиадоставки. Та самая база, которая не знала про авиа, теперь узнаёт о ней в разговоре, а не постфактум.
  • Видно, откуда приходят заявки. UTM-метки и сквозная аналитика показывают, какие каналы приносят не клики, а реальные перевозки.
  • Компания управляет тарифами, наценкой и скидками сама — без задач в агентство и без релизов.
  • Клиент видит рынок, а не одно предложение — с перевозчиком, детализацией и итоговой ценой «от двери до двери».

Чем это отличается от того, что стоит на рынке

Калькуляторы авиаперевозок на сайтах транспортных компаний обычно делают одно из двух: считают по одному внутреннему тарифу без указания перевозчика либо просят оставить телефон. Здесь клиент получает прозрачное сравнение авиакомпаний с полной стоимостью «от двери до двери», видит перевозчика и разложенную по позициям цену, а заявка автоматически уходит в Битрикс24 и 1С с готовым расчётом.

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

Кому это применимо, кроме логистики

Мы делали калькулятор авиаперевозок, но задача была не про самолёты. Задача была: сложная цена, которую умеют считать несколько человек, мешает продавать через сайт. Она устроена одинаково в нескольких типах бизнеса.

Производитель с конфигурацией под заказ. Цена зависит от материала, размеров, тиража, обработки, доставки. Клиент знает габариты изделия, но не знает, как они превращаются в рубли. Тот же паттерн: три режима ввода параметров, непрерывный пересчёт, детализация по позициям, заявка в CRM с готовой спецификацией.

Дистрибутор или оптовик. Цена зависит от объёма, категории клиента, условий договора и логистики. Здесь калькулятор чаще живёт не на публичном сайте, а внутри кабинета дилера — но механика расчёта и требование «менять цены без разработчиков» те же самые.

Ритейл со сложной доставкой или монтажом. Габаритный товар, подъём на этаж, сборка, вывоз упаковки — всё это в корзине превращается в тот же самый расчёт «от двери до двери», который клиент хочет увидеть до оформления, а не после.

Общее во всех трёх случаях — три вещи. Первая: модель ценообразования должна настраиваться бизнесом через админку, иначе инструмент устареет за квартал. Вторая: расчёт должен быть непрерывным, без кнопки. Третья: даже неуспешный расчёт — «нет такого варианта» — обязан становиться лидом, а не тупиком.

Нужен такой же расчётный инструмент?

Мы проектируем и запускаем калькуляторы, конфигураторы и B2B-кабинеты, которые считают сложную цену без участия менеджера и приводят заявку в CRM с готовым расчётом: настраиваемая модель ценообразования, интеграция с Битрикс24 и 1С, управление ценами и скидками силами вашей команды.

ADN agency — 23 года на рынке, 430+ проектов, NPS 83%. Расскажите задачу — предложим решение.