@wraps.dev/email · @wraps.dev/sms · @wraps.dev/client
Communication as code.
TypeScript SDKs that send through your AWS account. Define templates in React, automate with workflows, trigger from custom events.
@wraps.dev/emailSend email through SES
@wraps.dev/smsSend SMS through AWS
@wraps.dev/clientPlatform API, workflows, events
Define
Templates as Code
Write email templates as React components. Type-safe variables, version-controlled, reviewed in PRs. Push to SES with one command.
React Email components — renders correctly in Gmail, Outlook, Apple Mail
Typed variables — catch missing data at compile time, not in production
wraps templates push — compiles, validates, and deploys to SES
Brand kits — shared colors, fonts, and logo across all templates
import { Body, Container, Heading, Text, Button } from "@react-email/components";export const subject = "Welcome to {{companyName}}";export const emailType = "transactional" as const;type Props = { name: string; companyName: string; loginUrl: string;};export default function WelcomeEmail({ name, companyName, loginUrl }: Props) { return ( <Body> <Container> <Heading>Welcome, {name}</Heading> <Text>Thanks for joining {companyName}.</Text> <Button href={loginUrl}>Get Started</Button> </Container> </Body> );}Automate
Automations as Code
import { condition, defineWorkflow, delay, sendEmail, waitForEvent,} from "@wraps.dev/client";export default defineWorkflow({ name: "Onboarding Drip", trigger: { type: "event", eventName: "user.signed_up" }, steps: [ sendEmail("welcome", { template: "welcome-email" }), delay("wait-1d", { days: 1 }), waitForEvent("wait-setup", { eventName: "account.setup_completed", timeout: { days: 2 }, }), condition("check-setup", { field: "contact.hasCompletedSetup", operator: "is_true", branches: { yes: [sendEmail("tips", { template: "power-user-tips" })], no: [sendEmail("nudge", { template: "complete-setup" })], }, }), ],});Define workflows in TypeScript. Triggers, conditions, delays, branching — all type-checked. Deploy with wraps automations push.
Event triggers — start workflows from signups, purchases, or any custom event
Wait for events — pause until a specific action happens, with configurable timeouts
Conditional branching — route contacts based on properties, behavior, or event data
Multi-channel — send email, SMS, or fire webhooks in the same workflow
Trigger
Custom Events
Emit events from anywhere in your app. wraps.track() fires the event — workflows listening for that event name execute automatically.
Any event name — user.signed_up, order.completed, trial.expiring
Typed properties — attach any JSON payload, available in templates and conditions
Batch support — send multiple events in a single API call
Automatic contact resolution — match events to contacts by email or ID
How it works: Call wraps.track("order.completed") from your checkout flow. Any workflow with trigger: { eventName: "order.completed" } runs automatically.
import { createPlatformClient } from "@wraps.dev/client";const wraps = createPlatformClient({ apiKey: process.env.WRAPS_API_KEY });// Emit an event — triggers any workflow listening for "order.completed"await wraps.track("order.completed", { contactEmail: "alice@example.com", properties: { orderId: "ord_8f3k2", amount: 149, plan: "pro", },});Built for production
Ship emails and SMS with the same rigor as your application code
Your AWS, Your Data
SDKs call AWS APIs directly in your account. No data passes through our servers.
TypeScript-First
Strict types, autocomplete, and compile-time validation. Ship with confidence.
Flexible Auth
AWS credential chain, OIDC federation (Vercel, GitHub Actions), or explicit credentials.
React Email
Build templates with React components. Renders correctly across every email client.
Batch Operations
Send to 100 recipients, track multiple events, or manage contacts in bulk with single calls.
Zero Lock-In
Thin wrappers around AWS services. Eject anytime — your SES templates and infrastructure stay.
Define. Automate. Trigger.
Templates as React components. Workflows as TypeScript. Events from your codebase. All running on your AWS.

