TXsesawstransactionalconfiguration-sets

How to use Draftship with Amazon SES

SES is the cheapest transactional sender at scale, and the path from Draftship is straightforward via SendTemplatedEmail. Get out of sandbox, configure DKIM and a configuration set, and ship at $0.10 per thousand.

HTML import path
API only
Merge syntax
{{firstName}} (Mustache)
Image hosting
external
Best for
AWS-native teams sending high-volume transactional email at the lowest possible per-email cost.
Watch out for
Sandbox mode is the default. You must request production access before sending to non-verified recipients.

Amazon SES is the cheapest transactional email service at scale. $0.10 per thousand emails, no monthly minimum, integrated with the rest of AWS. The tradeoff: more setup. You'll configure verified domains, request production access (escape from sandbox), set up Configuration Sets for tracking, and write your own template management. If you've built in Draftship, the rendering side is already done.

Two paths into SES

Path one: pass full HTML to SendEmail per send. Path two: store templates with CreateTemplate and call SendTemplatedEmail with substitution data.

STEP 1Design inDraftshipBlock editorSTEP 2ExportOutlook-safe HTMLCmd+ESTEP 3Verify identity +leave sandboxDKIM, SPF, DMARCSTEP 4CreateTemplate orinline HTMLMustache substitutionSTEP 5SendTemplatedEmailvia SDK or APIAmazon SES handoff
Draftship to Amazon SES handoff

For most production use cases, the template path is faster: store once, reference by name, pass per-recipient data.

CreateTemplate (the template path)

bash
aws ses create-template --cli-input-json '{ "Template": { "TemplateName": "welcome-email", "SubjectPart": "Welcome to {{company}}", "HtmlPart": "<html>..." } }'

The HtmlPart field holds your Draftship export. Mustache-style {{varname}} substitutions are resolved at send time.

DraftshipAmazon SES
{{ first_name }}{{firstName}}
{{ last_name }}{{lastName}}
{{ email }}{{email}} (or pull from destination)
Default fallbackSubstitute in your code; Mustache has no inline default
LoopsYes, {{#items}}...{{/items}}

SendTemplatedEmail

bash
aws ses send-templated-email \ --source 'noreply@yourdomain.com' \ --destination 'ToAddresses=user@example.com' \ --template welcome-email \ --template-data '{"firstName":"Alex","company":"Acme"}'

The Source (from-address) must be on a verified domain or verified email. While in sandbox, the destination must also be verified.

Escaping sandbox mode

By default every SES account starts in sandbox: limited to 200 sends per day, only to verified addresses. Submit a service quota increase request from the SES console: explain your use case, expected volume, bounce-handling plan, and suppression-list management. Approval typically takes a few business days. Without it, you can't send to real customers.

Configuration Sets and event publishing

A Configuration Set is a named bundle of behavior: which IP pool to use, which SNS topic to publish events to, which custom tracking domain to use. Create one for each business stream:

  • transactional: dedicated IP pool, events to your transactional SNS topic, no link tracking.
  • marketing: separate IP pool, events to marketing analytics topic, link tracking enabled.

Pass ConfigurationSetName in the SendTemplatedEmail call to bind the send to the right config.

Image hosting

External. Most SES users pair with S3 + CloudFront for images, since they're already in the AWS ecosystem. Hardcode absolute CloudFront URLs in your Draftship Image blocks.

Test send checklist

  • While still in sandbox, send to a verified address and confirm the rendered output.
  • Use the size checker on the output.
  • Subscribe to bounce and complaint SNS topics; configure suppression-list rules.
  • Verify DKIM, SPF, and DMARC for your sending domain.

When to use SES vs SendGrid or Postmark

SES wins on cost at high volume. It loses on UX, on built-in deliverability tooling, and on out-of-the-box dashboards. Pick SES if your team already lives in AWS and can absorb the operational overhead. Pick a managed sender if you want fewer dials to turn.

For DMARC enforcement and BIMI eligibility, see SPF, DKIM, and DMARC explained and BIMI logo in Gmail.

FAQ

Frequently asked questions

How long does it take to escape SES sandbox?
Usually 1 to 3 business days. The request asks about volume, use case, and bounce handling. Provide concrete answers; vague requests get rejected.
Can I send marketing email through SES?
Yes, but you're responsible for your own list management, opt-in tracking, and unsubscribe handling. SES sends what you tell it to send; compliance is on you.
How does SES handle bounces and complaints?
Both publish to SNS topics if you've subscribed. You're expected to maintain a suppression list. Excessive bounces or complaints trigger account review and possible suspension.
Does SES support DKIM?
Yes, via Easy DKIM (SES manages the key) or BYODKIM (you provide). Easy DKIM is the default; BYODKIM is for organizations with strict key-management requirements.
Why is my SES account capped at 50,000 sends per day?
That's a starting quota for newly approved accounts. Quotas auto-increase based on healthy sending patterns over weeks. You can also request manual increases via the console.
Try it yourself

Design in Draftship. Paste into Amazon SES.