Request Debugger
Special Cloudflare Tunnel with built-in HTTP server and request loggingβperfect for debugging webhooks and testing API integrations.
What is Request Debugger?β
Simple Explanation: Request Debugger is a special tunnel type that includes a built-in HTTP server that logs every incoming request. You don't need a local service runningβjust start the debugger and give the URL to webhook providers.
Perfect for:
- πͺ Webhook development
- π Understanding third-party requests
- π§ͺ API integration testing
- π Inspecting HTTP requests
- π Debugging external services
How It Differs from Standard Tunnelβ
Standard Tunnelβ
Your Local Service (must be running)
β
Cloudflare Tunnel
β
Public URL β Your Service
Requirements:
- Local service must be running
- Must handle requests properly
- Need to check service logs
Request Debuggerβ
Built-in HTTP Server (automatic)
β
Cloudflare Tunnel + Request Logging
β
Public URL β Logs Everything
Features:
- No local service needed
- Automatic port selection
- Logs all requests
- Visual request inspector
Creating Request Debuggerβ
Step 1: Create Newβ
Cloudflare Tunnels tab
β Click "New Tunnel"
β Select "Request Debugger"
or
Click "New Request Debugger" directly
Step 2: Configureβ
ββββββββββββββββββββββββββββββββββββββββββ
β New Request Debugger β
ββββββββββββββββββββββββββββββββββββββββββ€
β Name: * β
β [Stripe Webhook Testing ] β
β β
β Description: β
β [Debug Stripe payment webhooks] β
β β
β [β] Auto-start β
β β
β [Cancel] [Create] β
ββββββββββββββββββββββββββββββββββββββββββ
Step 3: Start & Get URLβ
Click "Create" β Click "Start"
Status: Starting... β Active β
Public URL generated:
https://webhook-test-5f2c.trycloudflare.com
Copy and use this URL for webhooks!
Viewing Request Logsβ
Request Listβ
Click tunnel to open details:
ββββββββββββββββββββββββββββββββββββββββββββββ
β Webhook Testing - Request Log β
ββββββββββββββββββββββββββββββββββββββββββββββ€
β [Clear Logs] [Export] [Auto-scroll]β
ββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 2:45:32 PM POST /webhook/stripe β
β 200 OK β
β Content-Type: application/json β
β [View Details] β
β β
β 2:44:18 PM POST /api/callback β
β 200 OK β
β Content-Type: application/json β
β [View Details] β
β β
β 2:43:05 PM GET / β
β 200 OK β
β Content-Type: text/html β
β [View Details] β
ββββββββββββββββββββββββββββββββββββββββββββββ
Shows:
- β° Timestamp
- π€ Method (GET, POST, PUT, DELETE, etc.)
- π Path
- β Status code
- π Content-Type
- π View details button
Request Detailsβ
Click "View Details" to see everything:
ββββββββββββββββββββββββββββββββββββββββββββββ
β Request Details [β] β
ββββββββββββββββββββββββββββββββββββββββββββββ€
β Time: 2:45:32 PM β
β Method: POST β
β Path: /webhook/stripe β
β Status: 200 OK β
β β
β βββ Headers ββββββββββββββββββββββββββββββ β
β Content-Type: application/json β
β User-Agent: Stripe/1.0 β
β Stripe-Signature: t=123,v1=abc... β
β Content-Length: 1234 β
β β
β βββ Query Parameters βββββββββββββββββββββ β
β event_type: payment_intent.succeeded β
β test: true β
β β
β βββ Body βββββββββββββββββββββββββββββββββ β
β { β
β "id": "evt_123", β
β "object": "event", β
β "type": "payment_intent.succeeded", β
β "data": { β
β "object": { β
β "id": "pi_123", β
β "amount": 2000, β
β "currency": "usd" β
β } β
β } β
β } β
β β
β βββ Response βββββββββββββββββββββββββββββ β
β 200 OK β
β {"received": true} β
β β
β [Copy JSON] [Export] [Close] β
ββββββββββββββββββββββββββββββββββββββββββββββ
Everything captured:
- β Full headers
- β Query parameters
- β Request body
- β Response sent
- β Formatted JSON
Use Casesβ
1. Stripe Webhook Testingβ
Scenario: Testing Stripe payment webhooks
Steps:
1. Create Request Debugger:
Name: Stripe Webhooks
2. Start and copy URL:
https://stripe-test-123.trycloudflare.com
3. In Stripe Dashboard:
β Developers β Webhooks
β Add endpoint
β Paste URL + /webhook
β Select events
4. Trigger test event in Stripe
5. View request in Xermius:
- See webhook data
- Check Stripe-Signature header
- Verify event format
What you see:
{
"id": "evt_1234567890",
"type": "payment_intent.succeeded",
"data": {
"object": {
"id": "pi_1234567890",
"amount": 5000,
"currency": "usd",
"status": "succeeded"
}
}
}
Stripe-Signature header captured:
t=1678886400,
v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
2. GitHub Webhook Developmentβ
Scenario: Building GitHub webhook integration
Steps:
1. Start Request Debugger
2. Copy URL:
https://github-hook-xyz.trycloudflare.com
3. In GitHub repo settings:
β Webhooks β Add webhook
β Payload URL: [paste URL]
β Content type: application/json
β Events: Push, Pull request
4. Make a commit or PR
5. See webhook in real-time:
- Full payload
- Headers
- Signature verification data
3. Payment Gateway Testingβ
Scenario: Testing payment callback
Setup:
Request Debugger URL:
https://payment-test-abc.trycloudflare.com/callback
Configure in payment gateway:
Callback URL: https://payment-test-abc.trycloudflare.com/callback
Make test payment
View callback details:
- Transaction ID
- Status
- Amount
- Customer data
4. OAuth Callback Testingβ
Scenario: Testing OAuth flow
Steps:
1. Start debugger
2. Use as OAuth redirect URI:
https://oauth-test-456.trycloudflare.com/callback
3. Configure in OAuth provider
4. Initiate OAuth flow
5. See callback:
- Authorization code
- State parameter
- Query parameters
5. API Integration Understandingβ
Scenario: Third-party will call your API
Problem: Don't know request format
Solution:
1. Give them Request Debugger URL
2. They make test requests
3. You see EXACTLY what they send:
- Headers
- Authentication
- Body format
- Query params
4. Now you know how to build your API!
Managing Logsβ
Auto-scrollβ
[β] Auto-scroll
New requests automatically scroll to top
Always see latest
Perfect for real-time testing
Clear Logsβ
Click "Clear Logs" button
Removes all logged requests
Fresh start
(Note: Can't be undone)
Export Logsβ
Click "Export" button
Export formats:
- JSON (all request data)
- CSV (summary)
- HAR (HTTP Archive)
Use for:
- Documentation
- Bug reports
- Analysis
Filter Requestsβ
Search bar:
[Search requests... ]
Filter by:
- Path (/webhook)
- Method (POST)
- Status (200)
- Content
Quick find specific requests
Delete Single Requestβ
Hover over request
β Click Γ button
β Request removed
Remove test requests
Keep logs clean
Request Details Featuresβ
Copy Functionsβ
Copy JSON:
Click "Copy JSON"
β Request body copied to clipboard
β Paste into code editor
β Use in tests
Copy Headers:
Right-click header
β Copy header
β Use for testing
Copy URL:
Copy full request URL
Test in curl, Postman, etc.
Export Individual Requestβ
Export button in details
β Save as JSON file
β Share with team
β Document API format
Test Responseβ
View what was sent back:
Response section shows:
- Status code (200, 404, etc.)
- Response body
- Response time
Debugger always responds with:
200 OK
{"received": true}
Tips & Best Practicesβ
1. One Debugger Per Integrationβ
Don't:
β Use one debugger for everything
Do:
β Stripe Webhooks β Debugger 1
β GitHub Webhooks β Debugger 2
β Payment Gateway β Debugger 3
Easier to organize
Clear logs per service
2. Name Descriptivelyβ
Good names:
β "Stripe - Payment Webhooks"
β "GitHub - PR Events"
β "PayPal - IPN Testing"
Bad names:
β "Debug 1"
β "Test"
3. Clear Logs Between Testsβ
Before new test:
β Click "Clear Logs"
β Fresh start
β No confusion with old requests
4. Export Before Closingβ
Found useful request?
β Export it
β Save for reference
β Use in documentation
5. Use Specific Pathsβ
Give webhook providers specific paths:
β https://xyz.trycloudflare.com/stripe/webhook
β https://xyz.trycloudflare.com/github/events
β https://xyz.trycloudflare.com/paypal/ipn
Not just:
β https://xyz.trycloudflare.com
Easier to identify requests
6. Test Signaturesβ
Many webhooks include signatures:
- Stripe: Stripe-Signature
- GitHub: X-Hub-Signature
- PayPal: X-Paypal-Signature
Check these in request details
Verify signature format
Use for implementation
Troubleshootingβ
No Requests Appearingβ
Issue: Started debugger but no requests
Check:
1. Tunnel status: Active?
2. Correct URL configured?
3. Webhook provider sent request?
4. Check provider's webhook logs
Test:
# Send test request
curl -X POST https://your-url.trycloudflare.com/test \
-H "Content-Type: application/json" \
-d '{"test": true}'
Should appear in logs immediately
Can't See Request Bodyβ
Issue: Request body empty
Cause: Content-Type not set
Solution:
Check request headers
Ensure Content-Type is set:
- application/json
- application/x-www-form-urlencoded
- etc.
Body parsed based on Content-Type
Logs Disappearedβ
Issue: Logs cleared accidentally
Prevention:
Export important logs
Keep as backup
Can't recover deleted logs
Advanced Featuresβ
Custom Responses (Future)β
Coming soon:
- Configure custom responses
- Return specific status codes
- Simulate errors
- Response delays
Request Filteringβ
Coming soon:
- Filter by method
- Filter by path
- Filter by status
- Advanced search
Webhook Replayβ
Coming soon:
- Save requests
- Replay to local service
- Test your implementation
Next Stepsβ
- π‘ Use Cases - More examples
- β Creating Tunnels - General guide
- π Overview - Learn more