The core idea: webhooks are stored in Postgres, grouped by thread ID and revision number. You can then consume them either:
- One by one (process every update in order)
- Buffered (skip to the latest revision, ignore outdated ones)
This is useful when you only care about the final state. Example: A Slack bot receives 5 edits to the same thread. Instead of processing all 5, you can only process the thread once and call the Slack API to fetch the full thread content once.
It works by extracting thread IDs and revision numbers from webhook payloads via configurable JSON paths, so it supports any format (Slack, GitHub, Shopify, or custom).
Built with FastAPI, React, and PostgreSQL. The UI lets you configure webhooks and view all received payloads, with the ability to re-queue if needed.
dmarwicke•27m ago
mehdig10•40s ago