SuperSend TX + Bolt.new
Add transactional email to a Bolt-generated app with a .env secret and a chat prompt. Bolt often outputs Vite or React projects — keep sends on the server.
When to use SuperSend TX
- Bolt prototypes that need real password-reset or notification email
- Moving from demo to production with your own sending domain
- Replacing a
RESEND_API_KEYpattern with SuperSend TX (SUPERSENDTX_API_KEY)
1. Add your API key
- Get a key from app.supersendtx.com.
- In the Bolt project, add to
.env(local) and your host’s env UI when you deploy:
SUPERSENDTX_API_KEY=stx_your_key_here- Ensure
.envis in.gitignore— never commitstx_keys.
If Bolt deploys to a platform with its own env panel (Netlify, Vercel, etc.), add the same variable there for production.
2. Paste this prompt in Bolt chat
Integrate SuperSend TX transactional email into this project.
Docs:
- https://docs.supersendtx.com/ai/agent-skill
- https://docs.supersendtx.com/openapi.yaml
- https://docs.supersendtx.com/builders/bolt
Rules:
1. Use SUPERSENDTX_API_KEY from .env on the server only — never in client bundles or VITE_ prefixed vars.
2. POST https://api.supersendtx.com/emails with Authorization: Bearer and JSON body (from, to, subject, html).
3. Until domain verify: sandbox from "noreply@mail.supersendtx.com", to account email only.
4. Add a small API route or serverless function for transactional sends; do not call the API from the browser.
5. If this is Next.js, follow the App Router server pattern in https://docs.supersendtx.com/frameworks/nextjs
After domain verify, use from on our verified domain.3. Server-only pattern
Bolt may generate a Vite SPA. Add a server endpoint (or deploy a small API route) that proxies to SuperSend TX:
// Example: server handler (adapt to your Bolt stack)
export async function sendTransactionalEmail(payload: {
to: string
subject: string
html: string
}) {
const res = await fetch('https://api.supersendtx.com/emails', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SUPERSENDTX_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: process.env.MAIL_FROM ?? 'noreply@yourdomain.com',
...payload,
}),
})
if (!res.ok) throw new Error(await res.text())
return res.json()
}Sandbox
Use noreply@mail.supersendtx.com and your account email for the first test — see Quickstart.
Links
- Migration from Resend — field mapping if you started with Resend env names
- Next.js