Templates & assets
Make every step sound like you.
From the first welcome to the last reminder, give each workflow a message worth reading. Create reusable templates, personalize them, and preview before you send.
Connect your AWS account. One flat SendOps fee.
Part of every great journey
A consistent voice across the whole journey.
Your campaign logic and email content work together. Keep the message reusable, the variables predictable, and every change easy to review.
- 01
Create the message
Author templates in the dashboard or bring rendered React Email templates from your own build.
- 02
Check the real result
Use previews and test data to review content and personalization before deployment.
- 03
Reuse and improve
Use the template in a workflow or broadcast, inspect its history, and restore an earlier version when needed.
Inside SendOps
A familiar workflow for every email template.
A developer or marketer edits a template file in the repository. The file is standard HTML with Handlebars-style variables — the same format SES uses natively.
The details, handled
Everything you need for templates & assets.
React Email support
Use components to author emails and bring the rendered output into your SendOps deployment workflow.
Personalization
Use template variables and contact data to make each message fit its recipient.
Previews & test data
Check variants and rendering before a customer sees the email.
Version history
See who changed a template, inspect the differences, and restore earlier content as a new version.
Assets & deployment
Manage email assets and inspect the source, deployed version, and differences between them.
Push from CI
Keep a copy in your repository and push definitions from your build process. Templates remain editable in SendOps.
For your developers
The same care as your product code.
Build with React Email, use test data for previews, and push your rendered templates from CI. Transactional and lifecycle messages share a consistent foundation.
// emails/order-confirmation.tsx
import { Html, Body, Heading, Text, Link, Section, Row, Column } from "@react-email/components"
type Props = {
name: string
orderId: string
items: { name: string; quantity: number; price: string }[]
trackingUrl: string
}
export default function OrderConfirmation({ name, orderId, items, trackingUrl }: Props) {
return (
<Html>
<Body>
<Heading>Order confirmed</Heading>
<Text>Hi {name}, your order #{orderId} is confirmed.</Text>
<Section>
{items.map((item) => (
<Row key={item.name}>
<Column>{item.name}</Column>
<Column>{item.quantity}</Column>
<Column>{item.price}</Column>
</Row>
))}
</Section>
<Link href={trackingUrl}>Track your order</Link>
</Body>
</Html>
)
}Keep the journey connected
Bring the next piece into place.
Your next workflow starts here
Give every customer a next step.
Connect your AWS account. Build your first journey. Make the next email count.
Free plan available. No credit card required.