Skip to Content
DevelopersWebhooksTesting webhooks

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:

  1. Select an event type to simulate (e.g., delivery.delivered)
  2. Click Send test
  3. Active Reach fires a sample payload to your registered URL
  4. 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.io

Register 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:

  1. Go to webhook.site  and copy the unique URL
  2. Register that URL as your webhook endpoint in Active Reach
  3. Fire test events — every delivery appears on webhook.site with full headers and body
  4. 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:

  1. Read the raw body (don’t parse JSON first)
  2. Compute HMAC-SHA256 with your signing secret
  3. Compare against the X-Aegis-Signature header

See Signature verification for code samples.

Common issues during testing

IssueFix
Endpoint returns 404Check the path — your handler must respond at the exact registered URL
Endpoint returns 500Check server logs — likely a JSON parse error or missing field
No request receivedCheck your firewall/network — the test fires from Active Reach’s servers, not your browser
Signature mismatchMake sure you’re using the raw body, not parsed-and-reserialized JSON

What’s next