Stop Staring at Terminal Logs: Visual Webhook Debugging


A webhook is not firing. Or it is firing, but your handler is returning 500. Or it is firing and returning 200, but the data looks nothing like what you expected.

So you fire up ngrok, add fifteen console.log statements, trigger the event manually, wait, scroll through terminal noise, and hope you catch the one line that matters.

There has to be a better way. And now there is.

The Pain of Webhook Debugging

Webhooks are the backbone of modern application integration. But debugging them is stuck in the dark ages.

No Visibility

Once a webhook fires, it disappears. There is no browser DevTools for server-side HTTP requests.

Painful Local Dev

Providers cannot reach localhost:3000. You need a tunnel tool, another process, another terminal tab.

Confusing Signatures

Each provider has a different signing mechanism. Getting it wrong means silent failures with no error messages.

Manual Replays

Something failed? Copy the payload, craft a curl command, hope you got the headers right. Want to replay 50 events? Good luck.

How Depify Webhook Debugger Works

Depify gives you a permanent webhook URL that captures every incoming request and makes it inspectable, replayable, and debuggable.

Provider sends webhook
Depify captures
Parse & verify
Forward to your app
Dashboard view
Smart Provider Parsing

Depify does not just capture raw JSON blobs. It understands the webhooks it receives.

Our smart parser auto-detects the provider and transforms raw payloads into human-readable summaries.

Provider Raw Event Depify Summary
Stripe invoice.payment_succeeded "Payment of $49.99 succeeded for customer cus_abc123"
GitHub push "3 commits pushed to main by @johndoe"
Shopify orders/create "New order #1042 for $127.50 (3 items)"
Twilio MessageStatus "SMS to +1-555-0123 delivered"
SendGrid delivered "Email to user@example.com delivered (open rate: 42%)"
Razorpay payment.captured "Payment of 4,999 INR captured for order ord_xyz"
Payload Editing and Replay

Found a bug in your handler? Fix the code, then replay the exact same webhook with one click. No need to trigger a real event in your test environment.

But Depify goes further. You can edit the payload before replaying.

Change Field Values

Test edge cases by modifying specific values in the payload before replaying.

Add Missing Fields

Test forward compatibility by adding new fields that a provider might introduce.

Remove Fields

Test graceful degradation by removing fields to simulate provider changes.

Modify Event Type

Change the event type to test different webhook handlers with the same payload structure.

// Original Stripe webhook payload
{
  "type": "invoice.payment_succeeded",
  "data": {
    "object": {
      "amount_paid": 4999,
      "currency": "usd",
      "customer": "cus_abc123"
    }
  }
}

// Edit before replay: test a failed payment
{
  "type": "invoice.payment_failed",
  "data": {
    "object": {
      "amount_paid": 0,
      "amount_due": 4999,
      "currency": "usd",
      "customer": "cus_abc123",
      "attempt_count": 3,
      "next_payment_attempt": null
    }
  }
}
Built-in Signature Verification

Each provider signs payloads differently. Depify verifies signatures automatically and shows you the verification result alongside each captured event.

Local Forwarding Tunnel

Depify includes a built-in tunnel that replaces ngrok for webhook development. Set it up with one command.

# Install the Depify CLI
npm install -g @depify/cli

# Start the tunnel
depify tunnel --port 3000 --project my-saas

# Output:
# Tunnel active: https://wh.depify.io/p/my-saas
# Forwarding to: http://localhost:3000/webhooks
# Dashboard: https://app.depify.io/webhooks/my-saas

The tunnel is backed by WebSocket (Action Cable), so it is fast and reliable. Unlike free-tier tunnel tools, there are no request limits, no session timeouts, and no random URLs that change every restart.

Bulk Replay for Outage Recovery

When your webhook handler goes down for an extended period, you can lose hundreds of events. With Depify, every webhook is captured regardless of handler health.

When you recover from an outage, you can filter, select, and bulk replay events.

# Bulk replay via CLI
depify replay \
  --project my-saas \
  --from "2026-03-23T10:00:00Z" \
  --to "2026-03-23T13:00:00Z" \
  --provider stripe \
  --concurrency 5 \
  --delay 200ms \
  --target http://localhost:3000/webhooks/stripe

# Output:
# Found 247 events matching criteria
# Replaying: [=========>          ] 112/247 (45%)
# Success: 110 | Failed: 2 | Pending: 135
Setting Up a Webhook Project

Creating a webhook project in Depify takes 30 seconds.

curl -X POST https://api.depify.io/api/v1/webhook_projects \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_project": {
      "name": "Production Webhooks",
      "forward_url": "https://api.myapp.com/webhooks",
      "providers": ["stripe", "github", "shopify"],
      "signing_secrets": {
        "stripe": "whsec_abc123...",
        "github": "gh_webhook_secret_xyz"
      },
      "retry_policy": {
        "max_retries": 3,
        "backoff": "exponential"
      }
    }
  }'
Getting Started

Webhook debugging is available on all Depify plans. The free tier includes 1 webhook project with 100 captured events.

Pro plans include unlimited projects and 30-day event retention.

Debug Webhooks Visually

Capture, inspect, replay, and forward webhooks from any provider. No more terminal logs.

Start Free Trial