Python-система: webhook-hub (CRM + Telegram + email)

Одна точка POST на все webhook: подпись, идемпотентность и маршруты в CRM, Telegram и почту.

Стек AmoCRM, FastAPI, Python, Redis, webhooks

Клиент — SaaS для записи на услуги. Интеграции разрослись: 5 webhook от платёжки, CRM, SMS-шлюза — каждый в отдельный скрипт на VPS, логи разрозненны, дубли событий создавали двойные сделки в AmoCRM.

Задача: единый webhook-hub на Python — одна точка POST, верификация подписи, идемпотентность, маршрутизация в CRM / Telegram / email по правилам. Audit log всех событий.

  • FastAPI endpoints /webhook/{source} с HMAC-проверкой;
  • idempotency key (event_id) в Redis — duplicate → 200 без повторной обработки;
  • rule engine YAML: event type → actions (crm.update, telegram.notify, email.send);
  • async workers для тяжёлых действий;
  • PostgreSQL: raw payload, processed_at, error, retry_count;
  • admin UI: replay event, disable source, stats;
  • alert Telegram при error rate > 5%.

Стек: Python, FastAPI, Redis, PostgreSQL, AmoCRM API, aiogram, SendGrid, Docker. Приёмка: 1000 replay событий, 0 duplicate CRM deals.

Итог: интеграции в одном месте; время добавления нового источника — часы, не недели. NDA: SaaS не публикуется.