Prompt
My webhook for delivered emails stopped firing. How do I troubleshoot that?
Latest observation
Here’s a practical way to troubleshoot a “delivered email” webhook that stopped firing.
1) Confirm what “delivered” means in your provider
Different services define delivery differently:
- Accepted by the provider vs delivered to recipient server
- Delivered vs opened/clicked
- Some providers only send delivery webhooks for certain event types or plans
Check:
- the exact event name your integration is subscribed to
- whether the provider changed event names or payload format
- whether “delivered” is still enabled in the dashboard/API
2) Check the provider’s event/log dashboard
Look for:
- recent events for a test message
- webhook delivery attempts
- HTTP response codes from your endpoint
- any pauses, retries, or disabled webhooks
If you see the event in the provider logs but no request hit your server, the issue is usually on the webhook delivery side.
If you see requests hitting your server but they’re failing, the issue is on your endpoint.
3) Verify your webhook endpoint is reachable
Make sure your endpoint:
- returns a 2xx response quickly
- isn’t timing out
- isn’t behind a firewall/VPN/IP allowlist that blocks the provider
- accepts HTTPS with a valid certificate
- isn’t redirecting (301/302) unless the provider follows redirects
Test it from outside your network:
curl -i https://your-domain.com/webhook
4) Check for recent app changes
Common causes:
- endpoint URL changed
- route renamed
- auth requirement added
- server moved behind a proxy/load balancer
- code now returns 403/404/500
- request body parsing changed after a deploy
- rate limiting or WAF started blocking the provider
If it worked before, compare the last known-good deploy with the current version.
5) Inspect response codes and logs on your server
Look in:
- application logs
- reverse proxy logs (Nginx/Apache)
- load balancer logs
- CDN/WAF logs
Pay attention to:
401/403→ auth/signature validation issue or blocking404→ wrong route415→ content-type mismatch429→ rate limiting5xx→ app error- timeouts / connection resets
6) Validate signature verification
If your provider signs webhook requests, delivery may silently fail if:
- the signing secret changed
- the raw request body is no longer being read correctly
- clock skew affects timestamp validation
- you’re verifying against a parsed/modified payload instead of the raw bytes
Double-check:
- current secret in dashboard matches your code
- your handler uses the raw body
- timestamp tolerance is reasonable
7) Confirm you’re subscribed to the right events
Sometimes “delivered” webhooks stop because only some events are enabled.
Check:
- event subscription list
- per-environment settings (sandbox vs production)
- multiple webhook endpoints and which one is active
- whether a new dashboard setting disabled the event
8) Send a test webhook / replay event
Most providers let you:
- resend a previous event
- trigger a test event
- replay delivery attempts
Use that to isolate whether the current event pipeline is the problem or whether your endpoint is rejecting all incoming webhooks.
9) Look for filtering in your own code
You may be receiving the webhook but ignoring it because:
- event type changed
- message ID lookup fails
- status value differs (
deliveredvsdelivery) - you only process certain sender domains / environments
- deduplication logic is discarding it
Add temporary logging for:
- full event type
- message ID
- payload keys
- raw body size
- signature validation result
10) Check provider-side incidents or changes
Webhook outages can be on the provider side:
- temporary delivery failures
- regional issues
- status-page incidents
- API changes/deprecations
Check:
- status page
- changelog
- recent email/developer notifications
Quick isolation checklist
- Send a test event from provider dashboard
- See whether it reaches your server logs
- If not, inspect provider webhook delivery logs
- If yes, inspect your server response and app logs
- Verify signature, endpoint URL, and event subscription
If you want, I can help you narrow it down
Tell me:
- which email provider you use
- what stack your webhook endpoint is on
- whether you see the event in provider logs
- any HTTP status codes or errors from your server
If you paste a sample webhook log or error message, I can help diagnose it faster.