---
title: "Reloop vs Mailgun (2026): Pricing, Features and Which to Choose"
description: "Reloop vs Mailgun compared honestly: pricing from 3k to 100k emails a month, developer experience, inbound routes vs agent inboxes, deliverability, self-hosting and lock-in, plus how to switch."
canonical: "https://reloop.sh/blog/reloop-vs-mailgun"
last-updated: "2026-10-25"
---

# Reloop vs Mailgun (2026): Pricing, Features and Which to Choose

> For the site documentation index, see [llms.txt](/llms.txt). Docs index: [llms-docs.txt](/llms-docs.txt). Marketing corpus: [llms-full.txt](/llms-full.txt). Docs corpus: [llms-full-docs.txt](/llms-full-docs.txt). Product skill: [skill.md](/skill.md). Prefer markdown URLs (append `.md`) when available.

> Reloop vs Mailgun compared honestly: pricing from 3k to 100k emails a month, developer experience, inbound routes vs agent inboxes, deliverability, self-hosting and lock-in, plus how to switch.
Source: https://reloop.sh/blog/reloop-vs-mailgun
Published: 2026-10-25
**Mailgun is one of the original developer email APIs, and it still does the basics well.** REST and SMTP sending, templates, inbound routes, webhooks and email validation are all there. Reloop covers the same sending surface, but **costs $10 for 50,000 emails where Mailgun charges $35, gives you a real free tier instead of a trial, receives mail into threaded inboxes your agents can reply from, and is open source, so you can run it yourself.**

We build Reloop, so weigh this accordingly. Every Mailgun price below is from [mailgun.com/pricing](https://www.mailgun.com/pricing/), and where Mailgun is the better pick, we say so.

---

## The 30-second comparison

| | **Reloop** | **Mailgun** |
|---|---|---|
| Free tier | 3,000 / mo, 100 / day | 100 / day, trial only |
| Entry paid plan | **$10 / mo for 50,000** | $15 / mo for 10,000 (Basic) |
| 50,000 emails / mo | **$10** | $35 (Foundation) |
| Overage per 1,000 | **$0.50** | From $1.30 (Basic from $1.80) |
| Dedicated IP | Included on Growth ($20) | Paid add-on |
| Open source | Yes (Apache 2.0) | No |
| Self-host | Yes | No |
| Sending path | Own MTA (KumoMTA), you can run it | Managed sending only |
| Inbound email | Mailboxes with threads, API, MCP, IMAP | Inbound routes (regex match and forward) |
| Agent inbox | Yes | No |
| Templates | Stored, `{{{variables}}}` | Stored, Handlebars |
| Email validation | Yes | Yes, priced as an add-on |
| Marketing campaigns | Yes | Limited (separate Sinch product) |
| SMTP relay | Yes | Yes |

Reloop's prices are on [reloop.sh/pricing](/pricing). Both change; check before you commit.

---

## Pricing at real volumes

Mailgun's free option is a trial at 100 emails a day. Reloop's free tier is permanent: 3,000 emails a month, capped at 100 a day.

| Monthly volume | Reloop | Mailgun | Difference per year |
|---|---|---|---|
| 3,000 | $0 | Trial only | n/a |
| 10,000 | $10 | $15 (Basic) | $60 |
| 50,000 | $10 | $35 (Foundation) | **$300** |
| 100,000 | $20 | About $100 ($35 + 50k overage at $1.30) | About $960 |

Two things drive the difference:

- **Reloop's first paid plan includes 50,000 emails.** Mailgun's $15 Basic plan includes 10,000; you need Foundation at $35 for 50,000.
- **Overage costs less than half as much.** Extra mail is $0.50 per 1,000 on Reloop, and starts at $1.30 per 1,000 on Mailgun ($1.80 on Basic).

If you self-host Reloop, there's no per-email fee at all. You pay for the server. See [self-hosted email infrastructure](/blog/self-hosted-email-infrastructure) for what that really involves.

<Callout type="tip">
  Price the volume you expect in a year, not today's. Moving providers later means re-verifying DNS and rebuilding reputation, so pick the one that still makes sense at 10× your current volume.
</Callout>

---

## Developer experience

Both are API-first. The biggest day-to-day difference is the shape of the client and how errors come back.

**Mailgun**

```typescript

const mailgun = new Mailgun(FormData);
const mg = mailgun.client({
  username: "api",
  key: process.env.MAILGUN_API_KEY!,
});

await mg.messages.create("mg.acme.com", {
  from: "Acme <hello@mg.acme.com>",
  to: ["user@example.com"],
  subject: "Welcome",
  html: "<p>Thanks for signing up.</p>",
});
```

**Reloop**

```typescript

const reloop = new Reloop({ apiKey: process.env.RELOOP_API_KEY! });

const { response, emailError } = await reloop.mail.send({
  from: "Acme <hello@mail.acme.com>",
  to: "user@example.com",
  subject: "Welcome",
  html: "<p>Thanks for signing up.</p>",
});
```

Mailgun takes the sending domain as the first argument and throws when a send fails. Reloop works out the domain from the `from` address and returns errors as values. A few more differences:

| | Reloop | Mailgun |
|---|---|---|
| Request body | JSON | Form data (`multipart/form-data`) |
| Errors | Returned, with `message`, `why` and `fix` | Thrown, with status and message |
| Template variables | `{{{first_name}}}` | Handlebars `{{first_name}}`, passed in `h:X-Mailgun-Variables` |
| Idempotent retries | `Idempotency-Key` header | Not built in |
| React Email | Pass a component or rendered HTML | Pass rendered HTML |

Reloop's error shape is our one strong opinion here. When a send fails, the error tells you **why** it failed and **how to fix it**:

```json
{
  "message": "Domain not found",
  "why": "The domain mail.acme.com was not found or is not authorized for your organization",
  "fix": "Ensure the domain is registered and verified in your dashboard"
}
```

Mailgun has years of docs, Stack Overflow answers and client libraries behind it. If your team relies on finding an existing answer for every edge case, that history counts.

---

## Receiving email and agent inboxes

Both can receive mail on your domain. What happens next is very different.

**Mailgun** uses **inbound routes**: you write an expression that matches the recipient or headers, and Mailgun forwards the parsed message to a URL or another address, or stores it briefly for you to fetch. Threading, history and replies are yours to build.

**Reloop** receives mail into **mailboxes**. Messages are stored, threaded, spam-scored with Rspamd, and readable over the API, the [MCP server](/docs/integrations/ai-tools/mcp-server) or IMAP. You can reply in-thread with one call, and there's an `email.received` webhook if you want push notifications too.

That matters if you're building:

- **AI agents that handle email.** Give an agent its own address, let it read the thread and reply. See [build an AI agent that reads and replies to email](/blog/build-ai-agent-sends-emails).
- **Support or shared inboxes** where humans and agents work the same threads.
- **Reply handling** for transactional mail ("reply to this email to comment").

| | Reloop | Mailgun |
|---|---|---|
| Receive on your domain | Yes | Yes |
| Routing rules | Per mailbox | Regex routes |
| Stored mailboxes with threads | Yes | No |
| Reply in thread via API | Yes | Build it yourself |
| Inbound spam scoring | Yes (Rspamd) | Spam headers on routed mail |
| MCP access for agents | Yes | No |
| IMAP access | Yes | No |

If all you need is "forward anything sent to `support@` to my webhook", Mailgun's routes do that well and are very flexible.

---

## Marketing, contacts and automations

**Mailgun** is focused on sending. It supports batch sends and mailing lists, but full campaign tooling lives in a separate Sinch product.

**Reloop** has contacts with custom properties, groups, subscription channels, broadcast campaigns with scheduling, and **event-triggered automations**: delays, conditions and email steps that run when your app tracks an event like `user.signed_up`. Transactional mail and campaigns share one suppression list.

If you want onboarding or dunning sequences without adding another tool, Reloop covers that. See [welcome sequences that convert](/blog/welcome-email-sequences-that-convert) for a worked example.

---

## Deliverability

Deliverability mostly comes down to your own domain setup and list hygiene. Both providers handle the fundamentals: SPF, DKIM, DMARC, bounce and complaint events, open and click tracking, and suppression lists.

The differences:

- **Sending path.** Mailgun is managed sending on its own infrastructure. Reloop runs its own MTA (KumoMTA), with per-domain throttling and automatic pauses when bounce or complaint rates spike, and you can run that same MTA yourself. Read [how bounce processing works](/blog/email-bounce-processing-automation).
- **Dedicated IPs.** Reloop includes one on Growth ($20/mo). On Mailgun, a dedicated IP is a paid add-on whose availability depends on your plan.
- **Validation.** Mailgun's email validation is mature and sold as an add-on. Reloop includes validation, and ships free [temp email](/tools/temp-email-checker), [domain reputation](/tools/domain-reputation-checker) and [blocklist](/tools/blocklist-checker) checkers.

---

## Self-hosting and lock-in

Mailgun is hosted-only and owned by Sinch. Your templates, routes, logs and suppression lists live on its platform, and leaving means rebuilding them on someone else's stack.

Reloop is Apache 2.0. You can:

1. Start on Reloop Cloud.
2. Move to your own server later with the [one-command installer](/self-host) or [Coolify](/blog/reloop-coolify-setup).
3. Keep the same API. Point the SDK's `baseUrl` at your instance and nothing else in your code changes.

That's useful for data residency, for security reviews that need to read the code handling your users' mail, and as insurance against price changes or account suspensions.

Self-hosting isn't free in effort. You own IP reputation, warm-up and uptime. Most teams should start hosted and treat self-hosting as an option, not a requirement.

---

## Where Mailgun is the better choice

Being honest about it:

- **You rely on its inbound routes.** Regex routing across many addresses and domains is flexible and battle-tested.
- **Email validation is central to your product** and you want a long-running, dedicated validation service.
- **Your team is already on Mailgun** at low volume and happy. At 10,000 emails a month the gap is $5, which isn't worth the DNS work.

## Where Reloop is the better choice

- **You send 50,000 emails a month or more** and cost matters. That's $10 vs $35, and overage is less than half the price.
- **You want a permanent free tier**, not a trial.
- **You need inbound mail as real inboxes**, especially for AI agents.
- **You want transactional mail, campaigns and automations** in one product with one suppression list.
- **You need open source or self-hosting** for compliance, residency or peace of mind.

---

## Switching from Mailgun to Reloop

Most of the work is DNS and templates.

1. **Add your domain in Reloop** and publish the DKIM record (`reloop._domainkey`). Merge `include:reloop.sh` into your existing SPF record. Don't add a second SPF record.
2. **Swap the client.** Replace `mg.messages.create(domain, {...})` with `reloop.mail.send({...})`. Send `to` as a string or array, and drop the domain argument; Reloop reads it from `from`.
3. **Handle errors as values.** Mailgun throws; Reloop returns `emailError`. Replace `try/catch` around sends with a check on `emailError`.
4. **Move templates.** Change Handlebars placeholders to triple braces: `{{first_name}}` becomes `{{{first_name}}}`, and pass values as template variables instead of `h:X-Mailgun-Variables`.
5. **Replace inbound routes** with Reloop mailboxes, or keep a webhook flow with the `email.received` event.
6. **Point webhooks** at a new handler. Reloop events are named `email.delivered`, `email.bounced`, `email.complained` and so on, and are signed with HMAC-SHA256 in the `Reloop-Signature` header.
7. **Import suppressions** from Mailgun's bounces, complaints and unsubscribes lists, so you don't mail addresses that already failed.
8. **Ramp traffic** from 10% to 100% over a week or two, then remove Mailgun's DNS records.

Our [SendGrid migration guide](/blog/migrating-from-sendgrid) covers the same steps in more detail, including a traffic-split flag and a suppression import script that work just as well when coming from Mailgun.

---

## FAQ

<AccordionGroup>
  <Accordion title="Is Reloop cheaper than Mailgun?">
    Yes at every paid volume. Reloop is $10 a month for 50,000 emails;
    Mailgun is $15 for 10,000 on Basic and $35 for 50,000 on Foundation.
    Overage is $0.50 per 1,000 on Reloop vs from $1.30 on Mailgun.
  </Accordion>

  <Accordion title="Does Mailgun have a free plan?">
    Mailgun offers a trial capped at 100 emails a day. Reloop's free tier
    is permanent: 3,000 emails a month with a 100-a-day cap.
  </Accordion>

  <Accordion title="Can I keep my Mailgun templates?">
    Yes, with one change. Reloop substitutes triple-brace placeholders, so
    `{{first_name}}` becomes `{{{first_name}}}`. The HTML itself doesn't
    need to change.
  </Accordion>

  <Accordion title="Does Mailgun support self-hosting?">
    No. Mailgun is a hosted service only. Reloop can run on your own server
    under the Apache 2.0 license.
  </Accordion>

  <Accordion title="Which has better deliverability?">
    For most senders, neither will be the deciding factor. Your SPF, DKIM
    and DMARC setup, list quality and sending patterns matter far more. Fix
    those first with our [authentication guide](/blog/spf-dkim-dmarc-setup-guide).
  </Accordion>
</AccordionGroup>

<Cta
  title="Try Reloop free"
  description="3,000 emails a month on the free tier, and 50,000 for $10 when you grow. No trial clock."
  href="/dashboard/signup"
  label="Get started"
/>