[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-webhook-replay::ru":3,"gloss-cluster-webhook-replay::ru":26,"gloss-next-webhook-replay::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"webhook-replay","integration","Повторная отправка вебхуков","Повторная отправка вебхуков — возможность заново прислать событие, которое получатель пропустил или обработал неверно: автоматически, в рамках политики ретраев, или по требованию из панели либо через API. Она нужна потому, что доставка не равна обработке: эндпоинт может вернуть 200 и упасть на записи в базу, деплой может уронить запросы в полёте, а авария может вывести час событий за пределы автоматических ретраев провайдера. Без повторной отправки единственный путь восстановления — полная сверка с API поставщика, что медленнее и часто неполно. Сторона получателя в этом контракте — идемпотентность. Любой механизм повтора гарантирует доставку хотя бы один раз, поэтому потребитель обязан обработать одно и то же событие дважды, не удвоив списание, не отправив второе письмо и не вставив дубликат строки. На практике это значит записывать идентификатор события провайдера и отклонять уже виденный, а саму запись делать по ключу, а не аддитивной. Важны ещё две детали. Порядок при повторе не сохраняется: событие, присланное на час позже, может прийти после более позднего события о том же объекте, поэтому обработчикам следует сверяться с текущим состоянием или смотреть на собственную метку времени или версию события, а не предполагать последовательность. И повторный запрос обязан проверяться ровно так же, как живой: эндпоинт повторов без проверки подписи — это неаутентифицированный вход в вашу систему. Командам, которые строят вебхуки, повторная отправка вместе с видимым журналом доставок — одна из самых ценных интеграционных функций, какие можно выпустить.","Повторная отправка вебхуков возвращает пропущенные события: почему потребитель обязан быть идемпотентным, почему теряется порядок и зачем проверять подпись.",null,[11,14,17,20,23],{"slug":12,"name":13},"dead-letter-queue","Очередь недоставленных сообщений (DLQ)",{"slug":15,"name":16},"delivery-semantics","Семантика доставки (delivery semantics)",{"slug":18,"name":19},"idempotency-key","Ключ идемпотентности",{"slug":21,"name":22},"webhook","Вебхук (Webhook)",{"slug":24,"name":25},"webhook-signing","Webhook Signing (подписывание вебхуков)",[27,31,34,37,40,43,47,50,53,56,59,62],{"slug":28,"category":5,"name":29,"updated_at":30},"backend-for-frontend","Backend for Frontend (BFF)","2026-08-24T02:46:38+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"concurrency-limit","Лимит параллельных запросов",{"slug":35,"category":5,"name":36,"updated_at":30},"event-ordering","Порядок событий",{"slug":38,"category":5,"name":39,"updated_at":30},"field-mapping","Сопоставление полей (field mapping)",{"slug":41,"category":5,"name":42,"updated_at":30},"function-schema","Схема функции",{"slug":44,"category":5,"name":45,"updated_at":46},"grpc","gRPC","2026-08-24T02:46:37+00:00",{"slug":48,"category":5,"name":49,"updated_at":30},"integration-marketplace","Каталог интеграций (integration marketplace)",{"slug":51,"category":5,"name":52,"updated_at":30},"ip-allowlist","IP-allowlist (список разрешённых адресов)",{"slug":54,"category":5,"name":55,"updated_at":30},"json-web-token","JSON Web Token (JWT)",{"slug":57,"category":5,"name":58,"updated_at":30},"mcp-server","MCP-сервер",{"slug":60,"category":5,"name":61,"updated_at":30},"mutual-tls","Взаимный TLS (mTLS)",{"slug":63,"category":5,"name":64,"updated_at":30},"oauth-scopes","OAuth-скоупы"]