Verify every address before Mailgun sends it — not after the bounce
Mailgun is a transactional and API email sender, so there's no marketing "list" to export and clean — the addresses flow straight from your app to Mailgun's send API. Mailgun automatically suppresses addresses that hard-bounce, complain, or unsubscribe, so it stops mailing a known-bad address after its first failure — but it can't judge an address before that first send, and on Mailgun every attempt counts toward your bill and your sender reputation whether it lands or bounces. Qualisend closes that gap: verify at the point of capture and before any batch send, so invalid addresses never reach Mailgun's API in the first place. Here's the honest workflow, plus the API and no-code options.

One-click Mailgun sync is paused while we rebuild the platform
We've deliberately paused our one-click native connectors while we re-engineer the sync layer they run on — hardening how we authenticate, respect each platform's rate limits, and write results back — so that when the native Mailgun integration returns, it stays dependable at any list size rather than fragile at scale. None of this touches how Qualisend verifies an address.
Everything you need works today: the CSV export → verify → reimport loop below, and the API for verifying at signup, are both fully supported and running in production — that's how teams keep Mailgun clean right now.
What Mailgun cleans for you
Mailgun's native hygiene runs on per-domain suppression lists — Bounces, Complaints, and Unsubscribes. When an address returns a permanent (hard) bounce, Mailgun adds it to that domain's Bounce list automatically and never retries it; spam complaints and unsubscribes populate the other two lists the same way. On every subsequent send, Mailgun checks each recipient against the domain's suppression lists and silently drops any match before it leaves the queue — you'll see "Not delivering to previously bounced address" in the logs. It's reliable, automatic protection, with one important limit: the lists are scoped to each sending domain, not account-wide, so an address retired on one domain is unknown to the next. For addresses Mailgun has actually attempted, that's dependable hygiene.
What it can't catch
The catch is timing: every one of those mechanisms is reactive — it needs a send and a failure to fire. An address only lands on the Bounce list after it has already hard-bounced on a real send, which means the reputation hit and the billable attempt have already happened. Never-verified invalids from a signup form, a checkout typo (jane@gmial.com), an imported batch, disposable addresses, role addresses (info@, support@), and mailboxes that have quietly gone dead all look perfectly sendable to Mailgun until the moment it tries them — which is exactly when a mailbox provider forms its first impression of your sending domain and IP. A batch you push to the API is the sharpest case: it arrives with no bounce history, so addresses that were already failing elsewhere look brand new, and Mailgun will dutifully attempt every one of them straight into a hard bounce.
Why a clean Mailgun list matters
On Mailgun the stakes aren't a stored-contact tier — Mailgun bills on volume, per message you send, and transactional and marketing mail draw on the same allowance. The catch is that a failed delivery still counts: Mailgun meters at the point of API submission, so every attempt to an invalid address burns a send off your quota and, on the metered Flex plan (which doubled to $2 per 1,000 messages on 1 December 2025), real money — for a message that was never going to arrive. The bigger cost is reputation. Mailgun senders are usually powering signups, receipts, and password resets that have to land, often on a dedicated or shared IP whose standing you can't afford to spend on bounces. A wave of hard bounces or spam-trap hits on your first send is precisely the signal Gmail and Yahoo's 2024 sender rules — and Mailgun's own bounce-rate and complaint limits — penalize, and on a warming IP it does outsized damage. Verifying before the send, and simply not handing the invalids to the API, means the credit is never spent and the reputation hit is never taken; the suppression list only ever helps after an address has already failed once.
The workflow that works today
Mailgun is an API sender with no contact list to export, so the honest workflow is to verify every address before Mailgun ever sends to it — at the point of capture, and again before any batch send.
Verify at the point of capture
Put a Qualisend check on your signup, checkout, and account forms through the REST API so an address is validated the instant a user types it. Invalid, disposable, and mistyped addresses (jane@gmial.com) are rejected before they're ever stored or handed to Mailgun's send API — the highest-leverage place to stop a bounce, because the address never enters your sending at all.
Verify any list or batch before you send
Before you push a recipient batch — a re-engagement send, an imported list, an audience migrated from another tool — to Mailgun's API or SMTP, run it through Qualisend bulk cleaning first: up to 1,000,000 addresses per job, duplicates charged once. The free plan's 100 one-time credits, which never expire, cover a first sample so you can see the shape of the batch before you commit.
Read the results
Every address returns deliverable, risky, undeliverable, or unknown with a reason code, a 0–100 score, and sub-flags (catch-all, disposable, role, full mailbox), plus the MX provider and probe detail as evidence. Submit only the deliverables to Mailgun; hold the rest back so the invalids never cost you a billable attempt or a bounce.
Suppress the failures as a safety net
To keep a known-dead address from ever slipping back into a send, add the verified-undeliverables to that sending domain's Bounce suppression list through the Mailgun API — the Bounces endpoint takes single additions, and a bulk import endpoint ingests a whole CSV of addresses at once — and/or write them to your own database. Because the lists are per-domain, add them for each domain you send from. Then if that address is ever handed to Mailgun again, it's silently dropped before any real delivery attempt — so you never take the hard bounce or the reputation hit that letting Mailgun populate the list the reactive way would have cost you first.
Or automate it at signup
The point of capture is the highest-leverage place to verify, so wire it once and forget it: call the Qualisend REST API (scoped keys, rate limits, webhooks) from your form or signup handler, or build a no-code flow through Zapier, Make, or n8n so a new address is checked — and a bad one blocked — before your app ever hands it to Mailgun's send API.
What Qualisend flags on every address
- Never-verified invalid addresses that would hard-bounce on their first Mailgun send and burn a billable attempt
- Disposable / throwaway domains built to expire, accepted at signup or checkout
- Role addresses (info@, support@) that draw complaints and skew engagement
- Catch-all domains, flagged so you can route them to a closely-watched send instead of assuming they're good
- A 0–100 confidence score and machine-readable reason code for every address, ready to gate a send on
A native, one-click Mailgun connector is part of the platform we're rebuilding — it's returning, not deprecated. Until it ships, verifying through the REST API (and the no-code flows above) is the fully supported path, and it works with any Mailgun plan.
What to do with each result
Every address comes back with a verdict and sub-flags. Here's the action that keeps your Mailgun list clean without throwing away contacts you can still reach.
deliverableSend through Mailgun as normal.deliverable + role flagFine for transactional mail (receipts, password resets); keep out of engagement-judged marketing sends.risky + catch-all flagRoute to a lower-volume, closely-watched send — the domain accepts everything at the door, so the mailbox behind it can't be confirmed.risky + disposable flagDon't send — add to the domain's Bounce suppression list; the inbox was built to expire.unknownHold and re-verify before the next send — usually greylisting or a rate-limit, not a verdict on the mailbox.undeliverableDon't submit it; add to Mailgun's Bounce suppression list so it can't slip into a future send either. Don't spend a billable attempt proving it's dead.Related reading
Clean sends are half of deliverability — authenticate your Mailgun sending domain too.
Verify at the point of capture so invalid addresses never reach Mailgun's send API.
Spot-check a single address or a small batch before you wire up the API.
The bounce rate Mailgun and mailbox providers watch — and why the first send is where it's set.
What a wave of hard bounces does to a shared or dedicated IP you can't afford to burn.
The 2024 bounce and complaint thresholds your Mailgun sends are judged against.
Mailgun verification FAQ
Clean your Mailgun list in minutes
Start free with 100 credits that never expire — no card required. Export, verify, reimport, and protect your next campaign.