Крупная крымская сеть гипермаркетов «УютСтрой» (180 000 товаров, 4 магазина, более 800 заказов в день) обратилась к нам с запросом: добавить на сайт продажу услуг — монтаж, установку, покраску, порезку материалов.
На первый взгляд — логичное расширение бизнеса. Но когда мы начали разбираться, стало понятно: это не просто «ещё один тип товара». Продажа услуг затрагивает практически все элементы интернет-магазина: карточку товара, корзину, оформление заказа, интеграцию с 1С, кассовое оборудование и даже юридические аспекты.
У нас было полтора месяца, жёсткий бюджет и требование — минимум изменений на фронтенде. А за месяц до нас в проекте уже внедрили продажу товаров комплектами, и наши услуги должны были ужиться с этим функционалом в одной карточке.
Рассказываем, как мы выпутывались.
Мы изучили рынок — и быстро поняли, что готовых решений нет. У всех игроков примерно одни и те же проблемы: цены на услуги не показывают, пользовательский путь разорван, а сами услуги спрятаны так, что их сложно найти. В одном магазине услуга улетала в отдельную корзину — отдельно от товаров. В другом — при клике на услугу пользователя перекидывало на страницу с простынёй текста, и он терял нить покупки.
Мы решили делать наоборот: цена должна быть видна, услуга должна покупаться в один клик, и никаких отдельных корзин.
Первое, что мы сделали, — перестали думать об услуге как о товаре. У неё нет склада, нет остатков, нет доставки в классическом смысле. Зато есть тип оказания: либо на дому у покупателя, либо в гипермаркете. От этого зависит, как оформлять заказ.
Кроме того, услуги покупают только физические лица — юрлицам мы их не продаём. А если услугу оказывает субподрядчик, в чеке должны быть его реквизиты: этого требует новый закон.
Все эти нюансы нужно было зашить в логику так, чтобы пользователь ничего не заметил. Он просто выбирает услугу, добавляет в корзину и оформляет заказ. А под капотом система сама решает, показывать ему адрес доставки или выбор магазина, разрешать оплату или блокировать.
Первая идея родилась быстро: галерея услуг прямо в карточке товара. Вы смотрите на дверь, а рядом — карточки с услугами: «Монтаж», «Демонтаж», «Покраска». У каждой — название, иконка, цена и кнопка «Добавить». Можно сразу поставить количество. Никаких «цену уточняйте». Человек видит, сколько заплатит, и покупает не отвлекаясь.
Но заказчик предупредил: к одному товару может быть привязано до 30 услуг. Галерея не резиновая.
Тогда мы придумали фишку: если услуг больше пяти, последним элементом галереи появляется кнопка «Все услуги». Нажимаешь — открывается модальное окно со списком. Там можно прочитать полное название, перейти на детальную страницу или сразу добавить в корзину. И закрыть окно — вы остаётесь на той же карточке товара. Никаких переходов, никаких потерь пользователя.
Детальную страницу услуги мы решили не делать с нуля. Взяли шаблон карточки товара и подставили данные услуги. Те же кнопки, тот же макет. Пользователь не переучивается, а мы экономим время на дизайне и вёрстке. Единственное, что добавили — блок «Товары, с которыми можно купить эту услугу».
Кроме того, мы превратили старую информационную страницу, которая три с половиной года просто рассказывала об услугах, в точку продаж. Теперь на ней — такой же блок с кнопками «В корзину». Человек, который пришёл просто почитать, может купить в один клик.
Мы твёрдо решили: одна корзина для товаров и услуг. Услуги — в приоритетном блоке сверху. Если услуга куплена вместе с товаром (например, дверь и её монтаж), они группируются. Можно прямо в корзине изменить количество или удалить услугу.
Звучит просто, но потребовало пересмотра всей модели корзины. Раньше там были только товары с количеством. Теперь появился новый тип позиций — без склада, но с признаками: тип оказания, привязка к товару, субподрядчик. Пришлось переписать методы добавления, удаления, расчёта суммы и отображения.
Мы не знали, что услуги бывают двух типов, пока не углубились в детали. Одни оказываются по адресу покупателя — мастер приезжает на дом. Другие — только в гипермаркете, потому что там нужно спецоборудование: порезка металла, распил древесины.
И теперь, когда пользователь идёт оформлять заказ, мы должны понять, что у него в корзине. Сценарии получились такие:
Мы реализовали целый набор проверок под капотом. Пользователь их не видит — он просто заполняет нужные поля. Если бы мы не продумали всё заранее, интерфейс бы сломался в первый же день.
За месяц до нашего проекта команда заказчика уже внедрила «комплекты товаров» — когда к основному товару предлагаются сопутствующие: к люстре — патрон, к двери — ручка. У каждого комплекта своя кнопка «Добавить в корзину».
И вот теперь в одной карточке товара появились и наши услуги со своей кнопкой. На тестировании они начали конфликтовать: нажимаешь «Добавить услугу» — сбрасывается выбранный комплект. Нажимаешь «Добавить комплект» — услуги исчезают.
Три дня мы переписывали взаимодействие двух логик. Сделали кнопки независимыми, добавили проверки при добавлении в корзину, перестроили часть интерфейса. Это было сложно, потому что кодовую базу мы не трогали — вносили изменения точечно, чтобы не сломать уже работающий функционал.
В процессе разработки выяснилось: в начале 2026 года вышел новый закон — если услуги оказывает субподрядчик, в чеке обязательно должны быть его реквизиты: название, ИНН, телефон.
Пришлось добавлять в модель услуги поле «субподрядчик» и передавать эти данные в кассу, чтобы она корректно пробивала чеки. И всё это — в те же полтора месяца, без права на ошибку.
Мы сознательно пошли на риск: вместо того чтобы тратить месяцы на вылизывание документации, проанализировали базовые требования за пару дней и начали разработку. Остальное дорабатывали по ходу.
Вот что помогало не сорвать сроки:
Главное — мы не гнались за идеальной аналитикой, а создавали рабочий продукт. И когда через полтора месяца всё заработало, даже самый требовательный заказчик оценил скорость и качество.
Продажа услуг — это не просто «добавить кнопку». Это перестройка всей цепочки: от того, как вы показываете услугу в карточке товара, до того, как покупатель получает чек на почту. Это десятки сценариев, которые нужно предусмотреть. Это интеграция с существующими системами, которые уже живут своей жизнью.
Как сказала наш менеджер Наталья Жосан: «Мы смогли это всё не лепя Франкенштейна, а привести к общему знаменателю и интегрировать без больших проблем в существующий мощнейший функционал. Вот это я считаю классной работой».
Теперь сайт «УютСтроя» продаёт услуги по-человечески: с видимой ценой, в одной корзине с товарами и без лишних телодвижений.