Migrate from Amazon SES

Move from Amazon SES
to OpenEmail.

SESv2 calls, configuration sets and SNS events, mapped field by field, with a converter that rewrites your code.

The same email,
written both ways.

One message with a reply-to address and a tag, sent through Amazon SES and then through OpenEmail.

Amazon SES
import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2' const ses = new SESv2Client({ region: 'us-east-1' }) const result = await ses.send(  new SendEmailCommand({    FromEmailAddress: 'Acme <[email protected]>',    Destination: { ToAddresses: ['[email protected]'] },    ReplyToAddresses: ['[email protected]'],    Content: {      Simple: {        Subject: { Data: 'Your invoice is ready' },        Body: { Html: { Data: '<p>Thanks for your order.</p>' } },      },    },    EmailTags: [{ Name: 'category', Value: 'invoice' }],  }),) console.log(result.MessageId)
OpenEmail code
import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const email = await openemail.emails.send({  from: 'Acme <[email protected]>',  to: ['[email protected]'],  replyTo: '[email protected]',  subject: 'Your invoice is ready',  html: '<p>Thanks for your order.</p>',  tags: { category: 'invoice' },}) console.log(email.id)

Field by field,
what goes where.

Each option Amazon SES takes, and its place in OpenEmail.

Amazon SESOpenEmailNotes
FromEmailAddressfromAlso takes Name and address together.
Destination.ToAddressestoCcAddresses and BccAddresses become cc and bcc.
ReplyToAddressesreplyToOne address per message.
Content.Simple.Subject.DatasubjectA plain string.
Content.Simple.Body.Html.DatahtmlThe text body goes in text.
EmailTags: [{ Name, Value }]tags: { Name: Value }Up to 10 key and value pairs.
Content.Template.TemplateDatatemplate: { id, props }Props are an object, not a JSON string.
SendBulkEmailemails.sendBatchUp to 100 emails, each sent on its own.
ConfigurationSetNamewebhooks.createEvents arrive through webhooks.
AWS credentials, regionOPENEMAIL_API_KEYOne key, and no region.

Converter

Paste your Amazon SES code,
get it back on OpenEmail.

Pick where the code comes from and its language. Recognised keys are removed in your browser, and nothing you paste is kept.

From Amazon SES
Your Amazon SES code
OpenEmail code

Your OpenEmail code appears here

Paste a file, or load an example, then convert.

0 of 12,000 charactersRecognised keys are removed before sending.

Beyond the code,
four more steps.

  1. 01

    Add your sending domain

    Add it in OpenEmail and publish the DNS records it lists. Sending starts once the signing record answers.

  2. 02

    Create an API key

    Keys start with oe_live_ and carry only the scopes you give them.

  3. 03

    Move your webhooks

    Create an endpoint for the events listed below and check the X-OpenEmail-Signature header on every request.

  4. 04

    Bring contacts and suppressions

    Import your contacts as a CSV on an audience page, and add the addresses Amazon SES suppressed to the suppression list.

Webhook events,
renamed.

Each Amazon SES event and the OpenEmail event that replaces it. Every request carries one event, signed.

Amazon SESOpenEmail
Sendemail.sent
Deliveryemail.delivered
DeliveryDelayemail.delivery_delayed
Bounceemail.bounced
Complaintemail.complained
Openemail.opened
Clickemail.clicked
Rejectemail.failed

Moving from Amazon SES,
answered.

Converted?
Create the key it reads.

A workspace takes a minute. Add your domain, create an API key and set OPENEMAIL_API_KEY.