Prompt
My bounce handling is broken in Mailgun
Latest observation
Oct 10, 2026
OpenAI APIWeb search: off
If Mailgun bounce handling is “broken,” it usually comes down to one of a few setup issues. Here’s a quick checklist to find the problem:
1) Confirm Mailgun is receiving bounces at all
- Check Mailgun Logs for the message.
- Look at Events and filter for:
bouncedrejectedcomplaineddelivered
- If you don’t see bounce events, the issue may be DNS, routing, or sending through the wrong domain.
2) Verify your webhook / Routes setup
If you rely on bounce webhooks:
- Go to Receiving → Webhooks and make sure the Bounce webhook URL is correct.
- Confirm your app endpoint:
- returns
200 OK - responds quickly
- is publicly reachable
- accepts Mailgun’s payload format
- returns
If you use Routes:
- Check route priority/order.
- Make sure the route matches the correct recipient/domain.
- Ensure no other route is intercepting the bounce event.
3) Check your DNS and domain verification
For Mailgun to track bounces properly:
- Domain must be verified in Mailgun
- SPF/DKIM records should be correct
- MX records should be configured if you use inbound handling
If the domain isn’t fully set up, event tracking can behave inconsistently.
4) Make sure you’re using the right sender domain
Bounces are tied to the sending domain and message metadata.
- If you’re sending through
mg.yourdomain.com, but listening on another domain, events may not line up. - Confirm the message-id / recipient you’re testing corresponds to the events you’re checking.
5) Look for suppression behavior
Mailgun may suppress repeated sends to bad addresses:
- Check Suppressions → Bounces
- If an address is already in suppression, you won’t get normal bounce flow again
- Remove test addresses if needed
6) If you’re using inbound bounce processing
If your app expects bounce emails to be forwarded/parsed:
- Ensure your catch-all route is not swallowing bounce messages
- Validate the inbound route matches the bounce address pattern
- Confirm your parser handles Mailgun’s MIME/body correctly
7) Test with a known bad address
Try sending to:
- a clearly invalid domain
- a mailbox that doesn’t exist
Then compare:
- Mailgun logs
- webhook deliveries
- suppression list
- your app’s received payloads
8) Check for rate limiting or transient issues
Sometimes bounce handling appears broken when:
- your webhook is timing out
- your server returns 4xx/5xx
- Mailgun retries but your endpoint rejects the request
If you want, I can help you debug it more directly. Send me:
- Whether you use webhooks or routes
- A redacted example of the event payload or log
- What exactly is failing: no bounce event, webhook not called, or your app not processing it
Brands