AWS SES vs Postmark for Cold Email
Cost and policy comparison for teams deciding between raw sending infrastructure and a managed transactional email API.
What AWS SES Is Built For
AWS SES is Amazon's bulk email sending API. It was designed for developers building transactional and marketing email into applications. You provide valid AWS credentials, point your DNS, and it sends. There is no opinionated UI, no sequence builder, and no contact management. It is infrastructure.
Because it is infrastructure, Amazon's acceptable use policy says little about what type of email you send, only that you comply with anti-spam laws and do not send to addresses that have bounced or complained. In practice SES is widely used for cold email because Amazon does not actively police intent the way dedicated outreach platforms do.
The tradeoff is setup time. You need to verify your domain, configure SPF and DKIM, set up an SNS topic for bounce and complaint notifications, build or connect suppression list handling, and manage sending limits. None of that is hard, but none of it is automated.
What Postmark Is Built For
Postmark was built specifically for transactional email: password resets, order confirmations, account notifications. The company has maintained a strict policy against bulk or promotional email since launch, and that focus is reflected in every design decision. Postmark runs separate IP pools for transactional and broadcast email to keep reputation isolated.
Postmark added broadcast email in recent years, but only for opted-in lists. Their terms require "permission-based subscriptions," ban purchased lists, and explicitly prohibit "emails sent unsolicited." Cold email to prospects you have not heard from before is not allowed on Postmark regardless of which sending stream you use.
The benefit of that restriction is that Postmark's transactional IPs have excellent reputation. If you are sending application email like password resets or invoices, inbox placement tends to be strong out of the box. That reputation comes at a cost: Postmark charges premium prices, and the use case scope is deliberately narrow.
Pricing Compared at 50k, 100k, and 500k Emails
Postmark's pricing is simpler than most competitors: three tiers (Basic at $15/mo, Pro at $16.50/mo, Platform at $18/mo), all of which include 10,000 emails per month. After that, overage rates vary by tier. Basic charges $1.80 per additional 1,000 emails. Platform charges $1.20 per additional 1,000. Pro sits in between at around $1.30 per 1,000.
At 50,000 emails per month, the cost on Basic is approximately $87/mo ($15 base + $72 overage). On Platform it drops to about $66/mo. At 100,000 emails it is $177/mo on Basic and $126/mo on Platform. At 500,000 emails the gap widens further: roughly $897/mo on Basic versus $606/mo on Platform.
SES charges $0.10 per 1,000 emails when sending from outside AWS, or $0 when sending from an EC2 instance (you pay only for data transfer). At 50,000 emails that is $5/mo. At 100,000 it is $10/mo. At 500,000 it is $50/mo. The difference at scale is 12x to 17x.
| Factor | AWS SES | Postmark |
|---|---|---|
| Cost at 50k/mo | ~$5 | $66-$87 depending on plan |
| Cost at 100k/mo | ~$10 | $126-$177 depending on plan |
| Cost at 500k/mo | ~$50 | $606-$897 depending on plan |
| Cold email policy | Allowed if you comply with CAN-SPAM/GDPR | Prohibited; permission-based lists only |
| Dedicated IPs | $24.95/mo each | $50/mo add-on; 300k+ emails/mo required |
| Setup complexity | Moderate; requires SNS, suppression list, DNS | Low; verify domain and send |
| Best for | Cold email at scale; cost-sensitive teams | Transactional email; opted-in lists only |
Cold Email Policy
Postmark's terms explicitly prohibit cold email. Their acceptable use policy requires "permission-based subscriptions," bans "purchased, rented, or harvested lists," and calls out "emails sent unsolicited" as a specific violation. If your use case is outbound prospecting to people who have not opted in, Postmark will suspend your account once volume or complaint signals trigger a review.
The broadcast email feature they added is not an exception. It is intended for newsletter-style email to confirmed subscribers, not cold outbound. The same permission requirements apply.
SES has no such restriction. Amazon's acceptable use policy covers anti-spam laws (CAN-SPAM, CASL, GDPR) and prohibits sending to addresses that have previously bounced or complained. It does not prohibit first-touch outbound email to people who have not previously opted in, provided you include required disclosures and a way to opt out.
Dedicated IPs and Reputation Control
Both services use shared IP pools by default. On Postmark, all accounts without a dedicated IP add-on share sending infrastructure with other senders on the platform. Because Postmark enforces permission-based sending, complaint rates on shared IPs tend to be low, which benefits all senders on those pools.
Postmark offers dedicated IPs as an add-on for $50/mo. There is a catch: you need to be sending at least 300,000 emails per month to qualify. Below that threshold, a dedicated IP would have insufficient volume to warm properly, so Postmark requires minimum volume before selling them. If you are sending less than 300k/mo, you are on shared IPs regardless of how much you are willing to pay.
SES charges $24.95/mo per dedicated IP with no volume minimum. You can buy one dedicated IP on day one and warm it manually by gradually increasing daily sending volume over four to six weeks. That flexibility matters for cold email because you want your outbound IP separate from any transactional traffic.
Deliverability for Cold Email
Deliverability for cold email depends heavily on sending behavior rather than the underlying infrastructure. The same domain reputation signals apply whether you send through SES or any other SMTP API: low bounce rates, low complaint rates, high engagement relative to volume, and consistent sending patterns.
SES provides dedicated IPs, suppression list management, and reputation metrics in the console. These tools are sufficient for managing cold email deliverability at scale if you are disciplined about list quality and bounce handling. SES also has built-in integration with Route 53 for DKIM signing, which removes one setup step.
Postmark's deliverability reputation is strong, but that reputation is built on permission-based sending. If you try to use Postmark for cold email, you are not going to benefit from that reputation for long before account suspension.
Setup and Developer Experience
Postmark is genuinely easy to set up. Create an account, verify your domain using the DNS records they provide, create a message stream, and start sending via their API or SMTP. The dashboard is clean, documentation is clear, and you can be sending within 30 minutes of signing up. Bounce and complaint handling is built in.
SES requires more steps. You verify your domain, configure IAM credentials, set up an SNS topic to receive bounce and complaint notifications, build a handler that processes those notifications and updates your suppression list, and request production access to get out of the sandbox (which starts with a sending limit of 200 messages per day). The process is documented but involves multiple AWS services.
For teams comfortable with AWS, SES setup is a half-day project. For teams without AWS experience, the setup curve is steeper than alternatives like Postmark or Mailgun.
Which One to Use
If you are sending cold outbound email, Postmark is not an option. Their terms prohibit it explicitly, and enforcement is real. The choice is SES or a different cold email infrastructure provider.
If you are sending transactional email to your own users, Postmark is a better experience than SES at most volumes below 100k/mo. The price difference is $10/mo (SES) versus $126-177/mo (Postmark) at 100k, but Postmark requires less operational work and delivers strong inbox placement out of the box. For a SaaS product where developer time is the constraint, Postmark often makes sense.
For cold email specifically, tools like EmailQo are built around SES and handle the infrastructure setup, suppression lists, bounce routing, and warmup scheduling for you. That gives you SES-level pricing without the manual AWS configuration work.
Related Resources
Keep reading