Your projects, organized.
Give each app its own project, with domains, API keys, and message history together.
We’re building a transactional email API for developers. Send password resets, receipts, and notifications, with templates and delivery tracking in one workspace.
The waitlist opens soon. For now, take a look around.
Choose a step in this sample welcome workflow.
Give each app its own project, with domains, API keys, and message history together.
Create email templates and choose when your app sends them.
See which messages are queued, accepted by the receiving server, or need attention.
Help people verify an account, recover access, or keep a receipt. Start with free HTML and plain-text templates you can adapt to your app.
Connect over HTTP or SMTP. Send with your server language, receive email in your app, and follow each message from the queue to its delivery events.
An HTTP 202 Accepted response confirms queue acceptance. Delivery status comes later; acceptance by a receiving server doesn’t confirm inbox placement.
Send HTML, plain text, and attachments through POST /api/v1/emails. Reuse the same payload and Idempotency-Key when retrying. Explore the OpenAPI reference and SDK source packages for nine languages.
Connect your existing mail library with mandatory STARTTLS and a project key with smtp:send permission. HTTP and SMTP Test sends are simulated and never reach real recipients.
Submit up to 100 emails in a batch or schedule an email up to 30 days ahead. Reschedule before processing starts, or cancel recipients still awaiting submission. These features require sending rollout to be enabled.
Messages and their queued events are stored together before a worker submits to AWS SES. Workers recheck sending permissions, limits, and suppressions. Uncertain submissions are held for review instead of automatically resent.
Follow a message by ID or receive HMAC-SHA256 signed events. Failed webhook deliveries retry for up to 24 hours. Rotate signing secrets and replay an event without resending the email.
Receive on a verified subdomain with its own MX record, keeping your existing mailbox records intact. Read messages and download attachments through a project-scoped API, with sanitized previews and quarantine for unsafe content.
Preview HTML and plain text, validate drafts, and simulate flows without sending. Published versions are immutable, and existing runs keep their pinned versions. Live workflow execution has a separate rollout control.
Check ownership, SPF, DKIM, and DMARC during setup. Supported DNS providers offer guided connection, with manual records always available. Permanent bounces and complaints suppress recipients; quotas, rate limits, and abuse suspensions gate sending.
Keep access scoped, stored content encrypted, and sensitive changes traceable. These controls are implemented in the application; hosted verification and independent security review are still pending.
Source packages today. Registry publication is still pending.
Download the local API fixture and run node email-mock-server.mjs with Node.js 22+. Then send the request below. The fixture keeps data in memory, needs no API key, and sends no email.
curl http://127.0.0.1:3027/api/v1/emails \
-H "Content-Type: application/json" \
-H "Idempotency-Key: receipt-42" \
-d '{"to":"reader@example.test","subject":"Your receipt","text":"A simulated receipt"}'It lets your backend request an email when something happens in your app, such as a signup, password reset, or payment. Your app sends the message details over HTTP and uses a message ID to follow its progress. How a transactional email API works →
Not yet. The live service and customer accounts are still in development, and we haven’t announced a launch date. You can use the free templates, guides, header analyzer, and simulated local API example now. Explore the free developer resources →
Yes—that’s part of the integration we’re building. MCP lets an assistant work with the tools and data you authorize. Stampwing’s connector includes template previews, workflow drafts, and run inspection, with separate permissions for reading, editing, and publishing. The hosted connection is coming soon. Explore the MCP integration preview →
Call the email API from your server, keep API keys out of browser code, and save the returned message ID. Our Next.js guide walks through this request flow with a local fixture that sends no real email. Try the Next.js email example →
Give each logical send an idempotency key and reuse it with the same payload when retrying. A timeout doesn’t prove that a request failed. Reconcile the original message before creating a new one. Learn about email retries and idempotency →
SPF identifies authorized sending servers, DKIM adds a verifiable signature, and DMARC checks alignment with the visible From domain and publishes a handling policy. They help authenticate email; they don’t guarantee an inbox placement. Understand sending-domain authentication →
No. Stampwing uses “accepted” for receiving-server acceptance. The recipient’s mail system may still filter or quarantine the message. Follow the delivery events and inspect the recipient-side evidence before sending again. Troubleshoot a missing transactional email →
Practical answers for the email behind your app.
Trace a missing message and find the next useful step.
Read the guideA repeatable checklist for domains, keys, and environments.
Get the checklistFour everyday templates, in HTML and plain text.
Browse templatesJoin the waitlist. We’ll let you know when you can get started.
Join the waitlist