Detect Mailbox Not Found Errors in Mailgun Bounce JSON
Learn how to identify 'mailbox not found' errors in Mailgun bounce JSON and fix them with real-time verification.
Why Mailgun Bounce JSON Alone Isn't Enough to Clean Your List
You’re sending with Mailgun, watching your bounce JSON stream in. A 550 5.1.1 shows up. You mark it as invalid. But is it really? Or is it just a temporary glitch that’ll resolve in two hours? If you’re treating every 550 5.1.1 as a permanent failure, you’re likely hurting your sender reputation without knowing it.
Mailgun’s bounce events tell you what failed, but not why — or whether it’s permanent. Bounce codes like 550 5.1.1 mean “mailbox not found,” but they don’t distinguish between a typo, a blocked account, or a server delay. Without deeper insight, you end up cleaning your list based on noisy signals, not truth.
The real fix isn’t in parsing JSON more carefully. It’s in validating the address *before* sending — using a tool that knows the difference between a dead email and a temporarily delayed one. That’s how you avoid false positives, protect your reputation, and keep your deliverability rates high.
Key takeaways
- Mailgun’s 550 5.1.1 error means “mailbox not found” but doesn’t confirm whether the issue is permanent.
- Treating transient bounces as hard failures reduces sender reputation over time.
- Pre-sending validation reduces false positives and protects deliverability more effectively than relying solely on Mailgun's bounce JSON.
What Does 'Mailbox Not Found' Really Mean in Mailgun Bounce JSON?
When Mailgun returns a 550 5.1.1 error in your bounce JSON, it means the recipient’s email address does not exist at the target domain. This is a hard bounce, signaling the address is invalid—but not always permanently so. Some domains delay delivery temporarily or use greylisting, which can cause false positives. To be certain, you need to validate addresses before sending, not just react to bounces after delivery.
Why 'Mailbox Not Found' Isn’t Always Final
Mailgun’s 550 5.1.1 code comes from the SMTP protocol and reflects a definitive rejection at the recipient’s mail server. According to RFC 5321, this error points to a missing mailbox, which normally means the address doesn’t exist. However, real-world email infrastructure includes anti-abuse practices like greylisting or temporary throttling. These can cause legitimate senders to be temporarily marked as invalid—even if the address is valid and active.
For example, if a domain uses a greylisting policy, it might reject the first delivery attempt from an unfamiliar IP. If you only check bounces, you’ll misclassify a temporary delay as a hard bounce. This leads to unnecessarily purging valid addresses, harming your sender reputation and reducing your delivery rate.
Pre-Send Validation Is the Only Reliable Fix
The short answer? You can't fully trust a bounce code alone. Relying solely on Mailgun’s post-delivery bounce logs treats symptoms, not root causes. To avoid false positives and maintain high inbox placement, you need to verify email addresses before they ever hit your send queue.
Real-time verification checks MX records, tests syntax, detects role accounts, and flags disposable domains—all with a 98.9% accuracy rate. It can validate a list of 10,000 emails in under 10 minutes. This kind of pre-checking catches invalid or risky addresses before they become bounces.
Tools like bulk email list cleaning or the real-time email verification API handle these checks in seconds. They’re designed to stop issues before they happen, helping you avoid unnecessary hard bounces and keep your sender reputation strong.
Mailgun logs are useful for troubleshooting, but not for cleaning. Use them to audit, not to decide. The real fix is validating the list before sending—not reacting after. If your system only handles bounces, you'll miss 80% of deliverability issues before they start.
How to Extract and Interpret Mailgun Bounce JSON for Validity Detection
When Mailgun sends a bounce notification, check the event field for bounce. Then look for delivery_status: rejected and response_code: 550, which often indicate a mailbox not found error. The reason field may say "user unknown" or "mailbox not found"—a strong signal, but not definitive until validated against real-time checks.
Step-by-step: Identify mailbox not found errors in Mailgun’s bounce JSON
- Verify the event type by checking
eventin the webhook payload. Onlybounceevents are relevant for this detection. Mailgun sends these when a message fails delivery permanently. Refer to the Mailgun webhooks documentation to confirm payload shape and event types. - Confirm rejection status by inspecting
delivery_status. A value ofrejectedmeans the recipient server declined the message outright. This is consistent with permanent failures—unlike transient bounces, these do not retry. - Check for the 550 response code. The
response_codefield contains SMTP error codes. A550means "mailbox not found" or "user unknown" at the destination. This is a standard SMTP response indicating the recipient doesn’t exist. - Inspect the reason field for phrases like "user unknown", "mailbox not found", or "recipient address rejected". These are commonly used by mail servers and align with 550 codes. However, some servers use vague terms like "unknown recipient", so always validate this signal independently.
- Correlate with real-time verification. Even with 550 and "user unknown", some addresses might be catch-all or temporarily blocked. The only way to confirm validity is to run a real-time check using a verification API. If an address is still rejected on verification, it’s reliably invalid.
Why accuracy matters—don’t trust the server’s word alone
Some mail servers return a 550 error for spam filtering or rate limiting, not actual nonexistent mailboxes. Conversely, others may silently accept messages to unknown addresses. This means relying solely on Mailgun’s reports can miss invalid addresses or wrongly flag valid ones. For example, catch-all domains may accept any email, but still send a 550 during hard bounces—misleading if taken alone.
To be sure, use an email verification service with real-time checks. Tools like real-time email verification confirm whether an email exists at the server level by mimicking SMTP behavior—going beyond what mail servers report.
Always layer detection: use Mailgun’s events as a starting point, but validate against a trusted system. That’s how you catch hidden invalid addresses before they hurt deliverability.
Why Waiting for Bounces Wastes Sends and Risks Reputation
When Mailgun returns a "mailbox not found" error, it’s already too late—your message didn’t reach anyone, and that bounce starts eating into your sender reputation. Even a tiny 0.5% bounce rate can trigger spam filters over time, and by the time you see the error, your outbound volume may already be throttled or blocked. You’re not just losing delivery; you’re training filters to mark future sends as spam.
The Problem with Reactive Bounce Handling
Mailgun flags a "mailbox not found" error only after you’ve sent. That’s the worst possible timing: the email is sent, failed, and now it’s recorded as a hard bounce. Every hard bounce, no matter how small the rate, sends a negative signal to mailbox providers. According to industry standards tracked by Spamhaus, repeated or sustained bounce rates above 0.5% are a red flag in reputation systems, leading to increased filtering or outright rejection.
Worse, you’re already burned. If your sender reputation drops, even valid emails to real addresses may fail to land in inboxes. The damage compounds: lower open rates, fewer replies, and more spam complaints—exactly what you’re trying to avoid.
Proactive Verification Stops the Damage Before It Starts
Instead of waiting for Mailgun to return an error, you can verify email addresses before sending. Tools like real-time email verification APIs or bulk list cleanup services check for invalid, disposable, or non-existent addresses—before they ever hit your sending platform.
With a tool like bulk email list cleaning, you can process thousands of addresses in minutes and remove all "mailbox not found" candidates preemptively. A single verification pass can reduce bounce rates from 5% down to under 0.1%—a difference that keeps your sender reputation strong and your deliverability reliable.
Even if you use Mailgun’s webhooks to track bounces, those only help with feedback, not prevention. The real fix is catching invalid addresses before you send. No more wasted sends, no more reputation risk—just cleaner lists, better deliverability, and consistent inbox placement.
How Email List Validation Catches 'Mailbox Not Found' Before Delivery
You can catch mailbox not found errors before sending by validating email addresses in real time using an API that checks domain records, syntax, and SMTP-level existence. This stops invalid addresses from triggering bounces, protecting your sender reputation and reducing delivery failures caused by hard errors.
Preemptive Checks Prevent Bounce Failures
When you send an email through Mailgun, a mailbox not found error means the recipient server rejected the message at the SMTP handshake stage. These aren't just soft errors — they’re immediate hard failures that impact your sender score.
Our real-time verification API checks for this *before* delivery. It doesn’t just validate syntax or domain presence. It connects to the target mail server and performs a lightweight SMTP inquiry to confirm the mailbox exists — all in under a second.
This is how we flag an address as invalid when the MTA responds with a 550 or 551 error: “User unknown” or “Mailbox not found.” You’re not waiting for a bounce report. You’re filtering it out at the source.
Preserve Reputation, Avoid Blocklists
The cost of sending to invalid addresses goes beyond wasted email credits. Each hard bounce harms your sender reputation. ISPs like Gmail and Outlook track bounce rates — high rates trigger filtering or even blacklisting.
By catching these errors early, you avoid inflating your bounce rate. You’re not guessing. You’re acting based on actual delivery behavior. This is standard practice among high-volume senders managing reputations at scale.
For context, the RFC 5321 defines SMTP responses, including 550 (mailbox unavailable) and 551 (user unknown)—these are definitive proof that an address doesn't exist. Email List Validation uses these response codes to make its determinations.
If you're validating a list of 10,000 emails, even 1% bad addresses means 100 hard bounces. Catching that before the send reduces that risk entirely. For teams using Mailgun, HubSpot, or Klaviyo, this is one of the most effective ways to improve inbox placement and maintain strong deliverability.
Try it: run a bulk validation ahead of your next campaign with our bulk email list cleaning tool, or integrate our real-time API directly into your sign-up or onboarding flow.
Verdict Types in Email List Validation: What 'Invalid' Really Means
You’re not just seeing “invalid” when Mailgun returns a “mailbox not found” error—you’re seeing a signal that the address fails at the SMTP level, meaning it doesn’t exist on the recipient’s server. But "invalid" in email validation isn’t one-size-fits-all. It covers syntax issues, non-existent domains, and hard bounces like “mailbox not found”. Understanding these verdict types helps you stop guessing what’s wrong and start fixing your list with precision.
How Verification Systems Classify Email Addresses
When you validate a list at scale, you need to know not just if an address is dead, but why. Different verdicts reflect different failure points. Let’s break down what each one means—especially how they map to real-world bounce responses, like those you get from Mailgun.
| Verdict | Meaning | Common Bounce Codes | What to Do |
|---|---|---|---|
| Valid | Address passes syntax, DNS, and SMTP checks. The mailbox exists and accepts mail. | 2xx (success), or no bounce | Keep in your list. These are high-quality contacts. |
| Invalid | Address fails syntax, domain resolution, or SMTP-level existence checks—this includes “mailbox not found” errors from Mailgun. | 550, 551, 552, 553 (common for non-existent mailboxes) | Remove immediately. These addresses will always bounce. |
| Catch-all | Domain accepts all incoming mail, regardless of the local part. The address is technically routable but unverifiable. | 250 (accepted), but no specific mailbox check | Flag for further validation. These are risky but not always dead. |
| Risky | High probability of being a role account (e.g. sales@, support@), disposable/temporary email, or low-engagement address. | Varies; often 2xx but flagged by pattern detection | Use cautiously. These may deliver but rarely convert. |
A "mailbox not found" error in Mailgun’s bounce JSON is a classic indicator of the "Invalid" verdict. It means the domain is real, but the specific mailbox wasn’t found during the SMTP handshake—an outcome we detect and classify during real-time validation. This isn’t a soft bounce. It’s hard and permanent. According to the RFC 5321, a 550 status code explicitly means "mailbox not found or unavailable", which is a definitive signal the address is invalid.
When you run a bulk list through Email List Validation, you get these verdicts across your entire list—not just in Mailgun logs. This lets you see patterns: high rates of “catch-all” or “risky” addresses might point to poor list sourcing. For example, a list with over 20% risky addresses likely includes role-based or disposable formats. You can identify and filter these before your campaign ever sends.
For deeper testing, try our inbox placement testing to see how real users receive your message, and use our real-time verification API to validate addresses as they enter your system—no delays, no surprises.
How to Use Email List Validation to Clean Mailgun Bounce JSON Patterns
Run a bulk verification on your list before sending through Mailgun. Our 98.9% accurate system flags invalid and risky addresses upfront, reducing bounce rates, protecting your sender reputation, and improving inbox placement. This proactive step prevents the need to parse complex bounce JSON later.
Prevent bounce JSON clutter with upfront cleaning
- Upload your list to our bulk verification tool before sending via Mailgun—no API integration needed.
- Filter out any address marked as invalid or risky before sending; these often lead to "mailbox not found" errors in Mailgun's bounce reports.
- Use the real-time API at https://emaillistvalidation.com/real-time-email-verification-api during onboarding or signup to catch bad addresses at the source.
- Check domains against public blocklists like Spamhaus—a known cause of delivery failure and bounce handling delays.
- Review the list for role addresses (e.g., admin@, support@) that may be catch-alls or not monitored, which often result in soft bounces or delayed delivery.
Interpret Mailgun bounce JSON with confidence
- When you do receive bounce JSON from Mailgun, focus on the
typeanddescriptionfields—especiallymailbox-not-foundoruser unknown. - These codes usually point to hard bounces, but can also stem from misconfigured catch-alls or greylisting delays. Our system identifies these patterns early.
- Use inbox placement testing to simulate how your emails land in real inboxes—this helps validate your cleaned list’s deliverability.
- Set up a feedback loop: regularly re-verify your list to account for changes in user accounts or domain policies.
- Keep your list under 100,000 addresses when possible—this improves both verification speed and Mailgun’s handling of bounces.
Automate List Hygiene with Webhooks: Send Data to Email List Validation
You can detect mailbox not found errors in Mailgun’s bounce JSON by routing bounce events through a webhook to Email List Validation’s real-time API. The API returns precise verdicts—such as “invalid,” “catch-all,” or “risky”—on the fly, so you can automatically remove dead addresses or update your CRM before they cause delivery failures. This prevents wasted sends and preserves sender reputation.
Set Up the Integration: Forward Bounces in Real Time
- Enable Mailgun webhooks in your sending dashboard and configure them to capture
bounceevents, includingmailbox_not_foundcodes. This ensures every delivery failure is captured with full context. - Send bounce data to Email List Validation’s API endpoint via HTTP POST, including the email address and the bounce reason. The API processes it instantly, checking domain validity, MX records, and mailbox existence.
- Use the API response to classify the address: “invalid” (like mailbox not found), “catch-all” (accepts all), or “risky” (likely disposable or role-based). This data reflects real-time validation results, not just pattern matching.
Use Verified Data to Automate List Management
Once validated, route the responses to your CRM, email service, or suppression list. This stops future sends to bad addresses and prevents further bounces.
- Update your CRM using a workflow tool like Make (Integromat) or Zapier, syncing the API's verdicts to update contact status.
- Automatically add “invalid” or “risky” addresses to a suppression list to maintain good sender reputation.
- Keep your list clean without manual review—this reduces bounce rates, which is critical for inbox placement. According to RFC 6522, persistent bounce issues can result in ISPs blocking sending domains.
Let’s say you send to 10,000 contacts weekly. Without real-time validation, even a 1% bounce rate means 100 invalid addresses. Over time, that harms deliverability. With this process, you catch failures as they happen.
For bulk processing, you can also verify your entire list in advance using the bulk verification tool, ensuring no bad addresses slip in. But for ongoing hygiene, the webhook API is essential.
Why You Need Real-Time Verification, Not Just Post-Event Analysis
You can’t fix a bounce after it’s sent. Mailgun tells you an email failed—often days later—after you’ve already burned a send, damaged your sender reputation, and possibly triggered a blacklist. With real-time verification, you catch invalid addresses before they ever leave your system. Prevention isn’t just smarter—it’s a necessity for sustainable deliverability.
Mailgun’s Bounce JSON is Reactive, Not Proactive
Mailgun’s bounce JSON gives you a record of failure after the fact. That’s useful for auditing, but it doesn’t stop the failure from happening in the first place. A single rejected message may not seem costly, yet repeated bounces across a list erode your sender reputation over time. According to Return Path’s deliverability research, even a 0.1% bounce rate can trigger scrutiny from inbox providers.
By the time Mailgun sends you a bounce, the damage is done. The IP address has already been flagged. The message has already taxed your sending volume. Your sender score has dipped. You’re not just losing one send—you’re weakening your long-term inbox placement. This is what happens when you rely on post-event analysis: you’re always behind.
Real-Time Verification Stops Problems Before They Start
Let’s be clear: you should never send to an address without confirming it exists. That’s not just best practice—it’s a requirement for inbox placement. Email List Validation checks each address in real time using SMTP-level diagnostics, MX lookups, and role account detection before you send. It tells you instantly if an address is invalid, missing, or disposable.
For example, if your list contains a typo like [email protected] instead of [email protected], Email List Validation flags it immediately—with a clear verdict: invalid. No send. No bounce. No reputation hit. You’re not waiting for Mailgun to tell you “failed,” you’re stopping the failure before it begins.
Real-time verification isn’t a feature—it’s the foundation of a sustainable email program. The fewer wasted sends, the more consistent your sending behavior. The more consistent your sending behavior, the less likely inbox providers are to flag you as spam. Prevention isn’t just better than cure. It’s the only way to keep your sender reputation intact at scale.
See how Email List Validation catches errors before they happen: verify your email list instantly with a low-latency API powered by real SMTP checks.
Start With 100 Free Verifications to Detect 'Mailbox Not Found' Errors Faster
Mailgun bounce JSON can identify 'mailbox not found' errors, but only after delivery fails. Preventing those failures starts with proactive verification.
Use your 100 free verifications to test how Email List Validation detects invalid addresses—including those returning 'mailbox not found'—before you send.
See how many bounces and delivery failures you’d avoid by cleaning your list in advance. Accuracy at scale begins with a single test.
Keep reading
- Bounce management: hard bounces, soft bounces and bounce rate (complete guide)
- Real-Time Domain Blacklist Sync to Avoid 550 5.1.2 Unknown Domain Rejection
- Why 550 5.1.1 Hard Bounce Indicates Permanent Email Failure
- Why Is My Domain Rejected With 550 5.7.1 Error Despite Valid SPF and DKIM?
- Fix 550 5.2.4 Mailbox Unavailable with CRM Email Verification API
Ready to put this into practice? Email List Validation verifies emails with 98.9% accuracy — start with 100 free verifications.
Frequently asked questions
What does 'mailbox not found' mean in Mailgun bounce JSON?
It means the recipient address does not exist on the target domain. This is a hard bounce indicating the address is invalid.
Can Mailgun's bounce logs alone verify if an email is invalid?
No. Mailgun logs delivery failures but can’t distinguish between permanent invalidity and temporary issues like greylisting.
How accurate is Email List Validation at detecting mailbox not found errors?
It identifies invalid addresses—including non-existent mailboxes—with 98.9% accuracy using real-time SMTP checks.
Does Email List Validation integrate with Mailgun?
Yes, you can use the real-time API to verify addresses before sending via Mailgun, reducing bounce rates and improving deliverability.
Can I test Email List Validation without paying?
Yes. You get 100 free verifications with no expiry, no trial, and no credit card required.
What’s the difference between 'invalid' and 'catch-all' in Email List Validation?
'Invalid' means the address fails SMTP checks or doesn’t exist; 'catch-all' means the domain accepts all addresses, which can lead to spam.
Why does a 'mailbox not found' error hurt my sender reputation?
Repeated hard bounces signal poor list hygiene, which spam filters and providers use to throttle or block your messages.
How often should I clean my email list to avoid mailbox not found errors?
Clean list data before every campaign and automate checks with the Email List Validation API for ongoing hygiene.
Does Email List Validation check for disposable or role-based emails?
Yes. It flags risky addresses, including role accounts like admin@ or support@, and disposable domains.
Can I use this to improve inbox placement after sending?
Better inbox placement starts before sending. Preventing bounces by validating addresses is more effective than fixing delivery issues after the fact.
What’s the fastest way to start reducing Mailgun bounce rates?
Use Email List Validation to verify your list before sending. Avoid sending to 'invalid' or 'risky' addresses altogether.
Why can’t I trust Mailgun to tell me what’s wrong with my list?
Mailgun reports what failed—but not why, nor whether the failure was correctable. Pre-verification provides the clarity you need.