GroundmailStart free

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.

Start free

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.

  1. 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 credential
  2. Firestore: 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>" },
    });
  3. 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

Verification and reset emails come from an address on your own domain, authenticated with DKIM, SPF and DMARC, instead of a shared default sender.

Sent from mail servers we own

Groundmail runs its own mail servers on its own IP space. When a mailbox provider starts deferring, the people investigating are the people who operate the servers your mail left from.

No marketing mail ahead of yours

Newsletters, promotions and cold email aren't allowed on our IPs, so auth mail shares the pool with other senders' transactional mail, not bulk campaigns.

Bounces handled for you

Hard bounces and complaints are suppressed automatically, and signed webhooks tell you when a message was delivered, bounced or complained about.

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

Start free

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