Features
Templates your whole team can edit
Teammates design in a visual builder. Engineers push HTML from git. Everyone sends by a stable alias, and live mail only ever uses a published version.
Two ways in
Dashboard for teammates, git for engineers
Both paths end in the same place: a published template with an alias your code can call.
Visual block editor
Versioned publish
Push from git
Starter templates
Send
One alias from any client
The same template id works from Node, Python, PHP, Ruby, Go, the CLI and automations.
- Variables merge at send time; HTML values are escaped
- Subject comes from the template unless you override it
- Suppressions and domain rules apply like any other send
Send by template alias
await client.emails.send({
from: "hello@yourdomain.com",
to: "user@example.com",
template: {
id: "welcome",
variables: {
name: "Ada",
dashboard_url: "https://app.example.com",
},
},
});Inbox-safe output
Built for real mail clients
The builder emits table-based HTML with Outlook conditionals, bulletproof buttons, mobile stacking, dark-mode meta and a hidden preheader. Preview and publish use the same output.
- Global CSS on bare tags is inlined, so it survives Gmail clipping and Outlook
- Warnings when HTML may not render, such as SVG logos
- Raw HTML templates when you want full control of the markup
CLI push
# Upsert a template from your repo and publish it
groundmail templates push ./emails/welcome.html \
--alias welcome --subject "Welcome" --publishStarters and their variables
password-reset name, reset_url
email-verification name, verify_url, code
welcome name, dashboard_url
invoice name, amount, invoice_url, invoice_id
team-invite name, inviter_name, team_name, invite_urlFAQ
Common questions
Do draft edits change what customers receive?
No. Sends always use the published version. Edit the draft as much as you like, then publish when it is ready.
Can I roll back a template?
Yes. Every publish keeps a version. Restore an older one into the draft and publish it again.
Can I use React Email?
Yes. Push a React Email component with the CLI and it renders on your machine before upload, or render it in your own Node process at send time.
Do I need Node in my app to use templates?
No. Templates are stored on Groundmail and referenced by alias, so any SDK or plain HTTP works. Only the machine running the CLI needs Node.
Put your transactional email on solid ground.
Start free on our transactional pool. Move to dedicated IPs or a dedicated server when you need the isolation. Same API either way.