Features
Fits into the stack you already have
Publish DNS records with one click, wire up auth emails with a drop-in package, send from n8n workflows, add SMS steps with Twilio and let your AI agent do the setup.
DNS
One-click DNS in Cloudflare, Vercel and GoDaddy
Connect your DNS provider once, and Groundmail writes the records a domain needs instead of you copying them by hand. It's the slowest step of setting up email, done in one click.
- Cloudflare: an API token with Zone, DNS, Edit
- Vercel: an API token, with an optional team id, for domains on Vercel nameservers
- GoDaddy: an API key and secret, saved or used once
- Applies verification records from the dashboard, onboarding, the API or the MCP server
- Adds the DMARC report address for free DMARC monitoring too
Apply DNS records
# Once Cloudflare is connected under Settings → Integrations
curl -X POST https://api.groundmail.dev/domains/mail.example.com \
-H "Authorization: Bearer $GROUNDMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "action": "apply", "provider": "cloudflare" }'
# Then check the records
groundmail domains verify mail.example.comFrameworks
Drop-in packages for auth libraries and frameworks
Official packages plug Groundmail into the mail or notification layer your framework already has. Each one has a setup guide in the docs.
- Better Authgroundmail-better-auth
- Auth.js / NextAuthgroundmail-authjs
- Clerkgroundmail-clerk
- Payload CMSgroundmail-payload
- Nodemailergroundmail-nodemailer
- NestJSnestjs-groundmail
- AdonisJSadonisjs-groundmail
- Strapistrapi-provider-email-groundmail
- Medusamedusa-notification-groundmail
- Laravelgroundmail/laravel
- Symfony Mailergroundmail/symfony-mailer
- Railsgroundmail (gem)
Also documented: Supabase Auth over SMTP, React Email, and AI app builders like Lovable, Replit, Bolt, Base44 and v0. SDKs for Node, Python, Go, PHP and Ruby are on the developers page.
Workflows and messaging
n8n, Twilio, Slack and automations
n8n community node
Twilio SMS steps
Slack alerts
Guides: n8n node · Twilio · Slack alerts
An automation that texts a sign-in code
{
"name": "Auth OTP (SMS)",
"trigger": { "type": "event", "event": "auth.code_requested" },
"steps": [
{
"type": "send_sms",
"sms": {
"to": "{{event.data.phone}}",
"body": "Your code is {{event.data.code}}. Expires in 10 min."
}
}
]
}AI agents
Let your coding agent do the setup
The hosted MCP server signs in with OAuth, so there's no key to paste. Your agent can add and verify a domain, publish its DNS through a connected provider, send a test email and check delivery. More on MCP.
- Claude, Claude Code, ChatGPT and Cursor with the hosted URL
- One-click install in Replit Agent
- npx -y groundmail-mcp for a local server with an API key
- Agent Skills, Cursor rules and llms.txt for agents that read docs
FAQ
Common questions
Which DNS providers can Groundmail update for me?
Cloudflare, Vercel and GoDaddy. Connect one under Settings, Integrations with an API token (an API key and secret for GoDaddy), and Groundmail publishes your domain's verification records, and the DMARC report address if you turn on monitoring, in one click. With any other provider, copy the records from the dashboard.
What does the Twilio integration do?
It lets automations send SMS. Connect your own Twilio account with its Account SID, auth token and a default From number or Messaging Service, then add a send_sms step next to your email steps, for example to text a sign-in code. Messages go through your Twilio account.
Do I need a package to use Groundmail with my framework?
No. Any language can call the REST API or use SMTP. The packages save setup in frameworks that have their own mail or notification layer, such as Better Auth, Auth.js, Strapi or Medusa.
Can an AI coding agent set up Groundmail?
Yes. Connect the hosted MCP server at mcp.groundmail.dev/mcp and sign in with OAuth. The agent can add and verify domains, publish DNS through a connected provider, send test emails and manage webhooks and templates.
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.