# A Mailgun alternative that costs less at every volume we checked.

URL: https://samva.dev/compare/mailgun

Samva costs less than Mailgun at every volume we checked, and replies thread to the email they answer instead of passing through inbound routes. Need your own IP? Samva sells a dedicated IP as an add-on.

Prices checked September 29, 2026

## Who should switch, and who should stay.

Switch if

- You pay for Foundation to get more than one domain or longer logs.
- You want replies threaded to the email they answer, not routed through inbound routes.

Stay on Mailgun if

- You send through SMTP. Mailgun offers SMTP; Samva sends through its API.

## What a month costs on each.

| Provider | 10k/mo | 50k/mo | 100k/mo | 500k/mo |
| --- | --- | --- | --- | --- |
| Samva | $5 (Starter) | $19 (Growth) | $44 (Growth plus 50,000 extra at $0.50 per 1,000) | $199\* (Scale plus 200,000 extra at $0.50 per 1,000) |
| [Mailgun](https://www.mailgun.com/pricing/) | $15 (Basic, 10,000 emails) | $35 (Foundation, 50,000 emails) | $75 (Foundation, 100,000 emails) | $400 (Scale, 500,000 emails) |

\* Needs the spend limit raised from its $50 default.

Mailgun lists tiers up to 2.5M emails a month and includes one dedicated IP from Foundation 100k. Email validation is billed separately.

## What each one ships.

## Send and receive

How you send email, build templates, and bring replies back.

| Capability | Samva | Mailgun |
| --- | --- | --- |
| Send API | Typed REST API with an OpenAPI spec | RESTful API and SMTP; batches up to 1,000 emails per call |
| Templates | Versioned, Git-backed TSX templates with rollback and publish history | Email templates on every plan |
| Inbound email | Replies thread to the email they answer, delivered as a signed message.received webhook | Inbound routes: 1 on Free, 5 on Basic, full routing on Foundation and Scale |

## Delivery and visibility

How you follow delivery, observe engagement, and protect your sending.

| Capability | Samva | Mailgun |
| --- | --- | --- |
| Webhooks | Signed Standard Webhooks events, with backoff and up to 8 automatic delivery attempts | Webhooks for accepted, delivered, temporary\_fail, permanent\_fail, opened, clicked, unsubscribed, and complained |
| Opens and clicks | Samva's own open pixel and tracked links, signed message.opened and message.clicked webhooks, and a timeline in the dashboard and API | Opened and clicked webhooks, plus logs and analytics |
| Deliverability | Generates DKIM and SPF records and checks your DMARC policy; bounces and complaints suppressed automatically | SPF, DKIM, and DMARC; validation billed separately; one dedicated IP included from Foundation 100k |

## Integration tools

The SDKs and tools you can build with.

| Capability | Samva | Mailgun |
| --- | --- | --- |
| SDKs | TypeScript SDK with async/await and Effect-native interfaces | SDKs across multiple languages |

## Volume and billing

What you can send for free and how extra volume is billed.

| Capability | Samva | Mailgun |
| --- | --- | --- |
| Free plan | 500 emails a month, up to 100 a day | 100 emails a day, with 1-day log retention |
| Past the allowance | Metered at $0.50 per 1,000 on paid plans, up to a spend limit you set | Metered per 1,000, from $1.80 on Basic; rates fall on larger tiers |

## Moving from Mailgun.

Add your domain and publish the DKIM and SPF records Samva generates next to the old provider's. Both can send while you switch.

Swap the send call.

## Mailgun Node SDK

```ts
const formData = require("form-data");
const Mailgun = require("mailgun.js");
const mailgun = new Mailgun(formData);
const mg = mailgun.client({ username: "api", key: process.env.MAILGUN_API_KEY });

await mg.messages.create("mg.example.com", {
  from: "Acme <mailgun@mg.example.com>",
  to: ["ada@example.com"],
  subject: "Your receipt",
  html: "<p>Thanks for your order.</p>",
});

```

## Samva

```ts
await samva.messages.send({
  from: { email: "orders@example.com" },
  to: [{ email: "ada@example.com" }],
  channel: "email",
  email: {
    subject: "Your receipt",
    html: "<p>Thanks for your order.</p>",
  },
});
```

Map webhooks. Samva sends signed events for sent, delivered, bounced, complained, failed, and received, with received going to the endpoint your domain's receiving route names. Opens and clicks arrive as message.opened and message.clicked, and unsubscribes as contact.unsubscribed.

| Mailgun event | Samva event |
| --- | --- |
| `delivered` | `message.delivered` |
| `permanent_fail` | `message.bounced` |
| `complained` | `message.complained` |
| `opened` | `message.opened` |
| `clicked` | `message.clicked` |
| `unsubscribed` | `contact.unsubscribed` |

Recreate templates as versioned templates, or send your existing HTML inline while you move.

Keep the old provider's suppression list in your app and filter against it. Samva cannot import it.

Turn on receiving if you want replies back.

What does not move: templates, the suppression list, and message history.

The full walkthrough: [Migrate Mailgun inbound routes](https://samva.dev/guides/mailgun-inbound-migration).

## Notes

Mailgun's log retention is 1 day on Free and Basic, 5 days on Foundation, and 30 days on Scale. That matters the first time you debug a delivery problem from last week, so price the tier that keeps logs as long as you need.

## Questions before you switch.

### What do I get for free?

Mailgun's free plan allows 100 emails a day, with 1-day log retention and one inbound route, checked Sep 29, 2026. Samva's free plan is 500 emails a month, up to 100 a day.

### What does 50,000 emails a month cost?

Checked Sep 29, 2026: Mailgun's Foundation plan includes 50,000 emails for $35 a month. Samva's Growth plan includes 50,000 emails for $19 a month.

### Which Mailgun plans include a dedicated IP?

Mailgun's pricing page says one dedicated IP is included with Foundation 100k and Scale, and that access starts at 50,000 emails. Samva lists a dedicated IP as an add-on on its pricing page.

### Do Mailgun's opened, clicked, and unsubscribed webhooks have a Samva equivalent?

Yes. Samva sends signed message.opened and message.clicked webhooks for tracked sends, and contact.unsubscribed when a recipient unsubscribes from a topic, alongside sent, delivered, bounced, complained, failed, and received.

## Related Resources

- [Migrate Mailgun inbound routes](https://samva.dev/guides/mailgun-inbound-migration): Map routes, fields, and signatures, then cut over one hostname.
- [Pricing](https://samva.dev/pricing): Start on 500 emails free, then pay for the volume you send.
- [Inbound email](https://samva.dev/features/inbound-email): Receive replies, parse them, and continue the conversation.
- [Email deliverability](https://samva.dev/features/deliverability): Authentication, reputation, and bounce handling for product email.
- [Samva vs SendGrid](https://samva.dev/compare/sendgrid): Compare pricing, templates, and inbound email with SendGrid.

## Send your first email free.

500 emails a month, no card. When you outgrow it, the bill stays predictable.

[Start sending free](https://samva.dev/signup) or [Talk to the founder](https://samva.dev/contact).

## Sources, verified September 29, 2026

- [Mailgun pricing](https://www.mailgun.com/pricing/)
- [Mailgun: Node.js SDK](https://documentation.mailgun.com/docs/mailgun/sdk/nodejs_sdk/)
- [Mailgun: webhook event types](https://documentation.mailgun.com/docs/mailgun/user-manual/webhooks/webhooks)
- [Mailgun Send product page](https://www.mailgun.com/products/send/)
- [Samva pricing](https://samva.dev/pricing)
