Amazon SES and Viesti compared
Amazon SES details come from the AWS pricing page and SES documentation, linked in each row. Checked 26 September 2026. Prices in US dollars.
Choose Amazon SES if
- You already run on AWS and want email on the same bill, with IAM controlling access.
- You send more than Viesti's free plan allows but fewer than 50,000 emails a month, and cost decides: on à la carte pricing SES costs less than Viesti's $5 plan. Above that, both charge $0.10 per 1,000, though SES counts recipients and adds $0.12 per GB of attachments.
- You need inbound processing, stored templates, or delivery events streamed into other AWS services.
- You need dedicated IPs at a published price, or you send marketing mail as well.
Choose Viesti if
- You want to start without a sandbox review or IAM: sign in with GitHub or Google, verify a domain, send.
- You want delivery status without building it: the Activity log shows each recipient's outcome, and hard bounces and complaints are suppressed automatically, with no event destinations to set up.
- You want a free plan that does not depend on AWS credits: 75 emails a day and 2,000 a month.
- You want SPF alignment from one optional CNAME instead of an MX and a TXT record on a MAIL FROM subdomain.
- You want your provider to keep marketing mail off your shared IPs.
Migrate from Amazon SES to Viesti
1. Create a workspace and an API key
Sign in with GitHub or Google; the first sign-in creates your workspace. Create an API key on the Credentials page and keep it in your secret store, for example as VIESTI_API_KEY. The quickstart walks through the whole setup.
2. Verify your sending domain
Add the domain on the Sending domains page and publish the records it lists (details in DNS records):
- TXT
_viesti.yourdomain.com, which proves ownership. - CNAME
v1._domainkey.yourdomain.com, which delegates DKIM signing todkim.viesti.email. include:spf.viesti.emailin the domain's SPF record. The page shows a merged value that keeps the includes you already publish; a domain must have only one SPF record.- A DMARC record at
_dmarc.yourdomain.com, only if no DMARC policy covers the domain yet. - Optional: CNAME
viesti.yourdomain.comtobounce.viesti.email, so bounces return to your own domain and SPF aligns with DMARC.
Viesti's record names do not clash with SES's Easy DKIM CNAMEs or your MAIL FROM subdomain, so both services can send while you switch.
3. Switch your SMTP settings
Host: smtp.viesti.email
Port: 587 (STARTTLS) or 465 (implicit TLS)
Username: apikey
Password: your Viesti API key
Viesti accepts AUTH PLAIN only, and only after TLS; mail libraries pick it automatically. To try the settings before you deploy, send a test message with curl:
printf 'From: [email protected]\r\nTo: [email protected]\r\nSubject: Viesti test\r\n\r\nSent through Viesti.\r\n' |
curl -sS --ssl-reqd smtp://smtp.viesti.email:587 \
--user "apikey:$VIESTI_API_KEY" \
--mail-from [email protected] --mail-rcpt [email protected] \
--upload-file -
The command prints nothing when Viesti accepts the message, which then shows in the Activity log; a rejected login or recipient prints curl's error. SMTP covers ports, limits and error replies.
This replaces the email-smtp.<region>.amazonaws.com host and the IAM SMTP username and password. Remove the X-SES-CONFIGURATION-SET and X-SES-MESSAGE-TAGS headers: Viesti does not read them and delivers them to recipients unchanged.
4. Or switch your API calls
If you call SendEmail through an AWS SDK, replace the call with your framework's SMTP mailer or with Viesti's HTTP API. A message you already build as raw MIME goes into Viesti's raw field.
Viesti's endpoint is POST https://viesti.email/v1/send with Authorization: Bearer $VIESTI_API_KEY and a JSON body of from, to (an array of up to 50 addresses), subject, text and html. It rejects any other field with 400 invalid JSON. For Cc, Bcc, Reply-To, custom headers or attachments, build the MIME message yourself, send it in raw, and list every recipient, Cc and Bcc included, in to. See the HTTP API reference.
5. Replace what Viesti does not do
- Templates: render the message in your app and send the finished HTML and text.
- Webhooks: there are none. The Activity log shows each recipient's outcome, and hard bounces and complaints add the recipient to your suppression list automatically; see bounces and suppressions.
- Open and click tracking: Viesti does not rewrite links or add pixels, so there is nothing to configure or remove.
- Inbound email: keep SES receipt rules, or move receiving to another service; Viesti does not receive mail for your domains.
6. Carry over suppressions
Export the addresses your current provider suppresses (hard bounces, complaints, unsubscribes) and add each one on Viesti's Suppressions page with a reason. The page adds one address at a time. Viesti then refuses mail to those addresses when you submit it.
7. Remove the SES setup
Once no workload in your AWS account sends from this domain through SES, wait a few days for late bounces, then delete the three Easy DKIM CNAME records, the MX and SPF records on the MAIL FROM subdomain, and the IAM user that holds the SMTP credentials. Keep your DMARC record; Viesti checks it.