Защита обработчика от повторной доставки пример. Все данные синтетические. Имена, события, условия и организации вымышлены. Файлы не содержат учётных данных, персональных данных или действующих внешних подключений. deliveries.json — последовательность восьми входов. crm-contract.json — контракт локальной заглушки CRM, которую создаёт специалист. expected-checks.json — ожидаемый результат. Соберите сценарий n8n и устойчивый журнал. При повторе сравнивайте хеш бизнес-payload, а не delivery_id. Хеш в файле рассчитан по UTF-8 JSON с сортировкой ключей, без пробелов-разделителей и без экранирования кириллицы. Три доставки event-001 должны создать одну запись. Изменённый payload event-002 должен остановиться как конфликт. Для event-003 CRM сохраняет запись и теряет ответ: восстановление обязано найти её по external_key. event-004 имеет пустую тему и не должен бесконечно повторяться. Итог: три записи CRM, четыре сохранённых ключа события, отдельный журнал восьми доставок. Проверить параллельную доставку event-001 и перезапуск в указанной точке. Не выполнять внешние отправки и не подключать настоящую CRM: набор целиком рассчитан на локальную заглушку.