# Amazon SES email template studio with preview and version history

> Let marketing and support edit transactional email copy, preview it against real customer data, and roll back a bad change without waiting on a deploy.

- Workflow type: app
- Services: Amazon SES, Google Sheets
- Categories: Marketing, Operations
- Published: 2026-08-14

## What it does

- Opens on a library of every email template in your Amazon SES account, so copy changes start in one place instead of digging through raw files or the console
- Edits the subject line, HTML and plain text side by side with a live preview that fills in real names, plan tiers and order values pulled from a row of your Google Sheet of example customers
- Saves a snapshot of the copy on every change along with who saved it and a one line note, so you can read any earlier version and restore it in a click
- Warns you before saving when the copy uses a personalization field your sample customer does not have, and lets you send a test to yourself or to a short list of reviewers

## What you'll need

- An Amazon SES account with at least one verified sending address or domain
- Permission to view and edit the email templates in that account
- A Google Sheet with a few example customers, with columns for whatever your emails mention such as first name, plan tier and order value
- The email addresses of the handful of people who review copy before it goes live

## Prompt

I want an email template studio for Amazon SES so marketing and support ops can change transactional copy without waiting on a deploy. The people using it are not engineers, so keep every screen in plain language and make it hard to break something.

The app opens on a library of every email template in the SES account, loaded with List Email Templates. Show each template by name, let me search the list by name, and open the editor when I pick one.

The editor loads the selected template with Get Email Template and shows three editable fields: the subject line, the HTML part and the text part. Beside the fields sits a live preview pane. Render the preview with Test Render Email Template, passing the current editor contents together with the active sample data. Test Render Email Template returns MIME content, so parse the HTML part out of the MIME and render that inside a sandboxed iframe rather than dumping raw MIME on screen. Re-render shortly after I stop typing instead of on every keystroke.

Sample data is a small set of key and value pairs that fill the personalization variables in the template. I can type the values in directly, or pull them from a Google Sheet of example customers. For the sheet route, let me set the spreadsheet and range once, read it with Get Values, treat the first row as column headers, and list the remaining rows in a picker. Selecting a row fills the sample data from that row, so the preview shows a real name, plan tier and order value instead of placeholder text.

Saving writes the subject, HTML and text back through Update Email Template. SES keeps no version history of its own, so the app has to keep one. On every successful save, store a snapshot in the app's own storage holding the template name, the subject, the HTML part, the text part, the person who saved it, a one line note I type in the save dialog, and the timestamp. A History panel lists the snapshots for the current template newest first. I can open any snapshot to read it, and I can restore one, which loads it back into the editor fields. Restoring does not write to SES by itself. I still press save, which creates a new snapshot recording that it came from an earlier version.

Before every save, scan the subject, HTML and text for personalization variables and compare them against the keys present in the active sample data. If the copy references a variable the sample data does not provide, show a warning that names the missing variables and make me confirm before the save goes through. This matters because a template whose variables are not supplied fails to render, so the check catches a broken email before it ships.

A New template button opens the same editor empty, asks for a template name, and creates it with Create Email Template. Record its first snapshot on creation.

There are two send buttons. Send to me delivers the current preview to my own address using Send Email. Send to reviewers delivers it to a short list of addresses I type in, using Send Bulk Email. Cap the reviewer list at about ten addresses and label it clearly as a review send. This app is a proofing tool, not a campaign blaster, and should never be pointed at a customer list. The From address for both buttons is a dropdown of the account's verified senders loaded with List Email Identities, so I cannot send from an address SES has not verified.

A few guardrails. Always show which template is selected and whether it has unsaved changes. If a save or a send fails, show the reason in plain language near the button that triggered it rather than a raw error. If the account is still in the SES sandbox, sends only reach verified addresses, so say that plainly when a review send is rejected for that reason.

## How to customize

- Point the sample data at a different Google Sheet, or pick a different customer row, to preview the same email for another kind of customer
- Change who sits on the reviewer list that receives test sends, and which verified address those tests come from
- Adjust how much of the note is required when saving, so your team keeps a useful change log rather than a row of blank entries

## FAQ

### Do I need a developer to change the wording of a transactional email?

No. That is the point of this app. You pick the template, edit the subject and body, check the preview, and save. The change is live for the next email that goes out, with no release or deploy involved.

### Can I undo a change I regret?

Yes. Every save stores a snapshot of the subject, HTML and text along with who saved it and a short note. You can open any earlier version to read it, load it back into the editor, and save it again to make it live.

### Why would my preview show an error instead of the email?

Usually because the copy mentions a personalization field, such as a customer first name or plan, that your sample customer does not have a value for. The app checks for this before you save and tells you exactly which fields are missing.

### Can I use this to send a campaign to my whole customer list?

No, and that is deliberate. The send buttons are for checking your work: one sends the preview to you, the other to a short typed list of reviewers. It is a proofing tool, not a bulk sender.

### Where does the sample customer data come from?

You can type values in by hand, or connect a Google Sheet of example customers and pick a row. Using the sheet means the preview shows realistic names, plan tiers and order values instead of placeholder text.

Use this prompt in General Input: https://www.generalinput.com/prompts/amazon-ses-email-template-studio-with-preview-and-version-history