Core

Test Your Webhook Handler Without Triggering Real Payments

You just wrote a new invoice.payment_failed handler. To test it with Stripe's own test event feature, you'd need to: set up a Stripe test mode customer, create a test subscription, configure a test payment method that fails, trigger the failure, wait for Stripe to send the event.

That's 15 minutes of setup for a 30-second test. And the test only fires against whatever test Stripe endpoint you've configured in the dashboard — which might not be your local server.

HookTunnel's Send Test Event fires a realistic, schema-accurate payload to any hook in your account, directly from the dashboard. No provider setup. No test mode. No waiting.

What Send Test Event does

Click "Send Test Event" on any hook. Choose a provider type (Stripe, Twilio, or generic). Choose the event type. Edit the payload if needed. Fire.

The event arrives at your hook URL — the same URL your real provider uses — and your handler processes it exactly as if it were a real event.

The payloads aren't documentation examples. They're based on the actual field structure of real provider events, including nested objects, optional fields at their common defaults, and metadata fields that providers include but rarely document.

Provider-specific test events

Stripe

Available event types include:

  • payment_intent.succeeded — with realistic amounts, customer data, and payment method
  • payment_intent.payment_failed — with last_payment_error details
  • customer.subscription.updated — with previous_attributes showing what changed
  • invoice.payment_failed — with attempt count and next attempt timestamp
  • customer.subscription.deleted — cancellation scenario

Twilio

  • voice.call.initiated — inbound call with From/To numbers
  • voice.call.completed — with duration and recording status
  • sms.received — with message body and media

Generic / Custom

A base event structure you can freely edit. Any JSON body, any headers.

The guided prompt

Not sure which event type tests your use case? The guided prompt asks: "What scenario are you testing?" and recommends the most relevant event type.

Examples:

  • "User upgrades their subscription" → customer.subscription.updated with status: active
  • "Payment fails and needs retry" → invoice.payment_failed with attempt_count: 1
  • "Subscription is cancelled" → customer.subscription.deleted

Test the full chain

Send Test Event integrates with the outcome receipt flow. After sending a test event, HookTunnel waits for a receipt — if your handler is configured to send receipts, you can test the entire chain:

  1. Send test event → handler receives it
  2. Handler writes to DB, sends receipt
  3. HookTunnel shows Applied Confirmed

This tests not just your handler's HTTP response but whether the full processing pipeline works end-to-end.

Frequently asked questions

Does Send Test Event affect my real Stripe account? No. The event is synthetic — it's generated by HookTunnel, not by Stripe. It doesn't create any records in your Stripe account.

Does it use my real webhook URL? Yes. The test event is fired to the same hook URL that your provider uses. Your handler receives it exactly as it would a real event.

Can I customise the test payload? Yes. The payload is fully editable before sending. Modify amounts, customer IDs, event types, or any field.

Can I use this to test receipt integration? Yes. Pair it with the "Test Receipt" button (in the Receipt Setup section) to verify the full Paid → Delivered → Applied chain.

What providers are supported? Stripe, Twilio, and generic/custom in V1. More providers coming.

Can I save a custom test payload for reuse? Not yet — V1 generates a fresh payload each time. Custom payload templates are on the roadmap.

Send your first test webhook in 30 seconds

No provider setup required. Realistic payloads for Stripe, Twilio, and custom events.

Get started free →