Skip to content

ArticlesCost & toolsComparison

Choosing an email provider for a small business site: why we moved to Amazon SES

We compared Resend, Amazon SES, Cloudflare, Postmark, SMTP2GO and Mailgun for our own site. What decided it was what we send and each provider's policy, not just price. Why we chose SES, and how to choose for yours.

Choosing an email provider for a small business site: why we moved to Amazon SES
On this page
  1. Start with what you send, not the price
  2. The policy check most people skip
  3. The comparison, as of 30 October 2026
  4. Why we chose Amazon SES
  5. What we gave up
  6. Setup in an afternoon
  7. The lesson we did not expect: new senders start in spam
  8. How to choose for your situation

Short answer: Choose your email provider by what you send, not by price. Our site sends three kinds of email: booking emails, a weekly newsletter and one-to-one outreach. Every transactional email provider we checked bans cold outreach, so outreach now goes from my own Google Workspace mailbox. Everything else moved to Amazon SES in Sydney, because it carries both booking emails and the newsletter, keeps our data in Australia, and costs under a dollar a month at the volume we planned for.

Start with what you send, not the price

Most comparisons start with a price table. That is the wrong end. First, write down every kind of email your software sends. Ours came to three.

  1. Transactional email. Booking confirmations with a calendar attachment, reminders, cancellations, and sign-in links for our admin area.
  2. A weekly newsletter. A digest of new posts, sent to people who signed up and then confirmed (double opt-in), with a one-click unsubscribe.
  3. One-to-one outreach. Short emails I write to a business and approve one at a time. Tens a week, not thousands.

Then write down your volume. We send about 150 to 200 emails a month, peaking at about 25 on a Friday when the digest goes out. I planned for up to 5,000 a month so we would not have to do this again soon.

Finally, write down where your sending code lives. Our site is a Next.js app on Cloudflare Pages and Workers. Workers cannot open the kind of connection that traditional mail servers use (SMTP), so we needed a provider with an HTTP API: a web address our code can post an email to.

Those notes ruled out more options than price did. At our volume, price was small change. Policy and fit were not.

So where does your email come from? A booking tool, a contact form, an invoicing app, a newsletter plugin? Make the list first.

Infographic of three kinds of email and where each goes when choosing an email provider: transactional and newsletter email through Amazon SES in Sydney, and one-to-one outreach from a real Google Workspace mailbox.
At a glance: list what you send first. Our three kinds of email ended up in two places.

The policy check most people skip

Almost nobody reads their email provider's acceptable-use policy until something goes wrong. I read ours properly after a bot abused our newsletter form, which I wrote up in our post on subscription bombing.

Resend's policy, updated on 13 October 2026, is blunt: "You are prohibited from sending unsolicited messages of any kind, including cold outreach, purchased lists, or scraped contact data."

The others say much the same thing in different words:

  • Amazon Web Services bans using its services for "unsolicited mass email".
  • Postmark says "All email lists contained and/or used with respect to the Service must be permission-based subscriptions."
  • SMTP2GO forbids "unsolicited mass emails or unsolicited emails of any kind".
  • Mailgun says email that is not transactional "can only be sent where permission has been expressly obtained".
  • Brevo asks you to be able to prove opt-in for every contact.
  • Cloudflare Email Service only allows transactional email, so outreach is off the table.

So the question changed. It was never "which provider allows outreach", because none of them do. It became "which email belongs where".

Our outreach is a person writing to a person. In Australia, the Spam Act allows a commercial email to a work address a business has conspicuously published, as long as the message is relevant to that person's role and the publication does not say "no unsolicited email" (Schedule 2, clause 4). ACMA's guidance covers the rest: identify yourself and your business, and include an unsubscribe option that works. That is our reading, not legal advice.

So outreach now goes from my Google Workspace mailbox through the Gmail API, with permission to send and nothing else. Workspace allows 2,000 messages a day per user, far more than we need.

To be fair, Google's policy also bans "unsolicited mass email". Our view is that a handful of emails I approve one by one, each relevant to its reader, is ordinary business email, not mass mail. Send hundreds of near-identical emails a day and that argument stops working, wherever you send from.

What we gave up: open and click tracking on outreach. What we got: replies land in my inbox, and plain emails from a real mailbox tend to reach the inbox more often than templated ones.

The comparison, as of 30 October 2026

Prices are in US dollars per month, taken from each provider's own pricing page on 30 October 2026. They change often, so check before you decide.

Provider 1,000/mo 5,000/mo 10,000/mo Free tier Newsletter allowed Delivery events Works from Workers Data location Cold outreach
Amazon SES $0.10 to $0.16 $0.50 to $0.80 $1.00 to $1.60 Sandbox only (200/day, verified addresses) Yes, opt-in only All, through SNS or EventBridge Yes, with signed requests The region you pick, including Sydney No
Resend $0 $20 $20 3,000/mo, 100/day, received mail counts Yes, broadcasts (free up to 1,000 contacts) All, with signed webhooks Yes, easiest United States No, named in policy
Cloudflare Email Service (beta) $5 $5.70 $7.45 3,000/mo with Workers Paid No, transactional only Delivery status and failures; no opens or clicks found Yes, built in Not stated No
Postmark $15 $15 $15 100/mo Yes, broadcast stream Webhooks Yes US company No
SMTP2GO $0 $10 $10 1,000/mo Yes, 100% opt-in Webhooks Yes New Zealand company No
Mailgun $0 $15 $15 100/day Yes, with provable consent Webhooks Yes US or EU No

Notes on the numbers:

  • SES has two prices. Pay-as-you-go is $0.10 per 1,000, plus $0.12 per GB of attachments. Since July 2026, brand-new accounts start on an "Essentials" plan at $0.16 per 1,000. You can switch to pay-as-you-go at any time.
  • Cloudflare includes its base fee. Sending needs the Workers Paid plan, which has a $5 monthly minimum. If you already pay it, your extra cost at 5,000 a month is $0.70.
  • Resend's newsletter tool is priced separately. Marketing email is billed by contacts, not sends: free up to 1,000 contacts, then from $40 a month.
Email provider cost comparison at 5,000 emails a month in US dollars: Amazon SES about $0.50, Cloudflare Email Service $5.70, Postmark $15 and Resend Pro $20, as of October 2026.
At a glance: at 5,000 emails a month the cost gap is real but small. Policy and fit decided it for us.

Why we chose Amazon SES

Four reasons.

It carries both kinds of email. Booking emails and the newsletter go through one provider, with one set of DNS records and one sender reputation to look after.

Our data can stay in Australia. SES has a Sydney region. That matters to us because we talk to clients every week about where their data lives. Resend stores account data, including email metadata and logs, in the United States whichever sending region you pick.

It costs almost nothing. At 5,000 emails a month, SES is about $0.50 to $0.80 a month, or roughly $6 to $10 a year. Resend Pro would be $240 a year. Neither will sink a small business, but the gap is real.

We will not outgrow it. Once we left the sandbox, our quota was 50,000 emails a day at 14 a second.

What we gave up

The nicest developer experience. Resend is a pleasure: one API key, clear docs, signed webhooks and broadcasts with automatic unsubscribe. SES makes you sign every request with AWS's signing scheme (we used aws4fetch, a small library, from Workers). Events go to AWS's messaging services (SNS or EventBridge), and you wire them up yourself.

A built-in newsletter tool. SES sends what you hand it. We already had our own list, unsubscribe page and one-click unsubscribe header. If you do not, a broadcast tool like Resend's saves a lot of work.

Why not Cloudflare? It was tempting. It lives on the same platform as our site, and we already pay for Workers. But sending is still in beta, and Cloudflare's FAQ is clear: "No. Email Service supports transactional email only." That rules out our newsletter. We also found no open or click tracking, and new accounts start with "a conservative daily quota" that Cloudflare does not publish. We will look again when it leaves beta.

We kept Resend as a fallback while SES settled in. One setting decides which provider the site uses, so switching back is a redeploy, not a rebuild. If you migrate, build that switch first.

Setup in an afternoon

We used the AWS command line tool for SES and Cloudflare's API for DNS. It took about an afternoon, including testing.

  1. Verify your domain with Easy DKIM. SES gives you three DNS records to add. DKIM is a digital signature that proves an email really came from your domain.
  2. Set a custom MAIL FROM subdomain. This adds two records (MX and SPF) on a subdomain, so the behind-the-scenes return address is your own domain rather than Amazon's. That lets SPF line up with DMARC.
  3. Create a configuration set with suppression. Addresses that bounce or complain are blocked from future sends automatically.
  4. Create a send-only user. The website's credentials can send email from your domain and do nothing else in your AWS account.
  5. Request production access. New accounts start in a sandbox: 200 emails a day, one a second, and only to addresses you have verified. AWS says it responds within 96 hours. Ours was approved within a few hours. Say clearly what you send and how you handle bounces.
Amazon SES setup steps for a small business site: verify the domain with Easy DKIM, set a custom MAIL FROM subdomain, create a configuration set with suppression, create a send-only user, and request production access.
At a glance: the five setup steps for Amazon SES, about an afternoon from start to production access.

The lesson we did not expect: new senders start in spam

Our first SES emails went to Gmail spam, even though SPF, DKIM and DMARC all passed.

Nothing was broken. Those checks prove an email came from you, not that people want it. A new sending service has no reputation yet.

If you switch providers:

  • Warm up with email people expect. Booking confirmations and sign-in links get opened, and opens build reputation.
  • Ask your first recipients to mark you as "Not spam".
  • Keep bulk email on the old provider for a week if you can.

We did not manage that last one. Our system retries a digest that fails completely, so it went out through SES minutes after we switched. Fifteen sent, one bounce, suppressed automatically. Fine, but I would rather have waited.

How to choose for your situation

  • If you send outreach to people who have not asked for it: no transactional provider will carry it. Send from a real mailbox, one email at a time, within your local spam law.
  • If you send under 3,000 a month and want the easiest setup: Resend's free tier. Watch the 100-a-day cap, and remember received mail counts towards it.
  • If you also send a newsletter and care about cost or keeping data in Australia: Amazon SES, as long as someone on your team is comfortable with AWS.
  • If you only send transactional email from Cloudflare Workers and do not need opens or clicks: Cloudflare Email Service, once it is out of beta.
  • If deliverability matters most and $15 a month is fine: Postmark.
  • If you want a free tier up to 1,000 a month and a simple dashboard: SMTP2GO.
  • If your data needs to stay in Europe: Mailgun's EU region, or SES in a European region.

The smallest experiment takes 20 minutes. List every email your systems sent last week, by kind and by count. Then read your current provider's acceptable-use policy. You may already be in the right place, or one kind of email may belong somewhere else.

If you would like a second opinion, book a free 1-hour consult. We will look at what your business sends, where it sends from, and leave you with a short, plain plan. Getting email right is rarely about the cheapest provider. It is about putting each kind of email where it belongs.

  • Email providers
  • Amazon SES
  • Resend
  • Cloudflare
  • Email deliverability
  • Small business websites

Questions this article answers

Which email provider is cheapest for a small business website?

At a few thousand emails a month, Amazon SES is the cheapest we found. As of October 2026 it costs US$0.10 to US$0.16 per 1,000 emails, depending on your plan, so 5,000 emails a month is under a dollar. Resend, SMTP2GO and Mailgun have free tiers that cover very small volumes, but their paid plans start at US$10 to US$20 a month.

Can I use Resend, Amazon SES or Mailgun for cold outreach?

No. Every transactional email provider we checked bans unsolicited email. Resend's policy names cold outreach, purchased lists and scraped contacts. If you send one-to-one business emails, send them from a real mailbox, one at a time, and follow your local spam law.

Can I send a newsletter with Cloudflare Email Service?

Not as of October 2026. Cloudflare's FAQ says the service supports transactional email only, and sending is still in beta. Use it for booking confirmations, receipts and sign-in links, and send your newsletter through a provider that allows opt-in marketing email.

Can Amazon SES keep email data in Australia?

Yes. SES has a Sydney region, so you can send from and keep your sending data in Australia. Resend, by contrast, stores account data, including email metadata and logs, in the United States whichever sending region you pick.

How long does it take to get out of the Amazon SES sandbox?

AWS says it responds to production access requests within 96 hours. Ours was approved within a few hours. Until then you can send only 200 emails a day, one per second, and only to addresses you have verified.

Why do my first emails from a new provider go to spam?

SPF, DKIM and DMARC prove an email really came from you, but not that people want it. A new sending service starts with no reputation. Warm up with emails people expect and open, such as booking confirmations, and ask early recipients to mark you as not spam.

What's actually useful in AI, every Friday

We follow everything happening in AI and send what's worth your time: new models, AI agents, and how to put them to work. One email a week, unsubscribe anytime.

One good place to start

What would you like to take off your plate?

Bring a process that feels repetitive or harder than it needs to be. We’ll help you find a practical first step.

Book a free consult

A free 1-hour conversation with AJ. No pressure, no pitch.