groundmail

Compare

Groundmail vs Resend

Both give you a clean API for sending email. Groundmail sends from mail servers and IP space we own, and gives you dedicated IPs or a whole dedicated server when you need isolation.

At a glance

Same send call. Different ground underneath.

Your app code barely changes. What changes is who runs the servers and IPs your mail leaves from.

TopicGroundmailResend
Sending infrastructureOur own mail servers and our own IP spaceSee their docs
IsolationShared transactional pool, dedicated IPs, or your own dedicated mail serverSee their docs
Email typesTransactional onlyTransactional and marketing email
Send APIPOST api.groundmail.dev/emailsPOST api.resend.com/emails
API keysBearer gm_…Bearer re_…
Node packagegroundmailresend
Other ways to sendSDKs for Python, PHP, Ruby, Go, Laravel and Symfony; SMTP relay; MCP serverSee their docs
PricingFree 3,000/mo · Pro from $20/mo · Dedicated server from $299/moSee their pricing page

Resend details come from Resend's public docs. Check them for current features and pricing.

What you get

Infrastructure we own, run by people who know mail

Our servers, our IPs

We run our own mail servers on our own IP space. The people who answer your support email are the people who can fix the problem.

Dedicated IPs and dedicated servers

Start on the shared pool. Move to dedicated IPs, or to your own mail server that we build, warm and manage. Same API at every step.

Transactional only

No marketing or cold email on our IPs. Your password resets share a pool with other transactional mail, not with someone's newsletter.

A team that has done this before

We have run MTAs at scale and worked with Google Postmaster and Spamhaus directly. Deliverability is our job, not a ticket we forward.

Switching

Switch in a few steps

  • Create a gm_ API key in the dashboard
  • Verify your sending domain (SPF, DKIM, return path)
  • Point your client at api.groundmail.dev
  • Re-point webhooks for delivered, bounced and complained events
  • Send a canary, then shift traffic

Field-by-field details are in the Resend migration guide. Using React Email? See the React Email guide.

Mapping

api.resend.com   →  api.groundmail.dev
re_… API key     →  gm_… API key
POST /emails     →  POST /emails
npm i resend     →  npm i groundmail

Node

import { Groundmail } from "groundmail";

const client = new Groundmail(process.env.GROUNDMAIL_API_KEY);

await client.emails.send({
  from: "you@yourdomain.com",
  to: "user@example.com",
  subject: "Reset your password",
  html: "<p>Click the link to reset.</p>",
});

FAQ

Questions about switching from Resend

How much code changes when I move from Resend?

Usually very little. Groundmail also takes POST /emails with from, to, subject and html or text. Swap the base URL to api.groundmail.dev, swap the key for a gm_ key, and verify your sending domain. The migration guide covers the optional fields.

Can I keep React Email?

Yes. React Email is a separate open-source toolkit. Pass your component to the Groundmail Node SDK, or render it to HTML and send that. The React Email guide in our docs shows both.

What does dedicated mean on Groundmail?

Two things, depending on what you need. Dedicated IPs give your mail its own reputation on our servers. The Dedicated plan goes further: your own mail server and IPs, built, warmed and managed by us, from $299/mo including 250,000 emails.

Can I send newsletters or cold email through Groundmail?

No. Groundmail is for transactional email only: password resets, receipts, alerts, invites. Keeping marketing and cold email off our IPs is what keeps the shared pool clean for everyone on it.

Is there a free plan?

Yes. Free includes 3,000 emails a month (100 a day) on one domain. It needs a verified domain and a card on file. Pro starts at $20/mo for 50,000 emails.

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.