SES Bridge for Ghost · Guide · checked October 1, 2026
Sending Ghost newsletters through Amazon SES: your options
The short answer
Self-hosted Ghost can send transactional email (sign-in links, staff invites) through Amazon SES using its normal SMTP mail settings. But Ghost's newsletter (bulk email) sending only speaks Mailgun's API. Ghost's own configuration docs say Mailgun is optional for transactional email "but it is required for bulk mail". So to send newsletters through SES you need something that speaks Mailgun's API to Ghost and hands the mail to SES: a Mailgun-compatible proxy. You can run one yourself for free, or pay for a hosted one.
Your options at a glance
| Option | Cost | You run a server? | Good fit if… |
|---|---|---|---|
| Stay on Mailgun | Mailgun's plan prices | No | It works for you and the bill is fine. |
| Ghost(Pro) | Ghost(Pro) plan | No | You'd rather not self-host at all. Ghost(Pro) sends newsletters for you; you don't choose the provider. |
| Self-host an open-source Mailgun-to-SES proxy | Free software + your hosting + SES fees | Yes | You're comfortable running, updating and monitoring one more service. |
| Hosted proxy (Mailpunch, SES Bridge for Ghost) | Monthly fee + SES fees | No | You want SES pricing without operating the proxy. |
| Send newsletters from a separate email tool | That tool's price | No | You're willing to give up Ghost's built-in newsletter editor and member email analytics. |
What any SES route needs from you
Whichever proxy you choose, the AWS side is the same, and it's your account:
- Verify your sending domain in SES (Easy DKIM records in your DNS), ideally with a custom MAIL FROM subdomain.
- Request SES production access. New SES accounts start in the sandbox, which only sends to verified addresses. AWS reviews the request; describe your opt-in newsletter and how you handle bounces and complaints.
- Create a configuration set with event publishing (for example to SNS) for deliveries, bounces, complaints and, if you want open tracking, opens. Without this, Ghost's newsletter analytics and member email status won't update.
- Create a narrowly scoped IAM user or role that can only send email through SES (for example
ses:SendEmailandses:SendRawEmail), and give the proxy only those keys.
SES pricing: on September 30, 2026 AWS listed $0.10 per 1,000 emails à la carte, or $0.16 per 1,000 on the Essentials plan that new SES accounts start on. Check the AWS SES pricing page for current numbers and data-transfer charges.
What a proxy has to do for Ghost to work properly
Ghost's bulk email client reads a Mailgun base URL, API key and domain from its settings (bulkEmail.mailgun in the Ghost source). A proxy that only accepts sends is not enough. To keep Ghost working fully, it should handle:
- Batched sends with recipient variables: Ghost sends newsletters in batches and personalises each recipient's copy.
- The events API: Ghost polls Mailgun's events endpoint for delivered, opened, failed and complained events. That's what feeds newsletter analytics and marks bouncing members.
- Suppressions: bounces and complaints should suppress future sends, and Ghost's suppression removals should be honoured.
When comparing proxies, check which of these each one implements, and check its license and how recently it was updated.
Option: self-host an open-source proxy (free)
There are several open-source Mailgun-compatible proxies for Ghost on GitHub. These are the ones we found on October 1, 2026 (we haven't audited any of them; read the code and license before you deploy one):
- typetale-app/mailgun-ses-proxy: Node.js proxy for SES (updated September 2026).
- josephsellers/ghost-ses-proxy: drop-in Mailgun API proxy for SES.
- exlab-code/ghost-cms-amazon-ses-adapter: SES adapter for Ghost bulk email.
- jcastro/mailgun-ses-proxy and tilak999/mailgun-ses-proxy: smaller SES proxies.
- osaki-io/ghost-mail-proxy: SES and Zoho ZeptoMail adapters.
- ifrederico/ghost-mail-bridge: Mailgun-compatible bridge with an SES backend.
- eznix86/mailgun-proxy-for-ghost: the open-source core of Mailpunch, multi-provider.
What you take on: a server or container to run it, TLS, keeping it updated as Ghost changes, storing your AWS keys safely, wiring SES events back so Ghost's analytics work, and noticing when it breaks before a newsletter goes out.
Option: a hosted proxy
- Mailpunch: a managed version of the eznix86 open-source proxy. Multi-provider (SES, Resend, Postmark, Brevo and others) with failover and load balancing. On October 1, 2026 its paid plans were waitlist-only, listed at $9/month (Solo) and $29/month (Pro), with a free self-hosted tier.
- SES Bridge for Ghost (ours): SES only, one Ghost site, sends plus events plus suppressions. It's a pre-order: $5 one-time covers the first 30 days, then a planned $9/month if you choose to continue. It ships by December 1, 2026, or you get a full refund, and the project is cancelled with full refunds if fewer than 3 people pre-order by October 30, 2026.
Which should you pick?
- You like running services and want $0 software cost: self-host one of the open-source proxies.
- You want several providers or failover: Mailpunch (once it opens) or its open-source core.
- You only want SES, without running anything: a hosted SES proxy, such as SES Bridge for Ghost.
- You don't want to deal with email infrastructure at all: Mailgun or Ghost(Pro).
Whatever you choose, send only to people who subscribed to your Ghost site, and keep bounce and complaint rates low. AWS can pause SES sending for accounts with high bounce or complaint rates.