Testing Locally with ngrok
Your webhook endpoint needs a public URL. Use ngrok to tunnel to your local server:1
Start your local server
2
Start ngrok
3
Register the webhook
Use the ngrok URL as your webhook endpoint:
4
Trigger an event
Perform an action that triggers a webhook, such as completing a Stripe test checkout with attribution metadata or approving an affiliate application.
Simulating a Webhook with cURL
To test your endpoint’s signature verification, simulate a delivery:Verification Checklist
Before going to production, confirm:- Your endpoint returns
200within 30 seconds - Signature verification works correctly
- You handle duplicate deliveries (check event
id) - You process events asynchronously (don’t block the response)
- Your endpoint uses HTTPS in production
- You’ve subscribed only to events you need
- Error handling is in place – a crash won’t take down your server
Debugging Delivery Issues
If webhooks aren’t arriving:- Check the dashboard – go to Settings → Webhooks to see delivery status and errors
- Verify the URL – is your endpoint reachable from the public internet?
- Check HTTPS – production webhooks require HTTPS (localhost HTTP is allowed in development)
- Check event subscription – did you subscribe to the event types you’re expecting?
- Check response code – a non-2xx response triggers retries, not immediate re-delivery