Compared with alternatives
Good Webhooks against Svix, Outpost, Convoy, and pg-boss plus fetch. What each does, what this library does not have, and when to pick which.
Four other ways to send webhooks from an application, checked against their own documentation, repositories, and pricing pages on 27 October 2026. The notes on the table give the detail behind each cell, and the sources are listed at the end. Open an issue if a claim is out of date.
| Option | What it is |
|---|---|
| Svix | Hosted service |
| Outpost | Go event gateway |
| Convoy | Go webhook gateway |
pg-boss plus fetch | Job queue plus your code |
Svix is a hosted webhook service with an open-source Rust server that covers part of it.
Outpost is a Go event-destinations gateway by Hookdeck, self-hosted or managed, that sends to webhooks and message queues.
Convoy is a Go webhook gateway with a dashboard, self-hosted or cloud, with paid features behind a license key.
pg-boss plus fetch is a PostgreSQL job queue for Node.js plus about 50 lines of your own that sign and send each request.
What each does
| Feature | Good Webhooks | Svix | Outpost | Convoy | pg-boss |
|---|---|---|---|---|---|
| Outbox | Yes | No | No | No | Yes |
| Signing spec | Standard | svix-* names | Optional | Own | Build it |
| Retries | 8 over 28 h | 8 over 28 h | 10 over 8.5 h | Configurable | 2, no delay |
| Auto-pause | Yes | Yes | Optional | Optional | No |
| Replay | Yes | Yes | Per event | Yes | retry() |
| Headers | Yes | Yes | Yes | Per event | Build it |
| Rate limits | No | Yes | No | Yes | No |
| Dashboard | No | Hosted only | Portal | Yes | Jobs only |
| Pull API | No | Enterprise | No | No | No |
| Transforms | No | Hosted only | No | Paid | Build it |
| Storage | PostgreSQL | PostgreSQL | Redis, DB, MQ | PG and Redis | PostgreSQL |
| Hosting | Library | Cloud or self | Cloud or self | Cloud or self | Library |
| License | MIT | MIT | Apache 2.0 | ELv2 | MIT |
| Price | Free | Free tier | Free to run | Free to run | Free |
Notes on the table
- Outbox in your own transaction
- Good Webhooks: yes,
publish()joins your transaction. - Svix: no, you call its HTTP API and keep your own outbox.
- Outpost: no, you call its HTTP API or write to a queue.
- Convoy: no, you call its HTTP API or a broker.
- pg-boss plus
fetch: yes,send()takes your transaction.
- Good Webhooks: yes,
- Signing standard
- Good Webhooks: Standard Webhooks with HMAC-SHA256.
- Svix: Standard Webhooks under
svix-*names,webhook-*on paid plans or by a server switch. - Outpost: its own
x-outpost-signatureby default, Standard Webhooks as an option. - Convoy: its own
X-Convoy-Signature, not Standard Webhooks. - pg-boss plus
fetch: none, you sign each request yourself.
- Retries and
Retry-After- Good Webhooks: eight attempts over about 28 hours, and
Retry-Afteron429and503. - Svix: the same eight-step schedule, with
Retry-Afterfound only in the open-source code. - Outpost: ten retries, exponential from 30 seconds (about 8.5 hours), and
Retry-Afternot found. - Convoy: linear or exponential backoff per project, and
Retry-Afternot found. - pg-boss plus
fetch: two retries with no delay by default, andRetry-Afteris yours to parse.
- Good Webhooks: eight attempts over about 28 hours, and
- Pause on failing endpoints
- Good Webhooks: automatic after five days of failures or a
410, resume by API. - Svix: automatic after five days of failures, re-enable by API or in the dashboard.
- Outpost: off by default; when on, after 100 consecutive failures.
- Convoy: dead endpoints when
disable_endpointis on, plus a circuit breaker on paid plans. - pg-boss plus
fetch: none, exhausted jobs go to a dead letter queue if you set one.
- Good Webhooks: automatic after five days of failures or a
- Replay
- Good Webhooks: one delivery or one page of an endpoint's deliveries, same event ID and body.
- Svix: one message, recover failed from a date, or replay missing.
- Outpost: one event to one destination per call.
- Convoy: one delivery or a filtered batch, plus a force retry for successes.
- pg-boss plus
fetch:retry()on a failed job, and each retry overwrites the last attempt.
- Per-endpoint headers
- Good Webhooks: yes.
- Svix: yes.
- Outpost: yes, off in the portal by default.
- Convoy: per event, plus one API-key header per endpoint.
- pg-boss plus
fetch: you build it.
- Rate limiting to receivers
- Good Webhooks: no, only a per-endpoint
maxInFlightcap. - Svix: yes, a messages-per-second
throttleRateper endpoint. - Outpost: no, excluded by design.
- Convoy: yes,
rate_limitper endpoint. - pg-boss plus
fetch: no, only group concurrency and throttled sends.
- Good Webhooks: no, only a per-endpoint
- Dashboard or portal
- Good Webhooks: neither.
- Svix: both on the hosted service, neither in the open-source server.
- Outpost: a receiver portal ships in the open-source repository.
- Convoy: a dashboard in the community edition, and Portal Links on paid plans.
- pg-boss plus
fetch: a job dashboard package, no receiver portal.
- Receiver pull API
- Good Webhooks: no.
- Svix: polling endpoints on the Enterprise plan.
- Outpost: no.
- Convoy: no.
- pg-boss plus
fetch: no.
- Transformations
- Good Webhooks: no.
- Svix: JavaScript on the hosted service.
- Outpost: no, only through the separate Hookdeck Event Gateway.
- Convoy: JavaScript on paid plans.
- pg-boss plus
fetch: whatever your handler does.
- Storage
- Good Webhooks: your PostgreSQL.
- Svix: PostgreSQL plus optional Redis when self-hosted, not documented when hosted.
- Outpost: Redis, PostgreSQL or ClickHouse, and a message queue.
- Convoy: PostgreSQL 15 or later, plus Redis 6 or later unless you use its experimental paid PostgreSQL queue.
- pg-boss plus
fetch: your PostgreSQL.
- Hosting model
- Good Webhooks: a library in your app plus a worker you run.
- Svix: hosted service, self-hosted Rust server, or on-prem on Enterprise.
- Outpost: self-hosted Go service, or managed by Hookdeck.
- Convoy: self-hosted Go service, Convoy Cloud, or on-prem on Enterprise.
- pg-boss plus
fetch: a library in your app plus a worker you run.
- License
- Good Webhooks: MIT.
- Svix: MIT for the server and SDKs.
- Outpost: Apache 2.0.
- Convoy: Elastic License 2.0, which is source-available.
- pg-boss plus
fetch: MIT.
- Price
- Good Webhooks: free.
- Svix: free to 50k messages a month, then from $20 or $490 a month plus $0.0001 per message.
- Outpost: free to self-host, managed from $10 per million events after 50k free.
- Convoy: free to self-host with 1 user and 2 projects, then $999 a month, or $99 or $499 cloud.
- pg-boss plus
fetch: free.
General notes:
- The pg-boss column means pg-boss plus
fetch. - The default Good Webhooks retry schedule is the one Svix publishes.
- Svix's open-source server caps a
Retry-Afterwait at twice the scheduled delay, and the hosted service documents neitherRetry-Afternor410. - Endpoint management with the Better Auth plugin lives in your Better Auth database, whatever its engine, and delivery stays on PostgreSQL.
- Good Webhooks encrypts per-endpoint headers at rest and reserves
webhook-*,content-type, anduser-agent. - "Not found" in a note means the feature appears in neither the documentation nor the source on the check date.
What Good Webhooks does not have
- A dashboard. Svix's hosted service and Convoy ship one, and here you build admin pages on
deliveries.list(). - A receiver portal. Svix's hosted service, Outpost, and Convoy's paid plans give endpoint owners a UI, and here the Better Auth routes give signed-in users endpoint management without a UI.
- Transformations. Svix runs JavaScript per endpoint and Convoy on broker sources, and here the validated payload is sent as is.
- mTLS to receivers. Svix and Convoy offer it on Enterprise plans.
- Rate limiting to receivers. Svix and Convoy accept a per-endpoint rate, and here each endpoint has only a
maxInFlightcap of 2 by default. - Storage other than PostgreSQL. Delivery needs PostgreSQL 16, 17, or 18, and nothing else is supported.
- A hosted service. Svix, Outpost, and Convoy each run one.
- Ordering guarantees. Svix sells FIFO endpoints on Enterprise and pg-boss has a strict FIFO policy per key, and here delivery is at least once with no order, so receivers compare versions.
- Senders in other languages. The sender is TypeScript on Node.js 24 or later, while receivers in any language verify with any Standard Webhooks library.
The roadmap marks the dashboard, portal, transformations, mTLS, other delivery databases, and a hosted service as not planned, and a per-endpoint rate limit as a candidate after 0.6.0.
When to pick which
- Svix when you want a hosted service with a receiver portal, an SLA, and SDKs in nine languages, and you accept a per-message bill and an outbox of your own for atomicity.
- Its open-source server is the choice when you want that API on your own PostgreSQL without the portal.
- Outpost or Convoy when several services in different languages publish events, or you need queue destinations (Outpost) or broker ingestion with a dashboard (Convoy), and you can run a Go service with Redis and more.
- Convoy is Elastic License 2.0, and its community edition allows 1 user and 2 projects.
- pg-boss plus
fetchwhen you send to a few endpoints you control, nobody registers their own, and the last attempt is all the history you need.- The 50 lines grow with the Standard Webhooks checklist: SSRF checks,
410,Retry-After, secret rotation, attempt history, and replay by event ID.
- The 50 lines grow with the Standard Webhooks checklist: SSRF checks,
- Good Webhooks when a TypeScript app on PostgreSQL lets users or organizations register endpoints, you want each event committed with your data and no new service, and you can run a worker and build any UI yourself.
Sources
All checked on 27 October 2026.
- Svix: retries, signature verification, throttling, custom headers, App Portal in open source, polling endpoints, FIFO endpoints, transformations, reliability guide, pricing, server README, license, and releases (server 1.103.0, 26 October 2026).
- Outpost: overview, publishing, webhook destination, event delivery, operator events, tenant portal, architecture, deployment, pricing, license, and releases (1.7.0, 23 October 2026).
- Convoy: sources, signatures, retries, circuit breaker, dead endpoints, endpoints, portal links, functions, architecture, paid features, pricing, license, and releases (26.9.2, 20 October 2026).
- pg-boss: README, adapters and transactions, jobs, queues, dashboard, license, and the npm registry (12.38.0, 13 October 2026).
- Standard Webhooks: the specification for the sender checklist.
- Good Webhooks: delivery guarantees, retries and replay, security model, and the changelog for 0.6.0 and the 0.7.0 plan.