Описать проблему ↗

Дубли и данные

Форма отправляет одну заявку два раза

Один посетитель отправил форму, а пришли две заявки. Покажем, как определить, повторилось ли сохранение, отправка письма или передача в CRM.

Редакция «починимсайт» · Обновлено · 3 мин. чтения

Что происходит и с чего начать

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

Что можно проверить самостоятельно

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

Как понять результаты проверки

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

Что проверяет разработчик

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

  1. Откройте Network и нажмите кнопку один раз. Проверьте, нет ли одновременно стандартной отправки формы и AJAX-запроса.
  2. Сопоставьте запросы с записями в базе и уведомлениями. Два письма при одной записи — другой дефект, чем две отдельные заявки.
  3. Проверьте повторные попытки очереди после тайм-аута. Внешний сервис мог принять заявку, даже если ответ не дошёл до сайта.

На что обратить внимание

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

Как исправляют причину

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

Как убедиться, что проблема решена

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

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