Lucent Rental: сайт проката суперкаров, облёт 360° и CRM
Lucent Rental — двуязычный сайт проката суперкаров в Дубае со встроенной CRM, общим инбоксом, оплатой после ручного подтверждения брони, облётом 360° и ежедневной проверкой штрафов RTA.
Lucent Rental — сайт проката суперкаров в Дубае на русском и английском. Внутри работают CRM, общий инбокс по каналам связи, оплата после ручного подтверждения брони и ежедневная проверка штрафов RTA по госномерам. Проект готов, но клиент пока не подключил его к публичному домену, поэтому ниже разбор механики без цифр по заявкам.
Разбор пригодится, если у вас прокат или другой бизнес с дорогим активом и ручной выдачей: по нему видно, какие части системы нужны с первого дня, а какие можно отложить. Карточка проекта лежит в кейсах: /ru/cases/lucent-rental/.
Из чего состоит проект
Я собрал связку из сайта и рабочего инструмента менеджера, в одной базе:
| Часть | Что делает |
|---|---|
| Каталог EN/RU | Страницы машин, брендов и связки «марка + район» |
| CRM | Лиды и брони со статусами, роли владельца и сотрудника |
| Общий инбокс | Вебхуки для чата сайта, WhatsApp, Telegram; Instagram поддерживается в коде |
| Оплаты | Stripe (карты, AED), YooKassa (карты РФ), NOWPayments (крипта), только после подтверждения |
| Штрафы RTA | Раз в сутки проверка по госномерам через ums.rta.ae |
| Облёт 360° | Lamborghini Urus, 127 кадров |
| Служебные файлы | llms.txt, sitemap.xml, robots.txt |
| Гайды | 8 SEO-гайдов на двух языках |
В базе 61 машина, у 18 стоит флаг доступности. Флаг отделяет парк, который есть у компании, от машин, которые можно бронировать сейчас.
Каталог и страницы под поиск
Сайт строит три типа страниц: машина (/car/), бренд (/brand/) и аренда по марке и локации (/rent/{brand}/{loc}). Русская версия живёт под /ru/.
Каждый тип отвечает на свой запрос. Страница машины даёт характеристики, фото и бронь. Страница бренда собирает модели марки. Страница «марка + район» нужна под запросы, где человек пишет сразу марку и место. Если таких запросов в вашей нише нет, эти страницы можно не делать.
Как связать такую структуру с товаром и не наплодить пустых страниц, я разбирал отдельно: структура сайта для SEO. Каналы продвижения проката помимо сайта разобраны в журнале Savage Media: маркетинг проката автомобилей в Дубае.
Для нейросетей и поисковиков на сайте лежат llms.txt, sitemap.xml и robots.txt. Гайдов восемь, на двух языках. Восемь гайдов — немного, и контентной машиной я их не называю. Большой массив гайдов у меня есть в другом проекте: у юридического сайта Lucent Legal их 426 страниц. У проката задача другая: каталог и бронь.
Облёт 360°: как устроен
Облёт собран из 127 кадров в формате webp, снятых по кругу вокруг Lamborghini Urus. Пользователь тянет картинку пальцем или мышью, а сайт подменяет кадры по углу поворота. 3D-графики здесь нет: браузер показывает обычные фотографии по очереди, поэтому машина выглядит так, как выглядит в жизни, в настоящем свете.
Сейчас облёт есть у одной машины. Каждый следующий требует отдельной съёмки: ровная площадка, камера на одной высоте, одинаковый шаг по кругу, ровный свет. Снимать сразу весь парк из 61 машины нет смысла. Начните с двух-трёх моделей, ради которых к вам приходят.
Для клиентского приложения у Urus есть ещё видео по кругу и отдельный ролик выхлопа. В приложении страница машины проигрывает звук мотора с крупным планом выхлопа и вибрацией телефона.
CRM внутри сайта: статусы брони
Каждая заявка, откуда бы она ни пришла, становится лидом с цепочкой статусов:
- new — заявка пришла, никто не ответил;
- contacted — менеджер связался с клиентом;
- confirmed — машина и даты подтверждены;
- paid — клиент оплатил;
- active — машина у клиента;
- completed — машину вернули, аренда закрыта.
У системы две роли: owner (владелец) и staff (сотрудник). В приложении персонала раздел денег открыт только владельцу.
Зачем CRM внутри сайта, если есть отдельные сервисы? Бронь, машина, клиент и штраф живут в одной базе. Когда приходит штраф, его связывают с бронью по дате, без поиска по переписке в трёх мессенджерах. Как считать, откуда пришёл каждый лид, я разбирал в статье про заявки из WhatsApp и UTM. Если вам нужен сайт с похожей связкой, описание услуги здесь: /ru/services/websites/.
Общий инбокс: один экран на все каналы
В коде заведены три вебхука: /webhook/whatsapp, /webhook/telegram и /webhook/instagram, плюс собственный чат сайта. Менеджер отвечает из админки, а ответ уходит в тот канал, откуда написал клиент. В приложении персонала Lucent Staff тот же инбокс выглядит как список тредов: у каждого значок канала и счётчик непрочитанных, ответить можно прямо из треда.
По Instagram статус такой: приём поддерживается в коде, но ключей Instagram у проекта нет, поэтому канал не подключён. С WhatsApp и Telegram то же условие: вебхук заработает, когда владелец бизнеса выдаст доступы к своим аккаунтам. Без ключей код ничего не принимает.
Что проверить у своего подрядчика:
- Какие каналы приходят в инбокс сейчас, а какие только описаны в коде.
- Чьи ключи и аккаунты стоят в каждом канале: ваши или подрядчика.
- Если клиент написал в WhatsApp, а потом в Telegram, вы увидите одного человека или двоих? По ответу видно, продумана ли база или к сайту просто прикрутили кнопки мессенджеров.
Оплата только после подтверждения
Ссылка на оплату появляется после того, как менеджер вручную подтвердил бронь. В карточке лида в приложении персонала эту ссылку можно скопировать или отправить клиенту, рядом стоят кнопки звонка и WhatsApp. После оплаты лид переходит в статус paid.
В коде заложены три способа: Stripe для карт в AED, YooKassa для российских карт и NOWPayments для криптовалюты. Какие из них работают в боевом режиме, зависит от договоров клиента с платёжными сервисами.
Деньги не берут сразу, потому что у суперкара много причин не выехать в нужный день: другой клиент продлил аренду, машина на сервисе, у клиента не подходят документы. Мгновенная оплата в таких случаях превращается в возврат и спор.
Вопросы подрядчику, если вы принимаете оплату из разных стран:
- Кто держит договор с каждым платёжным сервисом и на чьё юрлицо он оформлен.
- На каком шаге брони клиент видит ссылку на оплату.
- Что происходит с бронью, если оплата не пришла.
Штрафы RTA: проверка раз в сутки
Скрипт раз в сутки проверяет штрафы по госномерам машин через ums.rta.ae. На сервере его запускает таймер lucent-fines.timer, таймер включён.
Штраф привязан к номеру машины, а нарушение совершил тот, кто был за рулём в конкретный день. Цепочка в системе выглядит так:
- Скрипт находит новый штраф по номеру.
- Штраф появляется в разделе Fines приложения персонала: машина, номер, клиент, отметка «оплачен/не оплачен».
- Если штраф добавляют вручную, бронь находится по дате нарушения.
- Менеджер видит клиента, который был за рулём, и связывается с ним, пока тот на связи.
Как перевыставлять штрафы клиенту и что записать в договоре аренды, уточните у юриста: эти условия зависят от вашего договора, не от сайта.
Два приложения поверх той же базы
К сайту и CRM я сделал два iOS-приложения.
Клиентское приложение Lucent готово. В нём онбординг с видео, гараж по категориям и брендам, страница машины с 360° и звуком мотора. Бронь открывается в шторке: календарь, подача на адрес, в отель или аэропорт (с терминалом и рейсом), защита +10 % и разбивка суммы. Дальше идут оплата, экран «Моя аренда», продление, документы клиента, карта зон подачи, Live Activity подачи машины, чат, экран помощи SOS с номерами 999, 998 и 997, вход через Apple и выбор языка EN/RU.
Приложение персонала Lucent Staff находится в TestFlight и готово к выпуску. Экран «Сегодня» показывает три цифры: в аренде, подачи сегодня, новые лиды. Ещё в нём есть:
- лиды с фильтрами статусов;
- инбокс;
- автопарк на тёмной карте;
- штрафы;
- правка цен и доступности машин;
- документы клиента со сроком действия;
- чеклист фото при выдаче и возврате;
- режим поездки «Еду к клиенту → На месте → Выдал/Забрал».
Что такие приложения меняют в работе, я разбирал в статье про приложения для персонала. Подробности есть в кейсе Lucent Staff.
Что не стоит делать
- Запускать сайт с заглушками. Временные фото со свободных фотобанков и шаблонные отзывы до запуска нужно заменить своими фото, а блок отзывов убрать, пока реальных нет.
- Обещать облёт каждой машины, пока он есть у одной. Клиент откроет вторую карточку и увидит обычную галерею.
- Считать канал подключённым, пока он только описан в коде. Между «Instagram поддерживается» и «Instagram в инбоксе» стоят ключи владельца от Meta.
- Брать оплату до подтверждения, если машин мало и они дорогие.
- Делать страницы «марка + район» для комбинаций, где у вас нет машин. Пустая страница под запрос хуже, чем её отсутствие.
- Держать штрафы в таблице отдельно от броней. Связь «штраф → дата → бронь → клиент» должна строиться в одной базе.
Чек-лист: что спросить подрядчика, если вы прокат
| Вопрос | Какой ответ нормальный |
|---|---|
| Видна ли в базе доступность машин? | Да, у каждой машины есть флаг «доступна» |
| Какие статусы у брони? | Цепочка от новой заявки до закрытой аренды, 5–6 шагов |
| Какие каналы приходят в один инбокс? | Названы каналы и чьи ключи нужны для каждого |
| Когда клиент платит? | После подтверждения брони менеджером |
| Кто держит договоры с платёжными сервисами? | Вы, на ваше юрлицо |
| Как ловятся штрафы RTA? | Автоматическая проверка по номерам с понятной частотой |
| Связан ли штраф с бронью? | Да, по дате нарушения |
| Есть ли llms.txt и sitemap? | Да, и они обновляются при добавлении машин |
| Кто подключает домен? | Названо, кто и когда; без домена сайт никто не увидит |
Вопросы и ответы
Почему сайт Lucent Rental пока нельзя открыть?
Сайт готов, но клиент пока не подключил его к публичному домену. Поэтому в разборе нет цифр по заявкам и броням: данных о реальном трафике нет.
Можно ли сделать облёт 360° для всего автопарка?
Механика одна для любой машины, нужна только серия кадров по кругу. Сейчас облёт есть у одной машины, Lamborghini Urus, из 127 кадров. Каждый следующий облёт требует отдельной съёмки, поэтому начинать стоит с моделей, которые чаще смотрят.
Instagram подключён к общему инбоксу?
Нет. Приём сообщений из Instagram поддерживается в коде, но ключей Instagram у проекта нет. Для чата сайта, WhatsApp и Telegram в коде тоже есть вебхуки; какие каналы заработают, зависит от ключей, которые выдаст владелец бизнеса.
Почему оплата идёт только после подтверждения брони?
Машина может быть занята, стоять на обслуживании, или у клиента могут не подойти документы. Менеджер сначала подтверждает бронь и только потом отправляет ссылку на оплату, чтобы не возвращать деньги за машину, которую нельзя выдать.