SendRaven vs Mailgun
Mailgun routes mail. SendRaven reads it.
Mailgun has been sending email for enterprises for a long time, and the parts that come from that are real: inbound routing rules, email validation, a dedicated IP included from 100,000 emails a month, and an EU region.
A long-running email API with inbound routes and dedicated IPs; marketing is a separate product. Last verified 16 September 2026 against mailgun.com’s own pricing and documentation.
Where Mailgun is the better choice
- A dedicated IP included from 100,000 emails a month, and email validation built in.
- Inbound routing rules that match on headers and recipients before your code sees the message.
- An EU data region and an enterprise track record.
Feature by feature
What each one does when you ask it to.
Marketing lives in Mailjet, a separate product. Inbound posts to a webhook with the stripped text but no thread. There is an official MCP server, run locally, and a key can be limited to sending from one domain, but nothing on a key caps, restricts or holds what an agent sends.
| Edge | Mailgun | |
|---|---|---|
| Priced per email sent, never per contactPricing by list size charges most to the customer whose list is growing, which is the point of the product. | YesOne meter. A contact is free. | Yes |
| Transactional, campaigns and automations on one planTwo products means two suppression lists that disagree and a price gap that rewards mislabelling campaigns as transactional. | YesOne key, one plan, one dashboard, one suppression list. | Nomarketing is Mailjet, a separate product |
| The reply is a thread, not a webhookA webhook hands you a raw message and leaves you to work out which conversation it belongs to. | YesJoined on Message-ID to the message it answers. | Noroutes post to a webhook |
| Quoted history stripped from repliesThe third reply in a thread is mostly the first two quoted back. A model reading it pays for that and gets confused by it. | Yestext is what they typed; raw_text is the whole body. | Yesstripped-text on inbound |
| One query for what is awaiting a replyThis is the poll an agent actually runs. Without it you build a state machine over inbound events. | YesGET /v1/threads?awaiting_reply=true | No |
| Per-key daily cap and recipient allowlistA workspace quota trips after an agent has mailed thousands of people. A key limit trips before. | Yesdaily_send_limit and allowed_recipients on the key, checked on every send. | Partlydomain sending keys; no cap or allowlist |
| Human approval hold on a keyThe only way to let an agent write mail without letting it send mail. | Yesrequires_approval drafts the message and waits for a person. | No |
| Campaign refused before it starts on bounce or complaint rateReputation dashboards report the damage. A gate prevents it. | YesChecked in the send path; the preview call says whether it will be allowed. | No |
| Unsubscribe cancels queued sends and ends the sequenceDoing only the first is how a working unsubscribe still delivers day three of a welcome series. | YesTwo writes: suppress the address, cancel what is scheduled for it. | Nonot documented |
| Opt down by topic, per personGiven only all-or-nothing, people press spam instead, and a complaint costs the domain far more than an opt-out. | YesPreferences on (email, topic), not on a contact row. | Nolist-level unsubscribes |
| Remote MCP server with no stored credentialsA server that holds its own database credentials is a shared identity for every caller. | Yesmcp.sendraven.ai, OAuth or a Bearer key, reaches exactly what the key can. | Partlyofficial local server |
| llms.txt and an unauthenticated OpenAPI documentA model decides what it is holding from the description document. Generated ones say what, not which. | YesBoth public, written by hand, so an agent can read them before it has a key. | Yesllms.txt and OpenAPI 3.1 |
| Errors written for an agentA client that backs off on 429 retries a payment problem forever. A model that sees an error retries a held draft. | Yes402 for out of plan, not 429. pending_approval is a status, not an error. | No |
| Inbound included and freeCharging for the reply discourages the half of email that makes it a conversation. | YesReplies cost nothing and land in the thread. | Partly1 route free, 5 on Basic, full from Foundation |
| Free tier that does not expire or throttle by the dayA trial that expires is a deadline, not a tier, and a 100-a-day cap is a tier you cannot test a campaign on. | Yes3,000 emails a month, inbound included, no daily cap. | Yes100 a day |
| Rate per 1,000 past the entry paid tierThe rate past the allowance is the real price for anyone who grows. | Yes$0.50, and it stops applying at each published price. | Partly$1.80 per 1,000 on Basic |
| Usage pricing without tier cliffsTiers do not hurt at the boundaries. They hurt in the middle, which is where most senders live. | YesOne curve, applied to what you actually sent. No tier to choose and none to outgrow. | No |
Price
What the same month costs.
Published list prices at three volumes, at the lowest-priced plan that covers each.
| Per month | Mailgun | |
|---|---|---|
| 100,000 emails | $35.00 | $75 on Foundation |
| 250,000 emails | $109.00 | $215 on Scale |
| 1,000,000 emails | $379.00 | $700 on Scale |
Published list prices, last verified 16 September 2026. Ours is what the Standard curve charges at that volume — there is no tier to pick. Full pricing.
Questions
Asked by people choosing between the two.
Does Mailgun have inbound email?
Yes. Routes match incoming mail and post it to a URL, with a stripped-text field. SendRaven goes a step further: the reply is joined to the thread it answers and a single query returns what is waiting on you.

Try it on one domain first.
3,000 emails a month, inbound included, and no charge until you switch paid sending on. Already decided? The migration guide from Mailgun covers the export, the column mapping and the opt-outs. The other comparisons are on the compare page.

