Features Pricing Compare Cost calculator Guides Quickstarts Docs All systems nominal

sendvia vs Mailgun

What each costs at 10,000, 100,000, 500,000 and 1,000,000 emails a month, who owns the sending account, and where Mailgun is the better buy.

Last reviewed:

Should I use sendvia or Mailgun?

Use sendvia if you already run on AWS, want the sending reputation and the Amazon bill to stay in an account you control, and send enough that a flat monthly fee beats a rate per email. Choose Mailgun if you need to receive mail as well as send it, if you want addresses checked before you send to them, or if you want one provider covering both directions rather than two. At the smallest volume this page prices, the money argument runs the other way, and what is left is the rest of the page.

Is sendvia cheaper than Mailgun?

Mailgun is cheaper at 10,000 emails a month. sendvia is cheaper at 100,000, 500,000 and 1,000,000 emails a month.

sendvia is $19.00 a month flat plus Amazon SES at $0.10 per 1,000 emails, billed by Amazon straight to your own account. At 1,000,000 emails that is the flat fee plus $100.00 of SES, and the flat half of it is the half that never moves.

Monthly cost at 10,000, 100,000, 500,000 and 1,000,000 emails a month, across six providers.
Emails per monthsendviaResendPostmarkMailgunSendGridRaw SES
10,000$20.00$19.00 + $1.00 SES$20.00$15.00$15.00Not publishedSendGrid does not print a price against a send volume. See their pricing page.$1.00
100,000$29.00$19.00 + $10.00 SES$35.00$126.00Based on Postmark's Platform plan at $18.00 plus their published $1.20 per additional 1,000.$90.00Not publishedSendGrid does not print a price against a send volume. See their pricing page.$10.00
500,000$69.00$19.00 + $50.00 SES$350.00$606.00Based on Postmark's Platform plan at $18.00 plus their published $1.20 per additional 1,000.$530.00At least $530.00. Computed from Mailgun's published $1.10 per additional 1,000 above 100,000 emails, staying on their $90.00 tier. That rate is published as a "from" price, so treat this as a lower bound.Not publishedSendGrid does not print a price against a send volume. See their pricing page.$50.00
1,000,000$119.00$19.00 + $100.00 SES$650.00$1,206.00Based on Postmark's Platform plan at $18.00 plus their published $1.20 per additional 1,000.$1,080.00At least $1,080.00. Computed from Mailgun's published $1.10 per additional 1,000 above 100,000 emails, staying on their $90.00 tier. That rate is published as a "from" price, so treat this as a lower bound.Not publishedSendGrid does not print a price against a send volume. See their pricing page.$100.00
Prices verified . Each figure is the cheapest route worked out from what a provider actually publishes. Some are a quoted plan price; others are computed from a published rate for extra emails, and a note beside those says so. sendvia cost is a flat $19 plus Amazon SES at cost.

Two of the figures in that column are marked as a minimum rather than a price, and that is not a hedge of ours. The published rate for extra emails is printed with a leading "from" on the page it was read from, so anything worked out from it is a lower bound and the real bill can be higher. Treating a floor as a price would overstate the difference in our own favour, which is the one error these tables cannot afford.

Feature by feature

Every cell below carries the page it was read from and the date it was read. Where a plain yes or no would mislead, the cell says what the difference actually is instead of rounding it.

Feature by feature, Mailgun against sendvia, with the source for every claim.
FeatureMailgunsendvia
Infrastructure
You own the AWS accountNoYou point a domain at Mailgun, and Mailgun holds the sending reputation.SourceYesYour AWS account, your IAM user, revocable by you at any time.
DNS setupManualTXT records for SPF and DKIM, a CNAME for tracking, and MX records if you want inbound. You add all of them yourself.SourceGenerated and monitoredsendvia builds the DKIM, SPF, MAIL FROM MX on bounce.yourdomain.com, DMARC and BIMI records, then watches them afterwards. You still add them at your DNS host.
Sending domains included1 to 1,0001 custom sending domain on Free and Basic, 1,000 on Foundation and Scale.Source1 to 101 on the free plan, 10 on the paid plan. Both figures are PLAN_*_DOMAIN_LIMIT in app/config.php, not a copy of it.
Features
REST API and SMTPBothThe scheduling documentation gives both the API parameter and the SMTP MIME header, so both routes are first class.SourceBothThe same credentials drive the REST API and the SMTP relay.
Newsletters and mailing listsMailing lists, includedLists are created and maintained through the API or the control panel, with template variables for per-member content.SourceIncludedLists, newsletters and sends are part of the flat fee, not an add-on.
Contact segmentsLists and tags onlyMembers carry a subscribed flag and custom variables, and sends can be tagged, but the documentation describes no rule-based segment builder.SourceRule-basedSegments are built from rules over contact fields and engagement.
CSV import and subscribersYesCSV upload to a mailing list, through the control panel or a bulk endpoint.SourceYesCSV upload, with column mapping for exports from other tools.
Webhook eventsAccepted, delivered, opened, clicked, unsubscribed, complained, failuresIncluding a real delivered event, and temporary and permanent failure reported separately.SourceBounce, complaint, delay, rejectNo delivery event. sendvia leaves DELIVERY out of its SES subscription because the volume stalled the site, so delivered status is inferred from the absence of a failure two minutes after sending. All four rivals receive a real delivery confirmation and sendvia does not.
Scheduled sendingYes, 1 to 7 daysThe window follows the plan message retention, so a smaller plan schedules less far ahead. Given lowest to highest like every other plan-gated row here, rather than as the best case alone.SourceYes, up to 72 hourssend_at on the API. The ceiling is SCHEDULED_MAX_HOURS in app/config.php, read here rather than repeated.
Open and click trackingBoth, plus bot detectionOpen and click tracking, with a separate feature for filtering bot opens and clicks out.SourceBoth, with countryOpens and clicks, with the country resolved from the opening address.
One-click resendYes, within 72 hoursMessages are stored for 72 hours by default and the stored message can be posted to a new recipient. 72 hours is the default rather than a hard ceiling: a domain with a longer message_ttl keeps them longer, so larger plans get a wider window. The old table said No, which was wrong.SourceYesResend any logged message from the log, blocklist-aware.
Log retention1 to 30 days1 day on Free and Basic, 5 days on Foundation, 30 days on Scale.Source7 to 90 days7 days on the free plan, 90 days on the paid plan, from LOG_RETENTION_*_DAYS in app/config.php. Message bodies are nulled out at half the retention period, before the row itself is deleted.
Compliance and deliverability
BIMI and DMARC monitoringDMARC reporting on paid plansAggregate DMARC reporting, free on every paid plan, through the Red Sift partnership. No BIMI monitoring. The old table said No, which was wrong.SourceYes, per domainDKIM, SPF, DMARC policy and BIMI are checked per domain and reported on the domain page.
RFC 8058 one-click unsubscribeYesWith unsubscribe handling enabled for a domain, Mailgun builds the List-Unsubscribe-Post header itself.SourceYesList-Unsubscribe and List-Unsubscribe-Post are added to every newsletter send.
Auto blocklist for bounces and complaintsYesUnsubscribes and spam reports are suppressed automatically, and addresses with permanent errors are pulled from the list.SourceYesBounces and complaints from the SNS webhook go straight onto the blocklist.
Two-factor authenticationYesAuthenticator app codes, with a recovery key issued at setup.SourceYesTime-based codes from an authenticator app.
Mailgun figures were read from Mailgun's own documentation on . The sendvia column is read from the code that implements each row rather than from a marketing page. Where a value would mislead as a yes or a no, the cell says what the difference actually is.

Whose AWS account, whose reputation, whose IPs

sendvia sends through an IAM user in your own AWS account. Amazon meters the mail and bills you for it directly, the SES sending identity is yours, and the addresses it leaves from are Amazon's shared SES pool unless you pay Amazon for a dedicated one. Revoke the key and sending stops the same minute, with the verified domains, the DNS records and the bounce history still sitting where they were.

Mailgun is the other arrangement, and it is the widest handover of the four. Mail leaves on Mailgun addresses and the reputation is Mailgun's, which is the same trade the other three offer.

What is different is how much of the domain goes with it. The DNS setup row above lists TXT records for SPF and DKIM and a CNAME for tracking, and then MX records as well if you want the inbound half, and MX is the record that decides where your mail arrives rather than only where it leaves from. That is the price of one provider covering both directions, and it is a fair price for what it buys. It is also the thing that makes leaving harder later, which is worth knowing at the start rather than at the end.

The trade runs both ways, and ours costs you something. You set up the AWS account, you create the IAM user, and a new SES account starts inside Amazon's sandbox, capped at 200 emails a day to verified recipients, until Amazon grants production access.

Does sendvia support SMTP like Mailgun?

Mailgun publishes SMTP settings of its own at smtp.mailgun.org, on ports 25, 465, 587 and 2525. sendvia runs a relay on smtp.sendvia.io, port 587, with 2525 as a fallback for networks that block it, and your API key is the password.

How you talk to each service, as each one documents it.
DetailMailgunsendvia
Send APIREST APIREST API
SMTP relayYes, alongside the HTTP APIYes, an SMTP relay on 587 with 2525 as a fallback
The Mailgun column was read from www.mailgun.com on . The sendvia column comes from sendvia_profile() in app/data/competitors.php, which is sourced to the code that implements each answer rather than to a marketing page, and reads any plan figure in it straight out of app/config.php.

The send call, side by side

Both are a single POST. Mailgun takes POST https://api.mailgun.net/v3/yourdomain.com/messages as an ordinary form post rather than JSON, authenticated with HTTP basic auth under the literal username api.

sendvia
curl -X POST https://api.sendvia.io/v1/send \
  -H "Authorization: Bearer sv_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "from":    "[email protected]",
    "to":      "[email protected]",
    "subject": "Your receipt",
    "html":    "<p>Thanks for your order.</p>"
  }'

Read from app/api.php on .

Mailgun
curl -X POST https://api.mailgun.net/v3/yourdomain.com/messages \
  --user "api:your_api_key" \
  -F from="[email protected]" \
  -F to="[email protected]" \
  -F subject="Your receipt" \
  -F text="Thanks for your order."

Read from documentation.mailgun.com on .

Both answer with JSON and both report a result per recipient. A successful sendvia call comes back as {"success":true,"total":1,"sent":1,"failed":0} plus a results array.

The reply that surprises a reader arriving from a provider which owns the sending account is the 422. sendvia refuses a from-address on a domain it has not verified inside your own SES account, because it has no sending identity of its own to fall back on. Verify the domain and the same call goes through.

# 422 {"error":"The domain \"yourdomain.com\" has not been verified. Add and verify it in the dashboard first."}

The relay takes the same credentials, so the same tool drives it:

curl --url smtp://smtp.sendvia.io:587 \
  --user "sendvia:sv_live_your_api_key" \
  --mail-from [email protected] \
  --mail-rcpt [email protected] \
  --upload-file receipt.eml

Logs and retention

sendvia keeps 7 days of send logs on the free plan and 90 on the paid one, and nulls the stored message body at half the retention period before the row itself is deleted. What it records against a message is a bounce, a complaint, a delivery delay or a rejection, published by SES to an SNS topic in your own account.

Delivery is not on that list, and it is the row to read carefully. sendvia leaves DELIVERY out of its SES subscription because subscribing to it flooded the webhook and stalled the site, so a message with no failure recorded against it two minutes after sending is marked delivered. That is an inference drawn from silence. Resend, Postmark, Mailgun and SendGrid all receive a real delivery event from their own systems, and sendvia does not.

Log history is the row with the widest spread on this page, and the cell gives both ends of it rather than the end that flatters either side. Read it against the plan you would actually be on: on one side of the table the number moves with what you pay, and on the other it moves with the same thing, and the two ladders are not the same shape.

Campaigns and lists

sendvia stores contacts, builds segments from rules over their fields and their engagement, imports a CSV with column mapping for exports out of other tools, and sends a newsletter to a list on the same flat fee as the transactional mail. List-Unsubscribe and List-Unsubscribe-Post go on every newsletter send, so the one-click unsubscribe Gmail and Yahoo ask for is there without you configuring it.

Mailgun holds mailing lists of its own, with each subscribed member stored on their side, so this is not a row where one side has the feature and the other does not. The difference is in what you can ask of them, and the contact segments row above gives each side's answer with the page it was read from. Read that row and the one under it together, because they are the same decision seen twice.

What does Mailgun do better than sendvia?

These come out of the same data file the table above does, and each one links to the page it was checked against.

  • You need to receive email, not only send it. Mailgun routes inbound mail, parses it and stores the raw MIME for you to fetch. sendvia does no inbound at all, and that is on the list of things it does not do. Source
  • You have an old list and want the dead addresses out before you send to it. Mailgun validates addresses in real time at signup or in bulk from a CSV. sendvia has nothing equivalent and will happily send to all of them. Source
  • Support asks you to send one message again to a different address. Mailgun keeps the stored message for 72 hours and has an endpoint that posts it to a new recipient without rebuilding the payload. Source

Who each one is for

Who each service is the right choice for, in one line each.
DetailMailgunsendvia
Best forA team that needs inbound mail routed, parsed and stored, or a list validated before a send, and wants that from the same provider as its outbound API.A team that already runs AWS, sends enough that a flat platform fee beats per-email pricing, and wants the sending reputation, the logs and the bill to stay in an account it controls.
The Mailgun column was read from www.mailgun.com on . The sendvia column comes from sendvia_profile() in app/data/competitors.php, which is sourced to the code that implements each answer rather than to a marketing page, and reads any plan figure in it straight out of app/config.php.

Neither line is a slogan. If the one on the left describes you better than the one on the right, the rest of this page is a set of details you do not need.

Can I migrate from Mailgun to sendvia?

Yes for outbound mail, and most of the work is on the Amazon side rather than in sendvia. You need an AWS account, an IAM user allowed to use SES and SNS, and production access, which Amazon reviews and usually grants within 12 to 24 hours. After that you verify a sending domain, publish the records sendvia generates for it, and move your contacts across.

Anything that receives mail has to stay where it is, and it is worth reading the whole list before you start: there is no dedicated IP option, no inbound email or parsing, no teams or sub-accounts and no official SDKs. A route that accepts replies is therefore a reason to keep the old account open rather than a thing to move.

Migrate from Mailgun to sendvia covers the outbound half in order. Plan the parallel run yourself: same traffic through both for a week, compare what lands, then cut the outbound half over and leave the rest where it is.