Abstract flat illustration of two envelopes on either side of a balance scale, with a small inbox tray below

SendGrid vs Mailgun 2026: Price, Inbound, Logs, Support

SendGrid is the cheaper of the two from about 13,000 to 100,000 emails a month: $19.95 for 50,000 and $34.95 for 100,000, against Mailgun’s $35 and $75. Mailgun is cheaper below that, keeps a free plan that never expires, and gets you a dedicated IP at 100,000 emails for $75 where SendGrid charges $89.95.

SendGrid gives every paid plan 24/7 live chat. Mailgun keeps 30 days of logs on Scale, where SendGrid tops out at 7 without an add-on.

The quick answer: pick SendGrid Essentials for one-way transactional mail between 13,000 and 100,000 a month, and Mailgun for low volume, a free tier that stays free, cheap dedicated IPs or flexible inbound routing. If your mail has to come back and be answered (an AI agent with its own address, a support desk, anything with a reply loop), both hand you a webhook POST per incoming message and leave storage, threading and spoof checks to you. CarlyEmail gives you real inboxes that receive, store and thread mail, with signed webhooks and replies that land in the thread. It’s free for 3 inboxes and 1,000 emails a month, then $20 a month for 25 inboxes.

Prices and plan limits were read from SendGrid’s and Mailgun’s live pricing pages (including the plan data embedded in them), their docs and their help centers on October 2, 2026, in USD.

SendGrid vs Mailgun at a glance

SendGrid (Twilio)Mailgun (Sinch)
Free option60-day trial at 100 emails a day, then sending stopsPermanent free plan, 100 emails a day; real recipients only after you add a card
Cheapest paid planEssentials: $19.95/mo for 50,000 emailsBasic: $15/mo for 10,000 emails
100,000 emails a month$34.95 (Essentials), $89.95 with a dedicated IP (Pro)$75 with a dedicated IP (Foundation), $90 (Scale)
Going over your planBilled, rate not published on the pricing page; hard stop at 10x your allotment$1.80 down to $0.40 per 1,000 by tier; can’t be switched off
BillingMonthly onlyMonthly only
Extra dedicated IP$30/mo (Pro and up)$59/mo
Log and activity history3 days (Essentials), 7 days (Pro)1 day (Free, Basic), 5 days (Foundation), 30 days (Scale)
SupportTickets on every plan, 24/7 chat on paid plans, phone callbacks from ProTickets on every plan, chat and phone on Scale only
Team access1 teammate on Essentials, 1,000 on ProSingle user on Free and Basic, unlimited users from Foundation
EU dataEU data residency on Pro and PremierUS or EU region, chosen per domain
ReceivingInbound Parse webhook, every planRoutes: 1 on Free, 5 on Basic, full routing from Foundation
Marketing emailMarketing Campaigns, a separate plan from $15/moTemplates and mailing lists inside Send
Official SDKsC#, Go, Java, Node.js, PHP, Python, RubyGo, Java, Node.js, PHP, Python, Ruby

Neither one gives you a mailbox: no stored inboxes, no threads, no reply-in-thread endpoint. That gap is what CarlyEmail fills, covered further down.

SendGrid or Mailgun: the pick by use case

  • Under about 13,000 emails a month, or you want a free tier that lasts: Mailgun. Free covers 100 a day and Basic is $15 for 10,000.
  • 13,000 to 100,000 a month on a shared IP: SendGrid Essentials, $19.95 or $34.95.
  • 100,000 a month on your own dedicated IP: Mailgun Foundation 100K at $75, against SendGrid Pro 100K at $89.95.
  • You want a chat window without a big plan: SendGrid, which opens 24/7 chat on every paid plan. Mailgun waits until Scale.
  • You need 30 days of logs: Mailgun Scale. SendGrid needs a paid history add-on past 7 days.
  • EU data on a small budget: Mailgun, where you pick the US or EU region per domain. SendGrid’s EU data residency starts at Pro.
  • Newsletters from the same vendor: SendGrid, through Marketing Campaigns.
  • Inbound routing rules for a webhook: Mailgun Routes, with filters, quote-stripped text and short-term storage.
  • An AI agent or support inbox that reads and answers mail: CarlyEmail.

What SendGrid and Mailgun cost at 10,000, 50,000 and 100,000 emails

The cheapest published setup for each monthly volume:

Emails a monthSendGridMailgunCheaper
Up to 3,000 (100 a day)60-day trial, then $19.95Free: $0Mailgun
10,000Essentials 50K: $19.95Basic: $15Mailgun
20,000Essentials 50K: $19.95Basic + 10,000 at $1.80 per 1,000: $33SendGrid
50,000Essentials 50K: $19.95Foundation 50K: $35SendGrid
100,000Essentials 100K: $34.95Foundation 100K: $75SendGrid
100,000 with a dedicated IPPro 100K: $89.95Foundation 100K: $75Mailgun

How to read it:

  • The crossover is about 12,750 emails. Past that, Mailgun Basic plus overage costs more than SendGrid’s $19.95, which already covers 50,000.
  • Higher up, the gap closes. SendGrid Pro 300K is $249 and Mailgun Scale 250K is $215. At the top of self-serve, SendGrid Pro 2.5M is $1,099 and Mailgun Scale 2.5M is $1,250.
  • Overage works differently. Mailgun publishes its rates, bills them on the 1st and won’t let you turn them off. SendGrid’s Email API page only says overages “may apply”, and since March 26, 2026, Essentials and Pro stop at 10 times the plan allotment.
  • Neither offers annual billing, so there’s no discount for paying upfront.

Every tier, add-on and fine-print rule is in SendGrid pricing and Mailgun pricing.

Deliverability tools

Both authenticate your domain, manage suppressions and sell dedicated IPs. The difference is what comes bundled.

SendGrid puts its monitoring on every plan, the trial included: domain authentication, link branding, suppression management, the Deliverability Insights dashboard, ISP feedback-loop data and a Sender Engagement Quality score. Pro ($89.95 and up) adds a dedicated IP with automated warm-up, IP pools, reverse DNS, bounce and block classifications, 2,500 address validations and 60 email-testing credits a month for inbox rendering and spam checks. Essentials can’t add a dedicated IP.

Mailgun includes SPF, DKIM, DMARC and BIMI support and suppression management on every plan. Foundation adds a dedicated IP (buyable at 50,000 emails, included at 100,000) with automated warm-up. Scale adds IP pools, send time optimization and 5,000 validations. Inbox placement and reputation monitoring are a separate product, Mailgun Optimize: $49 a month for 2,500 validations and 25 inbox placement tests, or $99 for 5,000 validations, 50 tests, spam-trap and blocklist monitoring, and Google Postmaster Tools and Microsoft SNDS integration.

On a shared IP, no dashboard fixes a pool neighbour’s reputation, and a dedicated IP needs steady volume to build a reputation of its own. At low volume, authentication and sending mail people expect matter more than which vendor you pick.

Logs, support and SDKs

Logs. SendGrid’s searchable Email Activity covers 3 days on the trial and Essentials and 7 days on Pro; a longer history is a paid add-on. Mailgun keeps logs for 1 day on Free and Basic, 5 on Foundation and 30 on Scale, and bounce classifications follow the same windows. Mailgun also stores a copy of each message on Foundation (1 day) and Scale (3 days by default, up to 7). On either entry plan, if a customer says “I never got it” a week later, the record is gone unless you streamed events into your own database.

Support. SendGrid takes tickets 24/7 on every plan, opens 24/7 live chat on any paid plan (a chat waiting past 15 minutes can be converted into a ticket) and offers phone support as callback requests from Email API Pro. Mailgun takes tickets on every plan and adds live chat and phone only on Scale, from $90 a month. At the entry price, SendGrid buys you a chat window and Mailgun a ticket queue. How those queues perform is in the user reports below.

API and SDKs. SendGrid’s v3 Mail Send takes a JSON body built around a personalizations array, with a bearer API key that can be scoped by permission on every plan. Its official libraries cover C#, Go, Java, Node.js, PHP, Python and Ruby, though the Node (@sendgrid/mail) and Python (sendgrid) packages haven’t shipped a release since September 19, 2025. Mailgun takes form fields at /v3/{your-domain}/messages with HTTP basic auth (api as the username), and EU domains use a separate base URL, api.eu.mailgun.net. Its SDKs cover Go, Java, Node.js, PHP, Python and Ruby, and they’re actively released: mailgun.js 14.0.1 shipped on September 4, 2026 and the Python SDK 1.9.1 on September 21. Role-based API keys start on Foundation; Free and Basic get 2 keys. To drive SendGrid from Claude or another assistant, see SendGrid MCP.

What users report in 2025 and 2026

People write reviews when sending breaks, so every email vendor skews negative. The patterns are still worth knowing.

SendGrid sits at 1.2 out of 5 on Trustpilot as of October 2026. This year’s reviews are mostly about access and support: an account suspended on a Saturday whose queued mail was deleted before service came back (August), emails to support with “no response after 1 week” (September), and a trial that stopped sending while the customer was stuck in manual onboarding (August). On Hacker News, the free-plan removal drew the most comment in 2025 (one developer called the $19.95 floor “totally overkill for low traffic projects”), and 2026 brought deliverability complaints: “Even with a dedicated IP, SendGrid has always had poor deliverability” (April), and a customer renting dedicated IPs said support took weeks to reply (January).

Mailgun sits at 4.1 out of 5 on Trustpilot, much of it short reviews praising quick, helpful support, including on the free plan. The bad reviews are about suspensions. A Foundation customer whose account was disabled in September 2026 lost sending, inbound webhooks and forwarding at once and waited three days for a ticket reply. A small manufacturer was suspended without warning in July with no reply for 24 hours. On Hacker News in 2025, a developer who had moved off Mailgun said its IPs “were constantly getting on spam blocklists with yahoo and hotmail.”

The takeaway for both: automated risk systems can pause an account with little notice, so keep a second sending provider configured if email is critical. That Mailgun reviewer’s inbound stopped along with sending, because both ran on the same account.

Receiving mail: Inbound Parse vs Routes

Both can receive mail. Neither keeps a mailbox.

SendGrid Inbound Parse. Point a dedicated hostname’s MX record at mx.sendgrid.net (it has to be an authenticated domain) and map it to one URL. SendGrid POSTs each message as multipart form data: headers, text and HTML bodies, attachments, SPF and DKIM results, and a SpamAssassin score if you switch spam checking on (it only checks messages up to 2.5 MB). Messages can be up to 30 MB. If your endpoint answers with a 5xx, SendGrid queues and retries; after 3 days the message is dropped, with no notification. It won’t follow redirects. A security policy can sign each POST (ECDSA) or attach an OAuth token.

Mailgun Routes. A route pairs a filter (match_recipient(), match_header() or catchall()) with actions (forward() to a URL or address, store(), stop()), evaluated by priority. Forwarded mail arrives HMAC-signed with body-plain, stripped-text (the new reply without the quoted chain or signature) and attachments, or as a single JSON document if your URL ends in json. A failed POST is retried for 8 hours (after 10 minutes, 15, 30, 1 hour, 2 and 4) and a 406 rejects it outright. store() keeps the message only as long as your plan’s message retention. The spam filter is off by default; set it to mark spam and SPF and DKIM results arrive as X-Mailgun-Spf and X-Mailgun-Dkim-Check-Result headers.

Mailgun’s routes are the more capable of the two: filters, priorities, quote-stripped text and short-term storage. SendGrid’s Parse is simpler and retries for longer. For a contact form or a “reply to this ticket” feature, either works, and email to webhook walks through the pattern.

Everything past the POST is your build on both: storing every message, threading replies by Message-ID, In-Reply-To and References (and by subject when Outlook drops them), checking the SPF and DKIM verdicts before acting, and sending replies with the right headers so they land in the same conversation. For an AI agent that reads mail and acts on it, that plumbing is most of the project.

If the mail has to be answered: CarlyEmail

CarlyEmail is an email API built for the half SendGrid and Mailgun leave to you: real inboxes for AI agents and apps that hold conversations. One API call creates an address on carlyemail.com or your own domain, with SPF, DKIM and DMARC set up for you. Mail from Gmail, Outlook or anything else is received, stored and threaded, and your reply lands inside the thread.

SendGrid Inbound ParseMailgun RoutesCarlyEmail
What you getA POST per message, one URL per hostnameA POST per matching message, or a short-term stored copyA real inbox per address, created with one API call
Stored copyNoneNone on Free and Basic, 1 day on Foundation, up to 7 on ScaleKept until you delete it, within plan storage
If your endpoint is downRetried on 5xx, dropped after 3 daysRetried for 8 hoursStored before any webhook fires; 7 attempts over about 18 hours, and the message is always listable
ThreadsYour codeYour codeAssembled on arrival, including replies Outlook mangles
New text without the quoted chainYour codestripped-textextracted_text
Spoofed mailSPF and DKIM fields to checkHeaders to check, if the filter marks spamKept, labelled, sent as message.received.unauthenticated
Replying in the threadA separate send, headers set by youA separate send, headers set by youThe reply endpoint sets In-Reply-To and References
Per-customer isolationSubusers, from ProSubaccounts, Enterprise onlyPods and keys scoped to a pod or inbox, every plan
import { CarlyEmail } from "carlyemail";

const carly = new CarlyEmail();
const inbox = await carly.inboxes.create({ username: "hello" });
const { messages } = await carly.messages.list(inbox.email);
await carly.messages.reply(inbox.email, messages[0].message_id, { text: "On it." });

What you stop building:

  • Events that resume the right conversation. Signed webhooks and WebSockets fire the moment mail lands, carrying a thread_id, so Josh’s support agent picks up the thread where it left off. Nothing is acknowledged to the sender’s server before it’s stored.
  • A receiver you don’t have to write. The Python SDK ships one: it checks the signature over the raw bytes, ignores repeated event_ids, drops mail the inbox sent itself, applies an allow-list, and answers the webhook before your handler runs, so a long model turn doesn’t trigger a retry and a second reply.
  • Spoof filtering before your handler. Mail failing SPF, DKIM or DMARC arrives as message.received.unauthenticated and spam as message.received.spam, so a forged “from your CEO” email never reaches your message.received code. It’s kept and labelled, not dropped.
  • Received mail that doesn’t eat your quota. Only sent recipients count toward the monthly allowance, and messages stay until you delete them.
  • A guardrail the agent can’t argue past. A key with draft_create but not message_send gets a 403 on send. The agent writes drafts, Claire approves them.
  • Tenant isolation on every plan. Pods give each customer their own space, and a key scoped to one pod or inbox gets a 404 for anyone else’s mail.
  • Every interface your stack speaks. REST, a TypeScript SDK (npm install carlyemail), a Python SDK (pip install carlyemail), a CLI, and a hosted MCP server at https://api.carlyemail.com/mcp with 33 tools. The docs have framework guides for LangChain, the OpenAI Agents SDK, the Claude Agent SDK, the Vercel AI SDK, Mastra and Cloudflare Agents. You keep your agent and your model key.
  • An agent can sign itself up. Paste Read https://docs.carlyemail.com/llms.txt and set yourself up with an email address. into any agent. Until the owner confirms a 6-digit code, the account can only email its owner.

CarlyEmail pricing: Free is $0 with no card: 3 inboxes, 1,000 emails a month (100 a day), 1 custom domain and 1 GB of storage. Startup is $20 a month for 25 inboxes, 10,000 emails with no daily cap, 10 domains and 25 GB. Business is $200 a month for 250 inboxes, 100,000 emails, 100 domains and 250 GB. Enterprise covers higher volume, a dedicated sending domain or custom terms. Every plan gets the whole API, no plan adds a “Sent via” footer, and a request that would cross a cap is refused with a 429 naming the cap instead of quietly running up overage. Cancelling drops you to free and deletes nothing. The quickstart gets a first inbox running in minutes. Get started with CarlyEmail.

The honest scope line: if all you do is send receipts at volume, SendGrid Essentials and Mailgun Foundation are priced for that, and they’re cheaper per message than CarlyEmail. If mail has to come back and be answered, that’s what CarlyEmail is for. Plenty of teams run both: Emily keeps order receipts on Mailgun and gives her support agent a CarlyEmail inbox. For the wider field, see email APIs for AI agents, the best email APIs, SendGrid alternatives and Mailgun alternatives.

Amazon SES vs SendGrid

Amazon SES is the cheapest of the three per email. Since July 21, 2026, new SES accounts start on the Essentials plan at $0.16 per 1,000 emails, which bundles AWS’s deliverability dashboard. Switching the account to à la carte drops that to $0.10 per 1,000 plus $0.12 per GB of data sent. At 100,000 emails a month, that’s $16 on Essentials or about $10 plus data on à la carte, against $34.95 for SendGrid Essentials 100K.

The trade is everything around the send:

  • Getting started. New SES accounts sit in a sandbox (200 emails a day, 1 a second, verified recipients only) until AWS grants production access. SendGrid’s trial sends 100 a day for 60 days.
  • Dedicated IPs. A standard SES dedicated IP is $24.95 a month, and SES’s Pro plan ($105 a month plus $0.22 per 1,000) includes managed ones. SendGrid includes one from Pro at $89.95 and charges $30 for each extra.
  • Inbound. SES receipt rules drop raw MIME into S3 (up to 40 MB) or SNS for $0.10 per 1,000 plus $0.09 per 1,000 chunks of 256 KB, and parsing, threading and storage are yours to build. SendGrid parses for you but keeps nothing.
  • Tooling. SendGrid gives you a dashboard, an activity search, chat support on paid plans and a marketing product. SES gives you AWS building blocks and expects you to assemble them.

Already running on AWS with someone comfortable in IAM and receipt rules? SES. Want a dashboard and less to wire up? SendGrid. The full SES breakdown is in Amazon SES pricing.

FAQ

Is SendGrid or Mailgun cheaper?

It depends on volume. Under about 13,000 emails a month, Mailgun: free for 100 a day, then Basic at $15 for 10,000. From there to 100,000, SendGrid Essentials at $19.95 for 50,000 and $34.95 for 100,000, against Mailgun’s $35 and $75. If you need a dedicated IP at 100,000, Mailgun Foundation 100K at $75 beats SendGrid Pro 100K at $89.95.

Does SendGrid or Mailgun have a free plan?

Mailgun does: 100 emails a day, permanently, though until you add a card you can only send from the sandbox domain to up to 5 verified addresses. SendGrid replaced its free plan with a 60-day trial at 100 emails a day in 2025, and sending stops when the trial ends. CarlyEmail’s free plan is permanent too: 3 inboxes, 1,000 emails a month and a custom domain, no card.

Which has better deliverability, SendGrid or Mailgun?

Neither wins outright. On a shared IP your inbox placement depends on the pool, and users report deliverability trouble with both. SendGrid bundles more monitoring into its base plans (Deliverability Insights, feedback-loop data, an engagement quality score), while Mailgun sells inbox placement tests and blocklist monitoring as Optimize from $49 a month. Authenticating SPF, DKIM and DMARC and sending mail people expect matter more than the vendor.

Can SendGrid or Mailgun receive email?

Yes, through webhooks. SendGrid’s Inbound Parse POSTs each message to your URL and stores nothing. Mailgun’s Routes filter and forward mail and can store a copy for up to 7 days on Scale. Neither gives you inboxes or threads. CarlyEmail does: real inboxes, threads assembled on arrival and replies that land in the same conversation.

Is Amazon SES cheaper than SendGrid?

Yes, per email. New SES accounts start on the Essentials plan at $0.16 per 1,000, and switching to à la carte brings it to $0.10 per 1,000 plus $0.12 per GB, so 100,000 emails costs $16 on Essentials or $10 plus data on à la carte, against $34.95 on SendGrid Essentials 100K. The trade is setup: SES starts in a sandbox until AWS approves production access, and inbound arrives as raw MIME for you to parse.

Should I use SendGrid or Mailgun for an AI agent’s email?

Either can send an agent’s outbound notifications, but an agent that reads and answers mail needs an inbox, and both stop at a webhook POST. CarlyEmail gives each agent a real address with threads, signed events and spoofed mail filtered out before your handler, free for 3 inboxes and 1,000 emails a month.

Give your agent a real inbox

Your agent gets its own email address. People can email it, it answers in the same thread, and your personal inbox stays out of it. Start with 3 inboxes, no card needed.

Get started
See the prompt
Read https://docs.carlyemail.com/llms.txt and set yourself up with an email address.