Email and notifications β
GCM sends a lot of email β donation receipts, statement PDFs, attendance reminders, password resets, workflow notifications, welcome messages for new members. This article walks through configuring who the emails appear to come from, how they're delivered, and what they say.
The Settings β Email tab carries two cards: Sender Identity and Email Provider. Below them, the Email Templates card lets you override any transactional template per-org. All three are admin-only.

Sender identity β
Every outgoing email needs three things: a sender name, a sender email, and a reply-to.
Sender name β
What recipients see in their inbox as the "From" name β usually your church's brand name. Keep it under 30 characters or some clients truncate it.
Sender email β
The address messages come from. It must be on a domain you can verify with whichever provider you pick (see below). If you're on the Platform Default provider, leave this empty and we'll send from a GCM-owned address with your church name in the From label.
Reply-to address β
When a recipient hits Reply in their inbox, the reply goes here instead of the sender address. Useful if your sender is noreply@grace.org but you want replies to hit office@grace.org. Leave it empty and replies route back to the sender email.
TIP
Set Reply-To to your church's general inbox even if it duplicates the sender. The few people who do reply to a "noreply" address are often elderly or technically inexperienced and you don't want their reply to disappear into a black hole.
Email provider β
The provider dropdown has three options. Pick one β the provider is org-wide, you can't mix.
Platform Default β
The shared sending infrastructure GCM operates. No config required, no domain verification. Best for small orgs that don't want to deal with deliverability and don't need their own From domain.
Limitations:
- Hard cap of 100 transactional emails per day on starter, 1,000 on growth, unlimited on network+.
- The visible From address is a GCM-owned domain; only the From name is yours.
- Bulk announcements (anything over 50 recipients per send) require a non-platform provider.
Resend β
Connect your own Resend account by pasting an API key. Resend handles deliverability, bounce processing, and per-domain verification. The flow:
- Sign up at resend.com, verify your sending domain (DNS records they give you), and create an API key.
- Paste the key into the Resend API Key field. The eye icon toggles visibility β the key is masked by default.
- Save. The next outgoing email uses Resend.
We don't validate the key on save (Resend doesn't have a "test ping" endpoint), so test it by sending a real email β e.g. trigger a welcome to yourself.
SMTP β
For self-hosted mail or providers without an API (Mailgun, SendGrid, Postmark, your own Postfix). Fields:
| Field | Notes |
|---|---|
| SMTP Host | e.g. smtp.sendgrid.net |
| SMTP Port | 587 for STARTTLS (default), 465 for implicit TLS, 25 for unencrypted (don't). |
| Username | Your provider's SMTP username β often apikey for SendGrid, your full email for Gmail-style. |
| Password | The SMTP password. Masked by default; click the eye to reveal. |
| Use TLS / SSL | Toggle on for 587/465. Leave on unless you're testing locally. |
Credentials are stored encrypted in app_settings under the smtp_* keys. The edge function that sends mail (send-email) reads them server-side β they never appear in the browser after you save.
WARNING
SMTP is slower than the API providers (one connection per send) and doesn't scale to bulk announcements. If you're sending more than a few thousand emails a month, use Resend or a provider with an API.
Email templates β
Scroll past the provider card to Email Templates. This card lists every transactional template GCM sends β welcome emails, password resets, donation receipts, statement notifications, magic-link sign-ins, workflow notifications.

Each row shows the template name, category badge, and whether your org has overridden the default. Click a row to open the editor.
Editing a template β
The editor has:
- Subject β the email subject line. Supports merge variables.
- Body β the email HTML. The editor lets you switch between Preview and Code modes.
- Enabled toggle β turn off a template you don't want sent (e.g. disable auto-welcome if you handle that manually).
- From override β optional. If set, this template sends from a different address than the org default (useful for a "billing@" address on receipts).
- Reply-To override β same idea for replies.
The right panel lists the merge variables available for this template β e.g. {{member_name}}, {{donation_amount}}, {{statement_year}}. Click a variable to copy it; paste into the subject or body.
Click Reset to default to delete your org's override and revert to the platform's default template.
HTML safety
Template bodies are sanitised with DOMPurify before sending. You can use any HTML you like, but <script> tags and inline onclick handlers are stripped. This is to prevent a compromised admin account from poisoning every email your org sends.
Notifications (in-app and push) β
Email isn't the only notification channel. Configure the others in the Channels tab β that's where SMS, WhatsApp, push, and in-app routing live. The Reminders tab (covered in Reminders) then picks which channels to use for event reminders specifically.
What's saved where β
| Key | Where |
|---|---|
messaging_sender_name, messaging_sender_email, email_reply_to | app_settings |
email_provider | app_settings |
resend_api_key | app_settings (encrypted at rest) |
smtp_host, smtp_port, smtp_user, smtp_pass, smtp_secure | app_settings (password encrypted) |
| Template overrides | org_email_templates (one row per org-template pair) |
Common pitfalls β
"My emails go to spam." With Platform Default, this is mostly out of your hands. With Resend or SMTP, verify your domain β SPF, DKIM, DMARC. The provider's docs walk you through each one. Without DKIM, almost every email lands in spam.
"I changed the sender email and now nothing sends." Your new sender domain isn't verified with the provider. Go back to Resend (or wherever) and add the DNS records they list. Until verification completes, the provider rejects sends from that domain.
"Receipts went out with the old template." Template changes apply to future sends only. Receipts already sent stay as they were β we don't re-render historical PDFs.
Next steps β
- Channels β SMS, WhatsApp, push, in-app.
- Reminders β pick which channels send event reminders.
- Organization basics β the org email under Identity is the fallback Reply-To.
