Skip to content
Stampwing
Coming soon

Email for your
websites and apps

We’re building Stampwing to help you send password resets, receipts, and updates from your own domain. Use the dashboard or your code, with templates and delivery tracking in one place.

Connect Claude, Codex, ChatGPT, Cursor, or GitHub Copilot with MCP

Your app’s email, in one place.

Take a look around. This demo uses sample data and sends no email.

Stampwing atlasIllustrative preview

atlas

Sample · Last 24 hours
Accepted
13.4k
Queued
330
Bounce rate
0.18%
Queue latency
339 ms
Example project Domain verified
API requestsProject-scoped API keys
Email queueAWS us-east-1
Worker 01us-east-1
Worker 02us-east-1
Worker 03us-east-1
Worker 04us-east-1
Send latency p50 · 180 ms
Explore a sample project. Sample data · No emails sent
For developers

More time for your app.

Connect with an API or SDK. Stampwing queues your email and tracks delivery events.

For businesses and teams

Emails that feel like you.

Reuse your templates for welcomes, receipts, and updates. Look up any message to see what happened.

For agencies and client work

Keep client projects organized.

Keep each site’s domains, API keys, and messages together. Switch projects in one workspace.

Let your assistant help with email.

Connect Claude, Codex, ChatGPT, Cursor, or GitHub Copilot through MCP. Create templates and automations, or check delivery, in your conversation.

Choose one project or your whole workspace. You control access to editing, publishing, and sending.

Connect your assistant
  • TemplatesCreate, edit, preview, and publish your emails.
  • AutomationsBuild and test workflows. Publish, enable, or pause them.
  • EmailCheck delivery details. Send and schedule where sending is turned on.

Add your MCP URL, sign in to Stampwing, and choose access. No API key needed.

Available on configured Stampwing installations. Public hosted access is coming soon. Every assistant connection is in preview; we’re still checking sign-in and tools in the real apps.

Add email to your app.

Your app decides when to send through an SDK, HTTP, or SMTP. Stampwing queues each email and sends progress updates through signed webhooks.

API preview
Hosted service coming soon
Try a local demoAvailable now · No API key · No email sent

Download the local demo and run node email-mock-server.mjs with Node.js 22+. Then try the request below. The demo keeps data in memory, needs no API key, and sends no email.

Local demo · no email sentshell
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"}'
See what you can build
Server-side
  • TypeScript / JavaScript SDK
  • HTTP from any language

You can download the verified SDK package now. It isn’t on npm yet. View package →

  1. 01
    Your backendHTTP, SDK, or SMTP
  2. 02
    StampwingCheck your key and request
  3. 03
    PostgreSQL outboxStore before sending
  4. 04
    Worker + AWS SESSubmit for delivery

An HTTP 202 Accepted response means your email is in the queue. You’ll get delivery updates later. Even when the receiving server accepts a message, it may not reach the inbox.

REST API and TypeScript SDK.

Send HTML, plain text, and PDF, image, text, CSV, or calendar attachments through POST /api/v1/emails. Reuse the same payload and Idempotency-Key when retrying. Explore the OpenAPI reference and the TypeScript SDK package.

SMTP with separate Test and Live keys.

Use your existing mail library with STARTTLS and a project key that has smtp:send permission. STARTTLS is required. In Test mode, HTTP and SMTP sends are simulated and never reach real recipients.

Batch sending and scheduling.

Send one email to several recipients, send up to 100 emails in a batch, or schedule an email up to 30 days ahead. You can reschedule before processing starts, or cancel recipients whose messages haven’t been submitted yet. These features must be enabled before you can use them.

A durable PostgreSQL queue.

Stampwing saves your messages and their queue events before sending them to AWS SES. Workers check permissions, your domain, the sending rate, and blocked recipients again before sending. If a submission’s outcome is unclear, the message waits for review instead of being sent again.

Signed delivery webhooks.

Look up a message by its ID, or get updates signed with HMAC-SHA256. If a webhook delivery fails, Stampwing retries for up to 24 hours. You can rotate signing secrets or replay an event without sending the email again.

Incoming email for your app.

Receive email on a verified subdomain with its own MX record. Your existing mailbox records stay as they are. Read messages and download attachments through your project’s API. Previews are sanitized. Messages with unsafe or unsupported attachments are quarantined.

Versioned templates and workflows.

Preview your templates and try a workflow without sending email. Publishing creates a fixed version, so later edits won’t change workflows that are already running. Live workflow sending must be enabled separately.

Domain checks and sending safeguards.

We’ll check your domain’s ownership, SPF, DKIM, and DMARC during setup. Connect a supported DNS provider or add the records yourself. Permanent bounces and complaints block further sends to those addresses. Sending also depends on your allowances, rate limits, and account status.

Protect your email and workspace.

Choose who can access each project. Message content is encrypted at rest, and email transport requires TLS 1.2+. Hosted verification and independent security review are still pending.

How we protect your email
Encrypted content at rest
Saved message bodies, attachments, and drafts are encrypted with AES-256-GCM. Subjects and email addresses aren’t. Versioned keys let us rotate the encryption keys. This protects stored content; it isn’t end-to-end email encryption.
TLS for app and database connections
Live setup uses HTTPS. Webhooks and public database connections require TLS 1.2 or newer, with certificate and hostname checks. Explicitly configured private-network database connections may be unencrypted.
TLS for email transport
SMTP requires STARTTLS with TLS 1.2 or newer before you authenticate. Receiving rules require TLS too. Before a live send, Stampwing checks proof, less than a minute old, that the SES route requires TLS. If that check fails or expires, your email stays queued with its original expiry.
Workspace and project isolation
Each request checks your workspace membership, project access, and key permissions. PostgreSQL row-level security adds a boundary between customer workspaces in the database. Test and Live credentials stay separate.
Keys you can replace and revoke
You see each API key once; Stampwing stores its hash. To replace a key, keep the same permissions, update your app, then revoke the old one. If a key is compromised, you can revoke it right away.
Signed webhooks over HTTPS
You can verify each webhook’s event ID, timestamp, and original body using its HMAC-SHA256 signature. Delivery is limited to checked public addresses. Private networks and redirects are blocked. You can rotate signing secrets.
Screened incoming content
Attachments are screened before you can download or forward them. PDF, image, text, CSV, and calendar files are accepted; messages with other files, including Office documents and archives, are quarantined. HTML is sanitized when it arrives, and any HTML preview runs in a restricted frame.
Browser protections
A Content Security Policy limits scripts and framing, with enforcement on by default. Requests that change data must come from the same origin. Email previews run in restricted frames.
Traceable security changes
See who changed credentials, access, or signing secrets, with timestamps and request IDs when available. Each successful local change is saved together with its audit record.
Checks before live sending
Live mode needs authentication, encryption, a database, and SES configuration. Before sending, Stampwing checks your domain, screening results, allowances, blocked recipients, and account status. Uncertain submissions wait for reconciliation.

A few things to know.

How does Stampwing fit into my app?

Your app decides when an email is needed: a welcome after signup, a receipt after payment, or a password reset. It asks Stampwing to send it from your verified domain. Stampwing handles the sending queue and records delivery events, so you can see what happened. How a transactional email API works →

Can I use Stampwing’s live API today?

Not yet. We’re still building the live service and haven’t set a launch date. In the meantime, you can use the free templates, guides, and tools, or try the local demo without sending real email. Explore the free resources →

Does “accepted” mean an email reached the inbox?

Not necessarily. It means the recipient’s mail server accepted the message. It may still go to spam or be filtered before reaching the inbox. Check the delivery details before you try sending it again. Find a missing email →

Start with a template.

Free to use today. No Stampwing account needed.

All resources

Find a place to start.

Pick a template, follow a guide, or try one of the free email tools.

Explore resources