Действие «Вебхук»
Отправляет POST с данными в ваш URL — для интеграции с CRM/аналитикой.
Поля
- url — куда слать (HTTPS обязателен)
- payload — JSON с данными (поддерживает `#{variables}`)
- secret — для подписи запроса (HMAC-SHA256 в `X-ImpactBot-Signature`)
- retries — 0/3/5 попыток
Что включается в payload
```json { "client_id": "...", "flow_id": "...", "block_id": "...", "timestamp": "2026-04-27T10:30:00Z", "data": { ...your custom payload... } } ```
Дедупликация
Webhook event_id используется для idempotency на стороне ImpactBot — даже если повторно вызвали блок, webhook id уникален. Ваша система может проверять.
Порядок событий не гарантируется
Доставка — не менее одного раза, но не в порядке возникновения: ни глобального порядка, ни порядка в пределах одного приёмника нет. Доставки идут параллельно, и порядок завершения определяется скоростью вашего приёмника; повтор упавшей доставки уходит через минуту, то есть заведомо позже более поздних событий.
На практике: клиент оформил заказ и через секунду его отменил — приёмник может увидеть сначала `order.cancelled`, затем `order.created`. Если он строит состояние по последнему событию, заказ останется активным, и ошибка будет тихой: обе доставки успешны, обе 200.
Что делать: сверяйте `occurrenceId` и метку времени события и игнорируйте то, что старше уже применённого. Полностью — в руководстве «Вебхуки», раздел «Порядок событий не гарантируется».
Verify signature на стороне получателя
```python import hmac, hashlib
def verify(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
```