Keep webhook events forever — queryable, searchable, joinable
Stripe deletes events after 30 days. GitHub keeps deliveries for 30 days. Centrali stores the payload as a queryable record that outlives the sender's retention window.
The 30-day cliff
You integrate Stripe, GitHub, or any webhook sender into your platform. For the first month, everything works fine. Then a customer disputes a charge in month four.
Stripe — 30-day retention
Events are queryable in the Stripe Dashboard for 30 days. After that, gone. You can't trace the original request, can't replay it, can't build a historical audit trail.
GitHub — 30-day delivery history
Webhook deliveries are available for 30 days via the webhook details page. A security incident in month three? The delivery logs are already deleted.
DIY webhook system — retention is a decision you avoid
Most teams keep events as long as the database table exists. When it grows too large, you delete the old ones. Now you own a retention policy nobody documented.
We store events as records, not deliveries
Competitors keep delivery metadata — when it was sent, how many retries, did it succeed. We keep the business event itself.
| Aspect | Competitors | Centrali |
|---|---|---|
| What is kept | Delivery metadata: attempt count, response status, timestamp | The full event payload as a record in your collection |
| Retention window | 30 days (Stripe, GitHub) or self-managed | Forever, in your workspace. You control archival. |
| Query and search | Via the sender's dashboard (if at all) | Via saved queries, full-text search, joins with your data |
| Reconciliation in month 4 | Request lost, event lost, no audit trail | Event record found, linked to your data, replay if needed |
How it works
Inbound webhooks arrive at Centrali, pass signature verification, and become records in a collection. Now they're queryable, joinable, and yours forever.
Webhook arrives
GitHub sends a webhook event to your Centrali endpoint. Signature is verified at the HTTP layer.
Becomes a record
The verified payload is automatically stored as a record in your collection. Centrali tracks the original event ID, type, and timestamp.
Query anytime
Save a query that finds all webhook events matching a condition — 'payments over $1,000' or 'failed deployments'. Run it years later.
Join with your data
Link webhook events to your own records via saved queries. Match Stripe payments to your orders. Connect GitHub pushes to your deployments.
Query events like you query any other data
When a customer disputes a charge in month four, you can find the original event and every action taken in response.
// Define a saved query in the console or via APIconst eventQuery = {resource: 'stripe-events',where: {and: [{ 'data.type': { eq: 'charge.dispute.created' } },{ 'data.amount': { gte: 50000 } },{ 'createdAt': { gte: '2026-01-01T00:00:00Z' } }]},select: { fields: ['id', 'data.id', 'data.amount', 'data.reason', 'createdAt'] }};// Run it anytimeconst disputes = await api.queryRecords('stripe-events', eventQuery);return disputes.data;
Stored queries run over your collections. Events stored as records are queryable; events stored only in a delivery log are not.
Built for teams that need audit trails
Compliance and dispute resolution
Every external event is a record. Link it to your actions. Prove you handled it correctly or replay if needed.
Debugging production incidents
A webhook didn't fire, or fired twice. Search the full event history. Correlate with your logs. Replay the specific event to reproduce.
Long-tail analytics
What percentage of GitHub workflows fail? Which Stripe events take longest to process? Query years of history in one saved query.
Migrating off a webhook service
Stop paying for Svix or Hookdeck? Export the events, replay them into Centrali, and switch to the built-in webhook subsystem.
Trace events end-to-end
Every inbound event, record change, and outbound delivery carries a correlation ID. Follow a single webhook through the entire system.
A GitHub webhook arrives → becomes a record → triggers a function → emits an outbound webhook to your customer. One correlation ID ties them all together. Query the Event Log to see the entire chain.
How we compare
Competitors in the webhook space focus on delivery reliability. We focus on what makes the event worth keeping in the first place.
Svix and Hookdeck hold SOC 2 Type II; we do not. On reliability and compliance certifications, they are the stronger choice. We differentiate on the business event itself.
| Feature | Centrali | Svix | Hookdeck |
|---|---|---|---|
| Store event payloads long-term | — | — | |
| Query events with saved queries | — | — | |
| Join events with your own data | — | — | |
| HMAC signing and retries | |||
| Delivery log and replay | |||
| SOC 2 Type II certification | — | ||
| Per-customer delivery dashboard | — |
Related capabilities
Signed webhook delivery
HMAC signing, secret rotation, signature verification
Webhook replay and DLQ
Failed deliveries, manual replay, dead-letter queue
Best webhook infrastructure tools
Compare Svix, Hookdeck, Inngest, and Centrali
Verify webhook signatures
Cross-provider signature verification without a preset
Compare: Centrali vs Svix
Detailed feature and pricing comparison
Compare: Centrali vs Hookdeck
Detailed feature and pricing comparison
Never lose an event again
Store webhook events as queryable records that outlive the sender's retention window. Start free today.
5-minute setup. No credit card.
View the docs →