Webhook n8n создаёт дубли заявок: как спроектировать защиту от повтора

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

Как разобрать ситуацию

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

Пример и ожидаемый результат

Учебный протокол: webhook с event_id=E17 создаёт заявку C9 и сохраняет связку. Повтор E17 с тем же содержимым возвращает прежний результат. E17 с другой суммой отправляется в конфликт, а не незаметно переписывает заявку.

E17, payload A → created C9
E17, payload A → replay C9
E17, payload B → conflict

Ожидаемый результат — одна заявка для одного события и наблюдаемый статус повторной доставки. Успешный HTTP-ответ сам по себе не доказывает отсутствие дублей в CRM.

Проверка перед применением

  • Отправьте два одинаковых события одновременно в тестовом окружении.
  • Смоделируйте падение после создания заявки, но до сохранения результата обработки.
  • Проверьте срок хранения event_id: слишком ранняя очистка снова разрешит старый повтор.

Храните журнал переходов обработки: received, processing, completed и failed с привязкой к событию. Тогда оператор понимает, что произошло после сбоя и можно ли безопасно продолжить. Не используйте случайный execution_id n8n как единственный ключ дедупликации: повторный запуск получает другой технический идентификатор, хотя бизнес-событие осталось прежним.

Границы решения

Конкретная настройка узлов зависит от базы и контракта CRM. Схема ниже является протоколом проектирования, а не проверенным экспортом n8n. Подпись webhook и права доступа проверяются отдельно от идемпотентности.

Если простые сценарии уже работают и нужна практика надёжных API-интеграций, проверок и обработки сбоев, посмотрите наш платный курс

Продвинутый n8n: production-автоматизации и AI-агенты. Перед записью сравните программу со своей задачей и подготовкой.

Техническая справка: docs.n8n.io: документация.

Следующий шаг: n8n в работе: разборы данных, сбоев и автоматизаций. По смежным вопросам: Пагинация API в n8n зациклилась: как проверить cursor и условие остановки, HTTP Request в n8n зелёный после 500: как не потерять ошибку API.

Продолжить на практике