# Email and Deliverability

> Connect an email provider so sign-in, notifications, and digests actually reach members, and authenticate your domain so they land in the inbox.

Seedly Communities sends a lot of email. Sign-up verifications, password resets, event reminders, payment notices, and the daily and weekly digests all go out through an email provider you connect with your own account. If email is not set up, the community still runs, but the moments that depend on a message arriving quietly break. This page connects a provider and gets your mail into the inbox rather than the spam folder.

---

## Why a Real Provider

A membership community sends far more mail than a personal inbox is built for, and it needs it to arrive reliably. A regular Gmail or Outlook account gets rate-limited and flagged as spam almost immediately. An email provider is a service built specifically for this kind of high-trust transactional mail. Seedly Communities works with **SendGrid** or **Postmark**. Pick one. Either is a solid choice, and you can start on a free tier.

---

## What Email Powers

Email is not a side feature here. It carries the parts of the experience that have to reach a person.

- **Authentication.** Sign-up verification and password reset. Without email, a new member cannot confirm their account or recover a lost password.
- **Notifications.** Members choose which of the platform's **44 notification types** reach them by email, spanning posts, comments, mentions, events, live sessions, courses, challenges, coaching, billing, and moderation.
- **Digests.** Daily and weekly summaries that pull quiet members back in.
- **Transactional notices.** Billing events, trial expiry, and payment failures, which always send because a member needs to know.

---

## Step 1 - Choose and Connect a Provider

Create an account with SendGrid or Postmark, then tell the platform which one you chose and give it the key. Email runs on the backend, so these values go on your Convex deployments with the environment command.

```
npx convex env set EMAIL_PROVIDER sendgrid
npx convex env set SENDGRID_API_KEY your_provider_key
```

If you chose Postmark, set `EMAIL_PROVIDER` to `postmark` and set `POSTMARK_SERVER_TOKEN` instead. All the setting names are on the [Environment and Configuration](/docs/help/configuration) page.

Unlike Stripe, email has no separate test and live modes, so the same key is fine on development and production. If you prefer, create a separate key per environment.

---

## Step 2 - Set Your From Address

Every message goes out from one address that you own on your own domain. Set it on both backends.

```
npx convex env set EMAIL_FROM hello@yourdomain.com
npx convex env set --prod EMAIL_FROM hello@yourdomain.com
```

This address must be a **verified sender** at your provider, which is the next step. If the From address is unset, the platform fails closed. It will not send from a bogus address, which means verification and password-reset emails silently do not go out. That is the single most common reason a fresh install seems to swallow sign-ups, so set this early.

---

## Step 3 - Authenticate Your Domain

Getting mail delivered is mostly about proving to inbox providers that you are really you. Your provider walks you through domain authentication, and it comes down to three DNS records you add at your domain registrar. You do not need to understand the cryptography to set them up correctly.

- **SPF** lists which servers are allowed to send mail for your domain, so a receiver can reject forgeries.
- **DKIM** signs each message so a receiver can confirm it was not tampered with in transit and really came from your domain.
- **DMARC** ties the two together and tells receivers what to do with mail that fails the checks, and it can send you reports.

Your provider generates the exact record values for your domain. Add them at your registrar (the same DNS page where you point your domain at the app), then click Verify in the provider dashboard. DNS can take a few minutes to propagate. Once it verifies, your From address is a trusted sender and your mail stops landing in spam.

Set up **all three**. SPF and DKIM alone will deliver, but a published DMARC policy is what modern inbox providers increasingly expect from bulk senders, and it protects your domain from being spoofed.

---

## Step 4 - Send a Real Test

The honest test is a full round trip. Create a new account in your development environment with an address you can actually check, and confirm the verification email arrives in the inbox rather than spam. Then trigger a password reset and confirm that lands too. If both arrive cleanly, your notifications and digests will as well.

---

## Optional - A Separate Stream for Sign-In Mail

The most placement-sensitive messages are the ones a member is waiting on, like a verification link or a password reset. If you want to protect those specifically, you can route them through a second provider or a dedicated sending stream, kept separate from bulk notification traffic. This is optional and off by default. The dedicated-stream setting names are listed on the [Environment and Configuration](/docs/help/configuration) page.

---

## What Breaks When Email Is Misconfigured

| Symptom | Likely cause |
|---------|--------------|
| New members never get a verification email | `EMAIL_FROM` is unset, or the provider key is missing |
| Mail sends but lands in spam | Domain authentication is incomplete. Recheck SPF, DKIM, and DMARC at your registrar |
| Password resets do not arrive | Same as verification. The auth stream is not sending |
| Some members get no digests | Those members turned digests off in their notification preferences, which is expected |
| Provider reports a bounce or complaint | A bad or hostile address. The platform stops mailing addresses that bounce or complain, to protect your sending reputation |

---

## Next Steps

- Confirm the email setting names on the [Environment and Configuration](/docs/help/configuration) page.
- Make sure billing notices can send before you take money, in [Payments and Stripe Setup](/docs/help/stripe).
- Return to the [go-live checklist](/docs/help/deploying) once your test email lands in the inbox.

---
Source: https://seedlycommunities.com/docs/help/email
