Webhook testing is one of the most common use cases for tunneling. Services like Stripe, GitHub, Twilio, and Slack need to send HTTP callbacks to your application — but during development, your server is running on localhost. Tunels bridges that gap securely.
Why You Need a Tunnel for Webhooks
When you integrate a third-party service that sends webhooks, that service needs a publicly accessible URL to send HTTP POST requests to. During development, your application runs on localhost:3000 or similar — invisible to the outside world.
Without a tunnel, developers often resort to deploying to a staging server just to test a webhook handler. This creates a slow feedback loop: write code, push, deploy, wait, test, repeat. With Tunels, you get instant feedback on your local machine.
Getting Started
First, install the Tunels CLI and authenticate:
tunels auth login
tunels http 3000
This exposes your local port 3000 at a public HTTPS URL like https://myapp.tunels.io. Copy that URL and paste it into your webhook provider's settings.
Testing Stripe Webhooks
Stripe is one of the most popular webhook providers. Here's how to set it up:
- Start your local server (e.g.,
node server.json port 3000) - Run
tunels http 3000 - Copy the tunnel URL (e.g.,
https://abc123.tunels.io) - In Stripe Dashboard → Developers → Webhooks → Add endpoint
- Paste your tunnel URL + webhook path:
https://abc123.tunels.io/api/webhooks/stripe - Select the events you want to receive
- Trigger a test event from Stripe
Your local server receives the webhook instantly. You can set breakpoints, inspect the payload, and debug in real-time.
Testing GitHub Webhooks
GitHub webhooks work the same way. Navigate to your repository → Settings → Webhooks → Add webhook, and paste your tunnel URL. GitHub will send push events, PR events, and issue events directly to your local machine.
Security Considerations
Tunels tunnels are encrypted with TLS end-to-end. However, always verify webhook signatures in your handler code. Stripe sends a Stripe-Signature header, GitHub sends X-Hub-Signature-256, and Slack sends its own signing secret. Never skip signature verification, even in development.
Inspecting Webhook Payloads
Tunels provides a local web UI at http://localhost:4040 where you can inspect all incoming HTTP requests. You can see headers, request body, response status, and timing — making it easy to debug webhook integrations without adding extra logging to your code.
Conclusion
Webhook testing doesn't have to be painful. With Tunels, you get a secure, instant tunnel to your local server. No deployment, no staging servers, no waiting. Just tunels http 3000 and start building.