Build your own webhook transport
How to build a webhook registry and delivery system on Postgres using outbox rows, delivery attempts, signatures, retries, and inbound inbox rows.
Technical essays, diagrams, and interactive demos about durable systems, architecture tradeoffs, and production code.
Series
A practical path from one Postgres claim loop to recovery, idempotency, competing workers, stable ownership, and cross-service handoffs.
Start with the introductionTopics
Writing
How to build a webhook registry and delivery system on Postgres using outbox rows, delivery attempts, signatures, retries, and inbound inbox rows.
Minimal Postgres claim loop: enqueue, SKIP LOCKED claim, complete, and handler retry with an interactive simulation.
Leases, lease cleanup, at-least-once delivery, and handler idempotency for Postgres inbox workers.
Multi-worker contention, delivery guarantees, and per-key ordering before consistent hash.
Consistent hash, heartbeats, rebalance windows, and multi-worker simulation with ring ownership.
Lease renewal, fencing, graceful drain, and housekeeping for Postgres-backed durable work after order:9182 ships.
How to choose inbox, outbox, projection, CDC, and saga patterns when implementing durable work in Postgres.
Transactional outbox, transport choices, webhooks, contracts, and when brokers fit. Work that leaves your database commit.
Full Postgres schema, inbox SQL, observability, testing, and schema evolution for order:9182.
Claim-path tuning, indexes, and an interactive performance tuner for Postgres claim loops.
How to extend a Postgres durable queue into a simple durable workflow engine with workflow definitions, step scheduling, timers, signals, and versioning.
How Postgres durable work fits with DDD, domain events, transactional outbox, event sourcing, CQRS projections, sagas, CDC, and workflow engines.
Theme lab
⌘/Ctrl⇧. to toggle