БлогУслугиКарьера
Обсудить проект
БлогУслугиКарьераОбсудить проект
Автоматизация

Одна заявка пришла трижды: как убрать дубли в работе

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

Редакция Feature IT
Редакция Feature IT·
9 окт
·
9 мин
·
Три одинаковые карточки проходят через сортировщик в одну очередь заявок

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

Это условный пример, знакомый по устройству многих интеграций. У него несколько причин, поэтому правило «удалять всё с одинаковым телефоном» опасно. Постоянный покупатель может оформить два самостоятельных заказа. Сотрудники компании иногда оставляют общий рабочий номер. Автоматическое объединение таких обращений скрывает часть работы.

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

Найдите место, где появилась вторая карточка

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

Допустим, сервер принял одну заявку, а CRM получила два запроса на создание. Тогда искать ошибку следует между этими системами. Если сервер уже получил две отдельные отправки, проверьте поведение формы и повторные действия клиента. Уведомления в почте тоже считайте отдельно. Три письма могут относиться к одной карточке, и исправление почтовой рассылки никак не изменит количество сделок.

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

Эта проверка тесно связана с поиском потерянных обращений. В материале о заявках, которые пропадают с сайта разобрана передача между формой, сервером и местом работы менеджера. Одна схема пути заявки помогает искать оба дефекта. Для каждого перехода нужен наблюдаемый результат, иначе команда вынуждена гадать по последнему письму.

Разделите контакт, обращение и попытку отправки

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

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

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

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

Закрепите номер за одной отправкой

Технический повтор проще узнавать по специальному идентификатору. Это номер операции, который остаётся прежним при повторных попытках доставить одну заявку. Сервер запоминает результат первой успешной обработки и при повторе возвращает ссылку на созданное обращение. Разработчики называют такое поведение идемпотентностью.

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

Готовые сервисы описывают подобный механизм в своих правилах. Например, документация Stripe об идемпотентных запросах объясняет повтор операции с прежним ключом и проверку совпадения параметров. Это пример конкретного API, программного интерфейса сервиса. Наличие такого механизма у вашей CRM следует проверить отдельно, вместе со сроком хранения ключей и поведением при ошибке.

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

Защитите запись от одновременных запросов

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

В собственной базе разработчик может задать запрет на повтор сочетания источника и номера операции. В документации PostgreSQL такое ограничение называется UNIQUE. Источник в сочетании нужен потому, что два независимых сервиса могут выдать одинаковые номера. Для обязательных частей сочетания следует запретить пустое значение.

Сохранение обращения и отметки об обработке выполняют согласованно. Иначе сбой между действиями оставит заявку без отметки, и повтор создаст копию. Если CRM находится во внешнем сервисе, местная база сама по себе проблему не закрывает. Понадобится поддержка повторов со стороны CRM либо поиск по переданному внешнему номеру с разбором неопределённого результата.

При автоматизации обработки заявок полезно сразу разобрать этот промежуток с подрядчиком. Покажите сценарий, в котором CRM создала карточку, а ответ потерялся. Исполнитель должен объяснить, как следующая попытка найдёт уже созданную запись и что произойдёт, если поиск временно недоступен.

Уберём повторные действия по заявкам

Проверим передачу данных, правила совпадений и работу команды со спорными обращениями.

Обсудить обработку заявок

Подтверждайте получение после сохранения

Внешний сервис часто отправляет уведомление о событии на адрес вашей системы. Такое уведомление называют вебхуком. Если получатель долго отвечает или связь обрывается, отправитель может повторить доставку. Конкретные условия зависят от сервиса, поэтому их нужно выписать из документации используемого подключения.

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

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

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

Оставьте менеджеру понятную историю совпадений

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

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

Интервал между обращениями можно использовать как дополнительный признак. Его задают по процессу компании. Две заявки за минуту вполне могут относиться к разным адресам, а уточнение прежнего заказа способно прийти завтра. Фиксированный запрет повторных заявок на сутки создаёт неудобства постоянным покупателям, поэтому такое правило требует проверки на их обычных сценариях.

После объединения сохраните сведения об источниках обоих обращений. Первая заявка могла прийти из рекламы, вторая из письма менеджера. В статье о передаче UTM-меток в CRM разобрана связь источника с карточкой клиента. При очистке дублей полезно хранить последовательность обращений и отдельно определить, какой источник попадёт в конкретный отчёт.

Проверьте сбои на подготовленных примерах

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

Затем имитируйте потерю ответа после создания карточки. После восстановления связи повтор должен вернуть прежний результат либо перейти в предусмотренную проверку неопределённого состояния. Подрядчик должен показать запись в журнале и объяснить, кто разберёт такой случай. Простая надпись «ошибка интеграции» оставляет отдел продаж без дальнейшего действия.

Обсудим ваш проект?

Оставьте контакты — перезвоним и обсудим задачу

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

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

Включайте объединение постепенно

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

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

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

Начать можно с последней пары дублей, по которой уже состоялись два звонка. Сохраните номера карточек и попросите восстановить путь каждой отправки. С этим примером обсудите автоматизацию с Feature IT: он даст конкретный сценарий для настройки защиты и последующей приёмки.

Читайте также

  • Заказ через бота для кондитерской без путаницы
  • Как устроить повторный заказ в Mini App

Обсудим ваш проект?

Оставьте контакты — перезвоним и обсудим задачу

Содержание
  • Найдите место, где появилась вторая карточка
  • Разделите контакт, обращение и попытку отправки
  • Закрепите номер за одной отправкой
  • Защитите запись от одновременных запросов
  • Подтверждайте получение после сохранения
  • Оставьте менеджеру понятную историю совпадений
  • Проверьте сбои на подготовленных примерах
  • Включайте объединение постепенно
  • Читайте также
Поделиться:

Похожие статьи

Оплата пришла, заказ завис: как наладить сверку денег
Автоматизация

Оплата пришла, заказ завис: как наладить сверку денег

9 мин
CLAUDE.md: как настроить, чтобы агент не переспрашивал
Автоматизация

CLAUDE.md: как настроить, чтобы агент не переспрашивал

12 мин
MCP-серверы: как дать ИИ-агенту доступ к своим данным
Автоматизация

MCP-серверы: как дать ИИ-агенту доступ к своим данным

13 мин
Feature IT

Feature IT — платформа по обучению программированию и разработке цифровых продуктов. Мы создаём современные веб-решения для бизнеса и обучаем этому других!

Политика конфиденциальностиПользовательское соглашение

О компании

  • Блог
  • Карьера

Услуги разработки

  • Разработка сайтов под ключ
  • Веб-приложения на React/Next.js
  • Telegram-боты для бизнеса
  • Mini Apps (Telegram, VK)
  • SEO-оптимизированные сайты
  • Автоматизация бизнес-процессов
  • Поддержка и развитие IT-продуктов

Обучение

  • Курс Python с нуля
  • Алгоритмы и структуры данных
  • Паттерны проектирования
  • Подготовка к собеседованиям в IT
  • Практика на реальных проектах

Инструменты

  • Генератор UTM-меток
  • Счётчик символов