Firebase email
Firebase email from your own domain, on mail servers we own
Send Firebase Auth emails, Firestore-triggered emails and Cloud Function emails through Groundmail. Use our SMTP relay with Firebase's own settings and extension, or call the API from a function.
3,000 emails/month free · card required to send, no charge on Free
Setup
Three ways to send Firebase email
Start by creating an SMTP credential or an API key in Groundmail and verifying your sending domain. Then pick the path that fits.
Firebase Auth emails: SMTP settings
For Firebase's own verification and password reset emails, open Authentication → Templates → SMTP settings in the Firebase console, enable it and enter our relay.
Firebase Auth SMTP settings
Sender address no-reply@mail.yourdomain.com SMTP host smtp.groundmail.dev Port 587 Security mode STARTTLS Username groundmail Password gmsmtp_... # your SMTP credentialFirestore: the Trigger Email extension
Install firebase/firestore-send-email (Blaze plan). Set the SMTP connection URI below, put the SMTP credential in the SMTP password field, then add a document to the mail collection to send.
Trigger Email extension
# SMTP connection URI smtp://groundmail@smtp.groundmail.dev:587 // Send by adding a document await addDoc(collection(db, "mail"), { to: "ada@example.com", message: { subject: "Welcome to Acme", html: "<p>Thanks for signing up.</p>" }, });Cloud Functions: the Node SDK
For full control, send from a function with the groundmail package. Store the key with firebase functions:secrets:set GROUNDMAIL_API_KEY.
functions/src/index.ts
import { onCall } from "firebase-functions/v2/https"; import { defineSecret } from "firebase-functions/params"; import { Groundmail } from "groundmail"; const GROUNDMAIL_API_KEY = defineSecret("GROUNDMAIL_API_KEY"); export const sendWelcome = onCall({ secrets: [GROUNDMAIL_API_KEY] }, async (req) => { const groundmail = new Groundmail(GROUNDMAIL_API_KEY.value()); await groundmail.emails.send({ from: "Acme <no-reply@mail.acme.com>", to: req.auth!.token.email!, subject: "Welcome to Acme", html: "<p>Thanks for signing up.</p>", }); });
Deliverability
Why send Firebase email through Groundmail
Your domain, not a default sender
Sent from mail servers we own
No marketing mail ahead of yours
Bounces handled for you
Pricing
Start free. Pay for volume, not features.
Every sending feature on every plan; tenants on Scale. Plans change how much you send and how isolated your sending is.
Free
$0/mo
3,000 emails / month
Pro
$20/mo
50,000 emails / month
Scale
from$90/mo
100,000 emails / month
Dedicated
from$299/mo
250,000 emails / month included
3,000 emails/month free · card required to send, no charge on Free
FAQ
Questions
Do I need the Blaze plan?
For the Trigger Email extension and Cloud Functions, yes: Firebase requires the Blaze (pay as you go) plan for both. The Firebase Auth SMTP settings don't need code or an extension.
Can I send Firebase password reset links from my own templates?
Yes. In a Cloud Function, generate the link with the Firebase Admin SDK (generatePasswordResetLink) and send it with emails.send, so you own the template and the sending domain.
Do I need a credit card?
Yes. A card on file is required to send email, including on the Free plan, and it isn't charged unless you upgrade. Requiring a card keeps abuse off our IPs, which protects deliverability for everyone on them.
Can I send newsletters or marketing email?
No. Groundmail is for transactional email only: password resets, sign-in codes, receipts, alerts and invites. Keeping marketing and cold email off our IPs is what keeps the shared pool clean. Keep newsletters with a tool built for them.
Send Firebase email from your own domain.
Create an account, verify your domain and send a test in a few minutes.
3,000 emails/month free · card required to send, no charge on Free