What each publishes about price, who owns the sending account, and where SendGrid is the better buy. One of the two prints no price against a send volume at all.
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 SendGrid if you want a campaign builder and a contact database in the same account as the sending API, if you run mail for hundreds of customer domains, or if you need subusers, which sendvia has never had. The two are aimed at different buyers, and the table further down makes that clearer than any paragraph can.
SendGrid prints no price against any send volume, on any plan, so nobody can answer that from published figures. What follows is what each side publishes, which for one of them is nothing.
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.
| Emails per month | sendvia | Resend | Postmark | Mailgun | SendGrid | Raw SES |
|---|---|---|---|---|---|---|
| 10,000 | $20.00$19.00 + $1.00 SES | $20.00 | $15.00 | $15.00 | Not 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.00 | Not 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. | ||||||
The empty column is the finding rather than a gap in our research. The page it was read from prints an entry price for each plan and never says which send volume either price buys, and the control that would answer that is drawn in the browser rather than written into the page. Pairing a published price with a guessed volume would be the least fair thing this table could do, so nothing is recorded and the cell says why.
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 | SendGrid | sendvia |
|---|---|---|
| Infrastructure | ||
| You own the AWS account | NoSendGrid delivers your email using its own servers and holds the sending reputation.Source | YesYour AWS account, your IAM user, revocable by you at any time. |
| DNS setup | Manual, or automatic on GoDaddyUsually you add the records yourself. SendGrid can do it through Domain Connect when GoDaddy hosts the domain, automated security is on and link branding is off. The old table said Manual with no qualifier.Source | Generated 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 included | Up to 3,000A documented maximum of 3,000 authenticated domains per user and per subuser. Given as a ceiling rather than a range because SendGrid publishes no per-plan floor, and inventing one would be worse than saying so. The old table said 1.Source | 1 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 SMTP | BothThe v3 Mail Send API, and an SMTP service on smtp.sendgrid.net port 587.Source | BothThe same credentials drive the REST API and the SMTP relay. |
| Newsletters and mailing lists | Single Sends, priced separatelyNewsletters live in Marketing Campaigns, which SendGrid sells as a separate plan from the Email API. Buying one does not include the other.Source | IncludedLists, newsletters and sends are part of the flat fee, not an add-on. |
| Contact segments | Yes, dynamicUp to 200 segments per user, updating as contact data and criteria change, combining field, engagement and campaign conditions.Source | Rule-basedSegments are built from rules over contact fields and engagement. |
| CSV import and subscribers | Yes, up to 1,000,000 contactsOne CSV may hold up to a million contacts or 5GB, whichever comes first.Source | YesCSV upload, with column mapping for exports from other tools. |
| Webhook events | Processed, delivered, deferred, bounce, open, click, spam report and moreIncluding a real delivered event, plus dropped, unsubscribe, group unsubscribe and group resubscribe.Source | Bounce, 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 sending | Yes, up to 72 hourssend_at on the Mail Send API. A send cannot be scheduled more than 72 hours in advance.Source | Yes, 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 tracking | BothOpen and click events are reported through the event webhook and the activity feed.Source | Both, with countryOpens and clicks, with the country resolved from the opening address. |
| One-click resend | Not recordedNot recorded either way. The activity feed documentation covers filtering, searching and export and describes no resend action, but absence from one page is not a statement that the feature is missing.Source | YesResend any logged message from the log, blocklist-aware. |
| Log retention | 3 to 30 days3 days of activity history on the free trial and Essentials, 7 on Pro and Premier, up to 30 with the paid activity history add-on. The 30 is included in the range because the convention here covers paid add-ons as well as plans, which is also why Postmark reads 45 to 365.Source | 7 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 monitoring | Setup guidance onlySendGrid states it has no product that acts on BIMI directly. Mail from an authenticated domain can align with BIMI, but hosting the logo, the certificate and the DNS records are all yours, and nothing monitors them.Source | Yes, per domainDKIM, SPF, DMARC policy and BIMI are checked per domain and reported on the domain page. |
| RFC 8058 one-click unsubscribe | Yes, with subscription trackingTurning subscription tracking on inserts List-Unsubscribe and a List-Unsubscribe-Post header set to one-click.Source | YesList-Unsubscribe and List-Unsubscribe-Post are added to every newsletter send. |
| Auto blocklist for bounces and complaints | YesBounces, blocks, invalid addresses, spam reports and unsubscribes each get their own suppression list. Note that a send to a suppressed address still costs a credit.Source | YesBounces and complaints from the SNS webhook go straight onto the blocklist. |
| Two-factor authentication | Yes, required on paid plansRequired for all users, subusers and teammates on paid plans, alongside API key authentication.Source | YesTime-based codes from an authenticator app. |
| SendGrid figures were read from SendGrid'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. | ||
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.
SendGrid is the other arrangement, at a scale sendvia has never operated at. Your mail leaves on SendGrid servers and the reputation is SendGrid's, and a dedicated address is something you can buy from them if you would rather not share one.
The sending domains row above is where the gap between the two is widest, and it is worth reading before you plan anything at all: one side documents a ceiling in the thousands, counted per user and per subuser, and the other has a plan limit in double figures. If you run mail for hundreds of customer domains, that row is the whole answer and the rest of this page is detail.
The DNS setup row is the one place a rival automates something sendvia does not: where GoDaddy holds the domain, the records can be published for you rather than copied by hand. sendvia generates the records and then watches them, but you add every one of them yourself. sendvia has no dedicated IP of its own either. The only route to one is buying a managed IP from Amazon inside your own account.
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.
SendGrid publishes SMTP settings of its own at smtp.sendgrid.net. 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.
| Detail | SendGrid | sendvia |
|---|---|---|
| Send API | REST API, v3 Mail Send | REST API |
| SMTP relay | Yes, smtp.sendgrid.net on 587 | Yes, an SMTP relay on 587 with 2525 as a fallback |
| The SendGrid column was read from www.twilio.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. | ||
Both are a single POST. SendGrid takes POST https://api.sendgrid.com/v3/mail/send and wraps the recipients in a personalizations array rather than a flat to field.
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 .
curl -X POST https://api.sendgrid.com/v3/mail/send \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"personalizations": [{"to": [{"email": "[email protected]"}]}],
"from": {"email": "[email protected]"},
"subject": "Your receipt",
"content": [{"type": "text/html", "value": "<p>Thanks for your order.</p>"}]
}'
Read from www.twilio.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
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 a plan feature on both sides of this table, and each cell gives the low and the high across everything that provider publishes, paid add-ons included, rather than the end that flatters it. Read the row against the plan you would actually buy, not against the best case either side can reach.
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. There is no second plan to buy for any of it, which the newsletters row above spells out for both sides.
SendGrid is the stronger of the two on the contact side, and the wins section below says where and how far. This is the one comparison on the site where the rival is aimed squarely at a job sendvia has never tried to do, so read those scenarios before the feature table rather than after it.
These come out of the same data file the table above does, and each one links to the page it was checked against.
| Detail | SendGrid | sendvia |
|---|---|---|
| Best for | A marketing team that wants a campaign builder, dynamic segments and a contact database in the same account as the sending API, or a buyer who needs subusers and dedicated IPs. | 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 SendGrid column was read from www.twilio.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.
Yes, 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 export your contacts.
Check what is missing before you start, because this is the route most likely to hit a ceiling: there is no dedicated IP option, no inbound email or parsing, no teams or sub-accounts and no official SDKs. The domain allowance is a plan limit rather than a soft cap, and a contact import arrives through an ordinary form upload bounded by PHP limits rather than a documented ceiling.
Migrate from SendGrid to sendvia walks through the rest. Plan the parallel run yourself: same traffic through both for a week, compare what lands, then cut over.