Show HN: Basehook – Webhook management system built on Postgres (github.com)

1 points by mehdig10 ↗ HN
Hi HN! I built Basehook to automate common webhook patterns I've had to manually implement across multiple projects: buffering, smart deduplication, and payload inspection.

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.

3 comments

[ 3.0 ms ] story [ 19.7 ms ] thread
why postgres for this? feels heavy for a queue. tried something similar with redis and it was way simpler
Great work! Can you manage back pressure towards webhook senders in the interface? For example, responding with 429 when volume is potentially approaching or exceeding throughput capacity.
Thanks !

Since we're storing events in an intermediate collection and you consume them at your own rate, there is actually no need for this. They will just pile up until you can consume them