Разбор21 августа 2026 г.

Приём заявок с сайта: от формы до задачи у ответственного

Разбор механики: форма пишет заявку в собственную базу до всякой пересылки, модель раскладывает текст по полям, маршрутизацию решает таблица правил, а не модель. Плюс монитор тишины — чтобы сломавшаяся форма не молчала две недели.

Исходная ситуация

Форма на сайте отправляет письмо на общий ящик — info@ или sales@. Ящик открыт у двух-трёх сотрудников: кто первый увидел, тот и ответил. Иногда отвечают двое, и клиент получает два разных предложения. Иногда не отвечает никто, потому что каждый решил, что заявку взял коллега.

Рядом живут другие каналы. Звонок менеджер записывает в блокнот и переносит в CRM вечером. Сообщение в мессенджере копируется руками. Лендинг, который делал подрядчик, шлёт на третий адрес — так было быстрее настроить.

Время утекает в четырёх местах:

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

Отдельная беда — тишина при поломке. Если форма перестала отправлять письмо (сменился пароль SMTP, письма поехали в спам, endpoint отдаёт 500), об этом узнают по падению продаж недели через две.

Что смотрели

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

  • Отправки формы — из веб-аналитики (цель на отправку) и из логов самого endpoint. Два источника, потому что аналитика режется блокировщиками, а логи не видят случаев, когда запрос вообще не дошёл до сервера.
  • Заведённые заявки — выгрузка из CRM или трекера за тот же период и в той же таймзоне.

Разрыв между числами — размер дыры. Дальше его разбирают на составляющие.

МетрикаКак снятьО чём говорит
Время до первого касанияМетка отправки минус время первого исходящегоРеальный, а не заявленный срок ответа
Доля заявок без ответаЗаявки без исходящего дольше сутокПотери на ровном месте
Доля дублейСовпадение телефона или почты в окне сутокДвойные клики и ретраи
Распределение по часамГистограмма по времени отправкиНужен ли ночной сценарий
Доля мусораСпам и ботыОправдана ли защита формы

Полезно один раз пройти путь заявки руками: отправить тестовую форму и проследить её через логи, почту, спам-папку, CRM. Половина проблем находится на этом шаге без всякой аналитики.

Что поменяли

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

1. Собственная точка приёма. Форма шлёт POST на свой endpoint. Первым действием запрос пишется в базу целиком, как пришёл — вместе с заголовками, UTM-метками, адресом страницы и временем. Всё остальное выполняется только после успешной записи.

2. Идемпотентность. Ключ считается из контакта, хеша текста и окна времени. Повторный запрос с тем же ключом не создаёт вторую заявку. Это закрывает двойные клики, ретраи браузера и повторные вебхуки.

3. Отсев ботов без капчи. Скрытое от человека honeypot-поле и проверка времени заполнения. Капча включается только для подозрительных запросов, чтобы не резать живых.

4. Нормализация. Телефон приводится к единому формату, почта — к нижнему регистру, UTM раскладываются по отдельным полям. По этим полям потом ищутся дубли и строится отчётность.

5. Разбор свободного текста. Модель раскладывает сообщение по полям: тип обращения, продукт, срочность, город. Обязательное условие — явный отказ. Нет уверенности — заявка получает категорию «разобрать вручную» и попадает в общую очередь, а не в случайную корзину.

6. Маршрутизация правилами. Таблица вида «категория плюс признак → ответственный и срок первого ответа» лежит в конфиге. Её правит руководитель отдела, а не разработчик. Модель готовит признаки, решение принимает таблица.

7. Создание задачи через API трекера. В карточке — исходный текст целиком, разобранные поля, ссылка на запись в базе, срок первого ответа. Исходный текст обязателен: разбор может ошибиться, оригинал нет.

8. Автоответ клиенту. Номер обращения и срок ответа. Клиенту — подтверждение, компании — общий идентификатор для переписки.

9. Эскалация по времени. Карточку не тронули за отведённый срок — уведомление ответственному, затем в общий канал, затем руководителю. Уведомление адресное, с упоминанием конкретного человека, иначе его читают как фоновый шум.

10. Очередь и мёртвые письма. Трекер недоступен — заявка остаётся в базе со статусом «не доставлено», отправка ретраится с нарастающей паузой. Ретраи исчерпаны — алерт человеку. Заявка не теряется ни при каком сбое внешней системы.

11. Монитор тишины. Отдельная проверка: нет ни одной заявки за несколько часов рабочего времени при обычном трафике — сигнал. Дешевле любого разбора постфактум.

Что не трогали

  • Саму форму. Поля остались прежними. Каждое новое обязательное поле снижает число отправок, а разбор текста и так даёт нужные признаки.
  • Письма на общий ящик. Уходят параллельно весь переходный период. Пока новый путь не отработал месяц без сбоев, старый остаётся страховкой.
  • CRM и трекер. Инструмент не менялся, добавился только вход через API. Смена трекера одновременно с перестройкой приёма даёт два источника проблем вместо одного.
  • Ручное заведение заявок. Менеджер по-прежнему создаёт карточку руками — через тот же endpoint, чтобы данные лежали в одном месте.

Обратимость

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

Порядок отключения при проблемах: сначала автоответ, потом классификатор, потом автосоздание задач. Приём и хранение не отключаются никогда.

Границы

  • Мало заявок. При единицах обращений в неделю почтовый фильтр и дисциплина дают тот же результат без разработки.
  • Заявка требует квалификации. Когда решение зависит от разговора, маршрутизация ускорит передачу, а узкое место останется в человеке.
  • Конструкторы сайтов без вебхуков. Придётся парсить письма, а почтовый парсер ломается при любом изменении шаблона. Работает, но требует присмотра.
  • Персональные данные под регулированием. Согласие, срок хранения, состав полей и содержание автоответа проверяются до запуска, а не после.
  • Ответственные не реагируют. Автоматика ускорит накопление просрочки и сделает её видимой. Видимость полезна, но проблема организационная, и кодом она не закрывается.

Правило: заявка сначала записывается в собственное хранилище, и только потом разбирается, маршрутизируется и рассылается.

  • заявки
  • формы
  • маршрутизация
  • интеграции