Stop Debugging Webhooks Blind
Integrating webhooks from Stripe, GitHub, Shopify, or any service? You need to see what's actually hitting your endpoint:
- What headers does Stripe actually send?
- Is the payload in the format you expected?
- Why does signature verification keep failing?
- Did the webhook even fire at all?
- Can you replay it without triggering the event again?
Deploy your own webhook inspector in 5 minutes.
How It Works
Everything You Need for Webhook Development
Inspect, debug, and replay webhooks from any service
Inspect Every Detail
View headers, body, query params, and method for every incoming webhook. Syntax-highlighted JSON with resizable panels.
Replay Webhooks
Forward captured webhooks to any target URL with original headers and raw body. Perfect for testing signed webhooks like Stripe.
Copy as cURL
One-click cURL export preserving the exact raw body bytes. Reproduce any webhook from your terminal.
Real-Time Feed
Live polling shows incoming webhooks as they arrive. Method badges, relative timestamps, and expandable details.
Auto-Cleanup
Hooks older than 7 days are automatically deleted. No manual maintenance needed.
Raw Body Preservation
Stores the original raw request body for faithful replay of signed webhooks (Stripe, GitHub, Shopify).
Two Files. Full Webhook Inspector.
The entire inspector is just two files — a backend with REST API routes and a single-page frontend. Small enough for any coding agent to understand and customize in one shot.
index.js— API routes, webhook catching, replay, cleanup cronpublic/index.html— Dark mode UI with Tailwind CDN- Built-in NoSQL database — no external DB needed
- Serverless — scales automatically, no infra to manage
The catch-all webhook handler:
import { app, Datastore } from 'codehooks-js';
// Catch any webhook sent to /hook/:uuidconst catchHandler = async (req, res) => { const { uuid } = req.params; const conn = await Datastore.open();
// Store with raw body for signed replay await conn.insertOne('hooks', { endpointId: uuid, method: req.method, headers: req.headers, body: req.body, rawBody: req.rawBody || '', query: req.query, timestamp: new Date().toISOString() });
res.json({ received: true });};
// Register for all HTTP methods['get','post','put','patch','delete'] .forEach(m => app[m]('/hook/:uuid', catchHandler));Webhook Inspector Comparison
How this Codehooks template compares to other webhook testing tools
| Feature | Codehooks | RequestBin | Webhook.site | Beeceptor |
|---|---|---|---|---|
| Own your code & data | ✓ | ✗ | ✗ | ✗ |
| Replay to target URL | ✓ | ✗ | Paid | Paid |
| Raw body preservation | ✓ | ✗ | ✗ | ✗ |
| Copy as cURL | ✓ | ✓ | ✓ | ✓ |
| Full source code | ✓ | ✗ | ✗ | ✗ |
| Custom domain | Paid | ✗ | Paid | Paid |
| AI-customizable | ✓ | ✗ | ✗ | ✗ |
| Cost | Free | Free | $24/mo | $15/mo |
Built for Every Webhook Integration
Debug and test webhooks from any service
Payment Webhooks
Test Stripe, PayPal, and Shopify payment events. Verify signature headers work before going to production.
checkout.completed • payment.succeeded • refund.createdCI/CD & DevOps
Inspect GitHub, GitLab, and Bitbucket webhook payloads. Debug deployment triggers and PR events.
push • pull_request • deployment_statusSaaS Integrations
Debug webhooks from any SaaS service. Replay captured events against your staging environment.
user.created • invoice.paid • form.submittedMore Webhook Templates
Inspecting webhooks is just the start — handle, deliver, and process them too
Ready to Debug Webhooks Without the Guesswork?
Deploy your own webhook inspector in 5 minutes. Free to start, full source code included.
Webhook Inspector FAQ
Common questions about catching, inspecting, and replaying webhooks
What is a webhook inspector?
How is this different from RequestBin or Webhook.site?
Can I replay Stripe webhooks with valid signatures?
stripe-signature. As long as the signature hasn't expired (Stripe allows 5 minutes), the replay will pass verification.How does the replay feature work?
Is my webhook data secure?
Can I use this for production webhook testing?
What HTTP methods does it support?
How do I customize the inspector?
index.js (backend routes) and public/index.html (frontend UI). Modify the code directly or use a coding agent — the codebase is small enough for an AI to understand and modify in a single context window.