#Что именно происходит
Узкая неисправность: форма создаёт контакт, событие запускает автоматизацию, которая повторно вызывает создание того же контакта. Это не обычное отсутствие поиска дублей при первой отправке формы.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Обработчик события повторно отправляет формуЦикл «форма → событие → форма» возвращает заявку в начало | В журнале два последовательных создания после одной заявки | Разорвать повторный вызов |
| Ретрай вызывается после задержки ответаИнтеграция не проверяет уже выполненное действие | Клиент отправил один раз, сервер запросил создание повторно | Добавить ключ идемпотентности |
| Воронка создаёт связанный контакт отдельноДва независимых действия создают одну сущность | Вторая карточка создана ботом и отличается ответственным | Оставить один источник записи |
#Пошаговая диагностика и устранение
- Выберите безопасную форму для проверкиСохраните настройки исходной формы и создайте тестовую заявку с уникальным email. В «Списки» → «Контакты» найдите все карточки с этим адресом, запишите ID и время создания. Не объединяйте их до установления второго источника.
- Проверьте число отправок браузераРазработчик откроет средства разработчика браузера на тестовом сайте, вкладку «Сеть», затем один раз отправит форму и посмотрит число запросов к своему серверу. Если запрос один, но контактов два, источник повтора находится дальше по цепочке.
- Проследите запись до amoCRMВ закрытом серверном журнале сопоставьте уникальный идентификатор тестовой заявки с обращениями к API. Ищите два запроса создания контакта либо создание сделки с контактом плюс дополнительный запрос; не публикуйте журнал с телефонами клиентов.
- Проверьте автоматические действия воронкиАдминистратор откроет «Сделки» → «Настроить» и соответствующий источник/этап, затем найдёт правила, вызывающие внешние интеграции или создающие новые записи. Не выключайте сразу все роботы: отключение согласовывайте только для тестового потока.
- Сверьте события вебхукаРазработчик проверит типы add_contact и add_lead, которые могут запустить разные обработчики. Если обработчик на add_contact вновь создаёт контакт, добавьте проверку собственного происхождения и уже обработанного ID, не скрывая все события.
- Исправьте повтор в одном местеОставьте одну операцию создания контакта и обеспечьте поиск существующей записи с подходящими правами. Для повторных доставок одной заявки примените устойчивый идентификатор; он не должен объединять независимых людей с одинаковым номером.
- Проведите два независимых тестаПервую заявку отправьте единожды, вторую — как предусмотренный повтор с тем же тестовым идентификатором. Успех — нет второй ненужной карточки, а исходная сделка и журнал обработки сохранились; при сбое восстановите прежнюю настройку.
#Проверка результата
Одна форма формирует один контакт без циклического повторного создания при ретраях.
#Когда обращаться к администратору
Если после проверки проблема остаётся, передайте ответственному техническому специалисту сведения о версии приложения и типе учётной записи, времени контрольного события и результате конкретного шага. Не передавайте пароли, токены, данные клиентов и рабочие файлы через незащищённый канал.