Lucent Rental: сайт проката суперкаров, облёт 360° и CRM

Lucent Rental — двуязычный сайт проката суперкаров в Дубае со встроенной CRM, общим инбоксом, оплатой после ручного подтверждения брони, облётом 360° и ежедневной проверкой штрафов RTA.

Опубликовано 8 мин чтения

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 внутри сайта: статусы брони

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

  1. new — заявка пришла, никто не ответил;
  2. contacted — менеджер связался с клиентом;
  3. confirmed — машина и даты подтверждены;
  4. paid — клиент оплатил;
  5. active — машина у клиента;
  6. completed — машину вернули, аренда закрыта.

У системы две роли: owner (владелец) и staff (сотрудник). В приложении персонала раздел денег открыт только владельцу.

Зачем CRM внутри сайта, если есть отдельные сервисы? Бронь, машина, клиент и штраф живут в одной базе. Когда приходит штраф, его связывают с бронью по дате, без поиска по переписке в трёх мессенджерах. Как считать, откуда пришёл каждый лид, я разбирал в статье про заявки из WhatsApp и UTM. Если вам нужен сайт с похожей связкой, описание услуги здесь: /ru/services/websites/.

Общий инбокс: один экран на все каналы

В коде заведены три вебхука: /webhook/whatsapp, /webhook/telegram и /webhook/instagram, плюс собственный чат сайта. Менеджер отвечает из админки, а ответ уходит в тот канал, откуда написал клиент. В приложении персонала Lucent Staff тот же инбокс выглядит как список тредов: у каждого значок канала и счётчик непрочитанных, ответить можно прямо из треда.

По Instagram статус такой: приём поддерживается в коде, но ключей Instagram у проекта нет, поэтому канал не подключён. С WhatsApp и Telegram то же условие: вебхук заработает, когда владелец бизнеса выдаст доступы к своим аккаунтам. Без ключей код ничего не принимает.

Что проверить у своего подрядчика:

  1. Какие каналы приходят в инбокс сейчас, а какие только описаны в коде.
  2. Чьи ключи и аккаунты стоят в каждом канале: ваши или подрядчика.
  3. Если клиент написал в WhatsApp, а потом в Telegram, вы увидите одного человека или двоих? По ответу видно, продумана ли база или к сайту просто прикрутили кнопки мессенджеров.

Оплата только после подтверждения

Ссылка на оплату появляется после того, как менеджер вручную подтвердил бронь. В карточке лида в приложении персонала эту ссылку можно скопировать или отправить клиенту, рядом стоят кнопки звонка и WhatsApp. После оплаты лид переходит в статус paid.

В коде заложены три способа: Stripe для карт в AED, YooKassa для российских карт и NOWPayments для криптовалюты. Какие из них работают в боевом режиме, зависит от договоров клиента с платёжными сервисами.

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

Вопросы подрядчику, если вы принимаете оплату из разных стран:

  1. Кто держит договор с каждым платёжным сервисом и на чьё юрлицо он оформлен.
  2. На каком шаге брони клиент видит ссылку на оплату.
  3. Что происходит с бронью, если оплата не пришла.

Штрафы RTA: проверка раз в сутки

Скрипт раз в сутки проверяет штрафы по госномерам машин через ums.rta.ae. На сервере его запускает таймер lucent-fines.timer, таймер включён.

Штраф привязан к номеру машины, а нарушение совершил тот, кто был за рулём в конкретный день. Цепочка в системе выглядит так:

  1. Скрипт находит новый штраф по номеру.
  2. Штраф появляется в разделе Fines приложения персонала: машина, номер, клиент, отметка «оплачен/не оплачен».
  3. Если штраф добавляют вручную, бронь находится по дате нарушения.
  4. Менеджер видит клиента, который был за рулём, и связывается с ним, пока тот на связи.

Как перевыставлять штрафы клиенту и что записать в договоре аренды, уточните у юриста: эти условия зависят от вашего договора, не от сайта.

Два приложения поверх той же базы

К сайту и 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 в коде тоже есть вебхуки; какие каналы заработают, зависит от ключей, которые выдаст владелец бизнеса.

Почему оплата идёт только после подтверждения брони?

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