Features
We protect your sending reputation
Your mail shares IPs with other senders until you move to your own, so we check what goes out, stop mail to addresses that can't receive it, and keep product email apart from the codes and receipts your users are waiting for.
Before mail leaves
Checks on every send
Most deliverability problems start with what gets sent. These run on every account, with nothing to set up.
Outbound spam scanning
Address validation on send
Shared knowledge of bad addresses
Automatic suppressions
A sending ramp for new accounts
Pauses before damage spreads
Held and rejected mail, and the scoring limits, are described in the content scanning docs. The ramp is in sending limits.
Validation
Check an address before you accept it
POST /validate checks one address for signup forms and imports: syntax, a mail server on the domain, disposable and role mailboxes, catch-all domains, likely typos with a suggested fix, and addresses that recently hard-bounced for a Groundmail sender.
- A verdict of valid, risky or invalid, with every reason found
- Free, and never sends anything to the address
- In the SDKs, the CLI and the MCP server too
- On send, the response lists any recipient held back and why
POST /validate
curl -X POST https://api.groundmail.dev/validate \
-H "Authorization: Bearer $GROUNDMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"ada@gmial.com"}'
{
"email": "ada@gmial.com",
"domain": "gmial.com",
"verdict": "risky",
"reasons": ["possible_typo"],
"suggestion": "ada@gmail.com",
"disposable": false,
"role": false
}A send with a recipient held back
{
"id": "msg_abc123…",
"status": "sent",
"held_back": [
{ "email": "ada@no-mail.example", "reason": "no_mail_server" }
]
}Streams
Product email never shares IPs with your login codes
Every email goes out on a stream picked by its category. Transactional is the default; product covers onboarding, lifecycle and usage email. Each stream has its own sending IPs and its own bounce and complaint rates.
- Set category on the send, the template or the automation step
- If product email draws complaints, product can be paused while transactional keeps sending
- Product email gets one-click unsubscribe headers (List-Unsubscribe and List-Unsubscribe-Post) automatically
- Unsubscribing from product email doesn't block transactional mail
A product email
{
"from": "Acme <hello@mail.acme.com>",
"to": "jane@example.com",
"subject": "Three tips for your first week",
"html": "<p>…</p>",
"category": "product"
}Authentication and monitoring
The records mailbox providers check
Gmail, Yahoo and Microsoft expect authenticated mail, aligned domains, low complaint rates and easy unsubscribes for subscribed mail. Here is what we handle for you.
SPF and DKIM on verify
Free DMARC monitoring
BIMI guidance
DMARC monitoring is free on every plan, and also for domains that don't send through Groundmail. Setup is in the DMARC monitoring docs, and the sender requirements guide covers the mailbox providers' rules.
Our side
IPs we run, and isolation when you need it
We operate the mail servers and the IP space your mail leaves from, so reputation is our job every day.
A transactional-only pool
Blocklist checks on our IPs
Dedicated IPs
Platforms can give a single customer its own IP with tenants. For full isolation, a dedicated server starts at $299/mo. See pricing.
Inbound too
Spam scores on mail you receive
Every email received on an inbound domain carries a spam_score and a spam_status of clean, suspicious or spam. Set a threshold per domain to flag or drop spam before your handler sees it. More on inbound email.
FAQ
Common questions
What happens if my email looks like spam?
Every email is scored before it leaves our mail servers. Obvious spam is rejected and never sent: you get status failed, an email.failed webhook and the reason in bounce_reason, and the recipient is not suppressed. On accounts new to sending, a borderline email is held for review instead, with status held and an email.held webhook; released email goes out as usual. The limits are published in the content scanning docs.
Does address validation cost extra?
No. The checks on every send and POST /validate are both free on every plan. Validation never sends anything to the address.
Why does a new account have a daily limit?
Mailbox providers judge new volume by its history, and our IPs are shared, so a sudden large send from an account with no history can hurt delivery for everyone on them, you included. Paid accounts start at 1,000 product and 3,000 transactional recipients a day, and the limit doubles each day you use at least half of it with low bounces and complaints. If you're moving an existing sender over, email support@groundmail.dev.
Can I get a dedicated IP?
Yes, for $50 per IP per month. Dedicated IPs run on Scale plans (100,000+ emails a month), and the first IP is included from 500,000. Any plan can request one from the billing page: we set up the right plan with you, and billing starts when the IP goes live.
Can I send newsletters or marketing email?
No. Our IPs carry transactional and product email only, so the mail next to yours is mail people asked for. A send with category newsletter is refused.
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.