SendOps

Guide

Email marketing on Amazon SES: the complete picture

Amazon SES sends a million emails for about $100 — often a tenth of what managed email platforms charge. But SES is delivery infrastructure, not a marketing product: no contacts, no campaigns, no automation, no analytics. This guide covers every honest way to close that gap — including building it yourself, self-hosting, key-paste SaaS, and running a control plane inside your own AWS account.

Why SES at all

The economics are hard to argue with

SES charges $0.10 per 1,000 emails and nothing per contact. At meaningful volume, the gap between SES and managed email platforms isn't a discount — it's an order of magnitude. Here's what one million emails a month costs, as of July 2026:

Amazon SES

≈ $100

$0.10 per 1,000, linear — 100k costs ~$10, 10M costs ~$1,000

Resend

≈ $650+

Volume tier, plus separate contact-based fees for marketing audiences

Mailgun

≈ $1,080

List price at this volume tier

Postmark

$1,200+

Volume-based pricing

Prices are list prices as of July 2026 and change over time — check each provider for current numbers. The structural point holds regardless: SES bills per email sent, with no per-contact fees, so a large, mostly-quiet list costs you nothing until you actually mail it.

The catch

What SES doesn't do

SES is a superb delivery engine, and that's all it tries to be. Everything a marketer would recognize as “the product” is missing by design:

No audience model

SES has no concept of a contact, a list, or a segment. There is nowhere to store subscriber attributes, preferences, or history — you bring your own database.

No campaign tooling

There is no campaign builder, no scheduling, no A/B testing, no send-time controls. SES accepts one API call per message and leaves orchestration to you.

No automation

Welcome series, onboarding drips, re-engagement journeys — none of it exists. Multi-step, behavior-triggered workflows are entirely your problem to build.

No marketing analytics

SES emits raw delivery, bounce, and complaint events. Turning those into open rates, click maps, campaign reports, or deliverability trends requires a pipeline you assemble.

No consent management

Unsubscribe pages, suppression lists, preference centers, and compliance workflows are not provided. Getting these wrong risks your sender reputation — and the law.

And one hurdle: the sandbox

Every new SES account starts sandboxed — verified recipients only, low quotas. You must request production access and convince AWS you handle bounces, complaints, and unsubscribes properly before you can send a single real campaign.

So the real question was never “can SES do email marketing?” It's “what do I put on top of SES?” You have four options.

Your four options

Four ways to put marketing on top of SES

Each of these is a legitimate choice with a real constituency. The differences come down to setup effort, who runs the servers, who holds your AWS credentials, and how deep the automation and analytics go.

Build it yourself

EventBridge + SNS + Lambda + your own database

Total control — every behavior is exactly what you designed.

Setup

Weeks to months: event plumbing across EventBridge, SNS, Lambda, and CloudWatch, plus a contact store, unsubscribe handling, and send orchestration — and the sandbox-exit paperwork.

Who runs servers

You — it's your infrastructure and your application code.

Who holds credentials

Nobody new. Everything stays inside your AWS account.

Automation depth

Whatever you build. Every new workflow is another engineering project.

Analytics

CloudWatch metrics plus whatever dashboards you assemble.

Cost shape

SES pennies, plus significant and recurring engineering time.

Self-hosted tools

Sendy, MailWizz, Listmonk

Low or one-time license cost, with your data on your own box.

Setup

Hours to days: a server, a database, the app itself (PHP for Sendy and MailWizz, a Go binary for Listmonk), SES credentials, and cron jobs.

Who runs servers

You — provisioning, patching, upgrades, and backups are yours forever.

Who holds credentials

Your server stores your SES SMTP or API keys.

Automation depth

Autoresponders and date-based sequences; no behavioral multi-step journeys.

Analytics

Per-campaign opens, clicks, and bounces — the basics.

Cost shape

A one-time or low license fee, plus a server, plus your ongoing admin time.

SaaS that holds your keys

BigMailer, MailBluster

Fastest familiar path — an ESP-style UI on top of SES economics.

Setup

Minutes: create an account and paste in your SES IAM or SMTP credentials.

Who runs servers

The vendor runs everything on their own multi-tenant infrastructure.

Who holds credentials

The vendor. You hand over long-lived IAM or SMTP credentials that can send as you.

Automation depth

Campaigns plus basic sequences; depth varies by tool.

Analytics

Campaign-level basics — opens, clicks, unsubscribes.

Cost shape

A monthly SaaS fee, often tiered by contact count — you pay for stored leads monthly whether you email them or not — on top of SES.

Control plane in your account

SendOps

SendOps

Full-platform depth — contacts, segments, drips, git templates, analytics — running inside your own AWS account.

Setup

About two minutes: one CloudFormation stack provisions the platform inside your AWS account.

Who runs servers

The stack runs in your account; SendOps ships and maintains the software.

Who holds credentials

Nobody. No pasted keys — access is a scoped IAM role using short-lived STS credentials you can audit and revoke.

Automation depth

SendFlow multi-step behavioral workflows, authored as a DSL or on a visual canvas.

Analytics

Full deliverability and engagement analytics, plus activity and public APIs.

Cost shape

Free plan with unlimited volume and no contact limits; Team at $29/mo. SES stays billed by AWS at $0.10 per 1,000.

Honest summary: build it yourself if email tooling is genuinely your product. Self-host if you enjoy running servers and your automation needs stop at autoresponders. Use a key-paste SaaS if you're comfortable handing a vendor credentials that can send as you. Use SendOps if you want platform depth without giving up your account boundary. One more filter that matters in 2026: the self-hosted and key-paste tools are built around drag-and-drop editors, and drag-and-drop output is opaque state no AI coding agent can read or maintain — on SendOps, segments, workflows, and templates are plain text in git, which is exactly what agents can work with.

A note on Pinpoint

AWS had a native answer. It's shutting down.

Amazon Pinpoint was AWS's own campaign and journey product — segments, campaigns, and multi-step journeys on top of SES-class delivery. It stopped accepting new customers in May 2025, and AWS has announced it shuts down on October 30, 2026. AWS's guidance points senders to SES for delivery — but SES, as covered above, has no campaign layer. As of July 2026, AWS has no native email-marketing product to migrate to.

If you're on Pinpoint today, the migration decision is exactly the four-way choice on this page. The closest architectural successor to “campaigns running inside my AWS account” is an in-account control plane: your segments, campaigns, and journeys move to SendOps, while delivery stays on the SES foundation you already have.

How SendOps does it

A full marketing platform, provisioned inside your AWS account

SendOps takes a fourth path: instead of you shipping data and credentials to a vendor, the platform is provisioned into your AWS account by a CloudFormation stack. Setup takes about two minutes, and every email sends through your own SES at $0.10 per 1,000.

Contacts & SendQL segments

A real audience model with custom attributes, and SendQL — a query language for building segments that read like sentences, not exports.

Broadcasts

One-off campaigns to any segment, scheduled or immediate, with per-broadcast deliverability and engagement reporting.

SendFlow drip workflows

Multi-step, behavior-triggered journeys — welcome series, onboarding, re-engagement — defined in a plain-text DSL or on a visual canvas.

Templates as code

Author in React Email — template source lives in your repository, and SendOps compiles it to SES-native Handlebars on deploy. Edits made in the SendOps editor write back as pull requests, so email changes get code review.

Asset CDN & tracking domains

Hosted images on a CDN and branded click/open tracking domains, so your links carry your name instead of a shared tracker.

Deliverability analytics & APIs

Bounce, complaint, open, and click analytics across campaigns and workflows, with an activity API and public APIs for everything.

Your keys never leave home

  • You never paste AWS keys into SendOps — there are no stored credentials to leak.

  • Access is a scoped IAM role provisioned by the CloudFormation stack, assumed with short-lived STS credentials.

  • Every action is auditable in CloudTrail, and you can revoke access at any time by deleting the stack.

  • Every email — broadcasts and workflows included — sends through SES in your AWS account, never shared infrastructure.

Built for coding agents, too

Because SendQL segments, SendFlow workflows, and TSX templates are all plain text, a coding agent can operate your email marketing end to end — draft a segment, write a drip workflow, edit a template — with pull requests as the guardrail. Your team reviews email changes the same way it reviews code.

Frequently asked questions

Can I do email marketing with Amazon SES?

Yes — but not with SES alone. Amazon SES is delivery infrastructure: it sends email reliably at $0.10 per 1,000 and reports delivery events, but it has no contact lists, segmentation, campaign builder, automation, or marketing analytics. To run email marketing on SES you add a layer on top: build it yourself, self-host a tool like Sendy or Listmonk, use a SaaS that holds your SES keys like BigMailer, or provision a control plane like SendOps inside your own AWS account.

How much does email marketing on Amazon SES cost?

SES itself costs $0.10 per 1,000 emails, so 1 million emails a month is roughly $100 — versus roughly $650 plus contact fees on Resend, about $1,080 list price on Mailgun, and $1,200 or more on Postmark at the same volume, as of July 2026. On top of SES you pay for the marketing layer: engineering time if you build it, a server and license if you self-host, or a subscription — SendOps has a free plan with unlimited volume and a Team plan at $29 per month.

Do I need to leave the SES sandbox to send marketing email?

Yes. New SES accounts start in a sandbox that only sends to verified addresses with low daily quotas. Before any real campaign you request production access, which means describing your use case to AWS and showing that you handle bounces, complaints, and unsubscribes properly. Approval often comes within a day or two, and a clear, honest request the first time avoids back-and-forth.

What replaced Amazon Pinpoint for email campaigns?

Nothing native to AWS. Pinpoint — AWS's own campaign and journey product — stopped accepting new customers in May 2025 and is scheduled to shut down on October 30, 2026. AWS directs senders to SES for delivery, which means campaigns, journeys, and segments need a new home. Teams migrating off Pinpoint typically choose between self-hosted tools, SaaS platforms that hold their SES keys, or an in-account control plane like SendOps.

Is it safe to give a marketing tool my AWS credentials?

It is a real risk to weigh. Pasting long-lived IAM keys or SMTP credentials into a third-party SaaS means that vendor can send as you indefinitely, and a breach on their side becomes a breach of your sending identity. Prefer role-based access provisioned by CloudFormation: a scoped IAM role using short-lived STS credentials that you can audit in CloudTrail and revoke at any time by deleting the stack. That is the model SendOps uses — it never stores your AWS keys.

What's the fastest way to start email marketing on SES?

Verify your sending domain in SES and request production access, then launch the SendOps CloudFormation stack — setup takes about two minutes and provisions the full platform inside your AWS account. Import contacts, pick a template, and send your first broadcast through your own SES at $0.10 per 1,000 emails. The free plan has no volume or contact limits.

Keep SES economics. Add the marketing platform.

You already picked the cheapest, most reliable way to send email. SendOps adds contacts, segments, broadcasts, drip workflows, git-based templates, and deliverability analytics — provisioned inside your AWS account in about two minutes, without ever holding your keys.

Free plan: unlimited volume, no contact limits. Every email through your own SES.