Testing webhooks
Three approaches for testing your webhook handler before going to production.
1. Built-in test button
The simplest option. From Settings → Developer → Webhooks → [your webhook] → Test:
- Select an event type to simulate (e.g.,
delivery.delivered) - Click Send test
- Active Reach fires a sample payload to your registered URL
- The UI shows the HTTP response code and body your server returned
Use this to verify your endpoint is reachable and responding correctly.
2. Local development with ngrok
For testing against a local server:
# Start your local webhook handler
node server.js # listening on http://localhost:3000/webhooks
# Expose it via ngrok
ngrok http 3000
# → https://abc123.ngrok.ioRegister the ngrok URL as your webhook endpoint (temporarily). Fire test events from the UI and inspect the full request in your local server logs + the ngrok dashboard.
ngrok URLs change every restart (on the free plan). Don’t forget to update the webhook URL after restarting ngrok.
3. Request inspection with webhook.site
For quick inspection without writing any code:
- Go to webhook.site and copy the unique URL
- Register that URL as your webhook endpoint in Active Reach
- Fire test events — every delivery appears on webhook.site with full headers and body
- Inspect the payload structure and signature header
Useful for understanding the payload format before writing your handler.
Verifying signatures locally
When testing locally, use the same signing secret shown in the webhook settings. Your test handler should:
- Read the raw body (don’t parse JSON first)
- Compute HMAC-SHA256 with your signing secret
- Compare against the
X-Aegis-Signatureheader
See Signature verification for code samples.
Common issues during testing
| Issue | Fix |
|---|---|
Endpoint returns 404 | Check the path — your handler must respond at the exact registered URL |
Endpoint returns 500 | Check server logs — likely a JSON parse error or missing field |
| No request received | Check your firewall/network — the test fires from Active Reach’s servers, not your browser |
| Signature mismatch | Make sure you’re using the raw body, not parsed-and-reserialized JSON |
What’s next
- Webhook overview — full setup guide
- Event types — all available webhook events