Mailgun is the transactional email API that developers rely on to send password resets, order confirmations, onboarding sequences, and notification emails at scale. When Mailgun is healthy, API calls return in milliseconds and emails land in inboxes reliably. When Mailgun degrades, your application keeps trying to send — but emails queue up, delivery fails silently, or bounce rates spike. Users never receive the password reset they requested, and your application's email pipeline is broken until someone notices the metrics.
Here's how to determine whether Mailgun is down, which component is failing, and how to protect your email operations when it degrades.
Is Mailgun Down Right Now?
Check these sources in order:
- Statusfield — Mailgun status — real-time monitoring of Mailgun's API and sending infrastructure.
- Twitter/X — search
Mailgun downorMailgun API errorsorted by Latest. Developers notice sending failures quickly and report them in real time. - Downdetector — useful as a secondary signal for confirming widespread reports.
What Actually Breaks During a Mailgun Outage
Mailgun's infrastructure separates sending, delivery tracking, and inbound routing into distinct subsystems.
| Component | What it does | Impact when down |
|---|---|---|
| Sending API | Accepts POST /messages requests from your application | API returns errors; emails don't queue or send |
| SMTP relay | Accepts emails via SMTP (port 587/465) | SMTP sends fail; fallback to API if configured |
| Delivery | Routes email to recipient mail servers | Emails accepted by API but not delivered |
| Webhooks | Delivers delivery, bounce, and complaint events | Your app stops receiving event callbacks |
| Email validation | Validates email addresses via /v4/address/validate | Validation API returns errors |
| Inbound routing | Receives and routes inbound emails | Inbound processing stops; emails bounce |
| Dashboard / Logs | Web interface and API log access | Can't inspect delivery status or debug issues |
Common Mailgun Errors and What They Mean
| Error | Cause |
|---|---|
HTTP 500 - Internal Server Error | Mailgun server error; retry with exponential backoff |
HTTP 503 - Service Unavailable | Mailgun under load; retry after a short delay |
HTTP 401 - Unauthorized | Invalid API key; check key validity independently of outage |
HTTP 403 - Forbidden | Domain or account suspended; check dashboard |
HTTP 429 - Too Many Requests | Rate limit hit; implement backoff |
| Emails accepted (200) but not delivered | Delivery subsystem issue; check sending logs |
| Webhooks not firing | Webhook delivery queue backed up or failing |
Connection refused on SMTP | SMTP relay unavailable; switch to API mode |
Building Resilient Email Sending Against Mailgun Outages
Transactional email is often business-critical. Here's how to make your email pipeline more resilient.
Implement retry with exponential backoff
Never send email without retry logic. Mailgun recommends retrying 5xx errors with backoff:
async function sendWithRetry(payload: EmailPayload, maxRetries = 3): Promise<void> {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch('https://api.mailgun.net/v3/your-domain/messages', {
method: 'POST',
headers: { Authorization: `Basic ${btoa('api:' + process.env.MAILGUN_API_KEY)}` },
body: buildFormData(payload),
});
if (response.ok) return;
const status = response.status;
if (status === 429 || status >= 500) {
const delay = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
// 4xx (not 429) — don't retry, surface the error
throw new Error(`Mailgun error ${status}: ${await response.text()}`);
}
throw new Error('Max retries exceeded sending email');
}Queue emails, don't send synchronously
Never send email inline in a request handler. Use a job queue (BullMQ, Temporal, SQS) so failed sends can be retried automatically without user-visible errors:
// ✅ Queue the job, return immediately to the user
await emailQueue.add('send-welcome', { userId, email });
// ❌ Don't do this — any Mailgun outage surfaces directly to users
await mailgun.messages.create(domain, messageData);Monitor for silent delivery failures
Mailgun can accept your API request (return 200) but fail to deliver the email if the delivery subsystem degrades. Track your webhook events:
// Webhook handler — log and alert on elevated bounce/fail rates
app.post('/webhooks/mailgun', (req, res) => {
const event = req.body['event-data'];
if (event.event === 'failed' || event.event === 'bounced') {
metrics.increment('email.delivery.failed', { reason: event.reason });
if (event['delivery-status']?.code === 550) {
// Hard bounce — remove from mailing list
}
}
res.sendStatus(200);
});How to Get Instant Mailgun Outage Alerts
Your application's email pipeline depends on Mailgun. When Mailgun degrades, the failure is often silent — your retry queue fills up while users wait for emails that won't arrive.
Monitor Mailgun on Statusfield and get alerted the moment Mailgun's status changes. Route alerts to your ops channel or PagerDuty so your team knows before users start reporting "I didn't get the reset email."
Start monitoring Mailgun → — free, no credit card required.
Frequently Asked Questions
Is Mailgun down for everyone or just me?
Check statusfield.com/services/mailgun. If Mailgun shows operational and your API is returning errors, the issue may be specific to your domain, API key, or account configuration. Verify your API key is valid, check your domain's sending status in the Mailgun dashboard, and confirm your account isn't suspended or over its sending limit.
Mailgun accepted my API request but emails aren't being delivered — what's happening?
This is a delivery subsystem issue. Mailgun's API layer and delivery infrastructure are separate. A 200 response means the message was accepted into Mailgun's queue, but it doesn't guarantee delivery. Check your Mailgun logs for delivery errors, check statusfield.com/services/mailgun for delivery status, and inspect your webhook events for failed or temporary_fail events.
Mailgun webhooks aren't firing — is this an outage?
Webhook delivery can fail independently of sending. Check statusfield.com/services/mailgun for webhook status. If Mailgun is healthy, verify your webhook endpoint URL is correct and publicly reachable, and check your webhook logs in the Mailgun dashboard. Mailgun retries webhook delivery for failed requests — events are not permanently lost during a short webhook outage.
My Mailgun API key is returning 401 — is Mailgun down?
A 401 response almost always means the API key is wrong or has been rotated, not that Mailgun is down. Check statusfield.com/services/mailgun first to rule out an auth service issue. If Mailgun is operational, regenerate your API key in the Mailgun dashboard and update it in your application's environment variables.
How do I handle Mailgun rate limits (HTTP 429)?
Mailgun rate limits vary by plan. If you're hitting 429, implement exponential backoff with jitter and reduce concurrent send volume. For high-volume sends, use Mailgun's batch sending features and spread sends across time windows rather than sending all at once. A sustained 429 rate that doesn't resolve with backoff may indicate you've hit your monthly plan limit — check your dashboard.
Should I set up a fallback email provider if Mailgun is down?
For business-critical email flows (password resets, payment receipts), a fallback provider (SendGrid, AWS SES, Postmark) is worth the overhead. Route your email sends through an abstraction layer that can switch providers based on error rates. This is infrastructure complexity, but it eliminates Mailgun outages as a single point of failure in critical user flows.
How do I get alerted when Mailgun goes down?
Set up Mailgun monitoring on Statusfield. You'll get an alert the moment Mailgun's status changes — enough time to switch to a backup provider or alert your ops team before users start reporting missing emails.
Published: July 4, 2026. Check current Mailgun status →
Know the moment a tool you depend on goes down
Statusfield watches 2,000+ services your business depends on and alerts you the moment they break.
Free plan · No credit card
Related Articles
Is Rollbar Down? How to Check Rollbar Status Right Now
Rollbar not receiving errors? Notifications not firing or the dashboard not loading? Learn how to check if Rollbar is down, which components fail first, and how to maintain error visibility when Rollbar degrades.
Is Postmark Down? How to Check Postmark Status Right Now
Postmark not delivering? Emails bouncing or delayed? Learn how to check if Postmark is down, which components fail first during an outage (SMTP, API, webhooks, bounce processing), and how to keep your transactional email running when it does.
Is Canva Down? How to Check Canva Status Right Now
Canva not loading? Designs not saving or exports failing? Learn how to check if Canva is down, which components fail first during an outage, and how to protect your work when Canva degrades.