Custom domain walkthrough¶
This is the long version of the Custom domain overview. Follow it top-to-bottom the first time you set up a domain. Each step is short. Take a 5-minute break between Step 2 and Step 3 if you want — DNS propagation needs a minute to catch up.
Keep the Domain Setup page open in a tab
Almost everything in this walkthrough refers back to it. We'll paste values from there into your registrar.
Step 0 — Pick (or buy) a domain¶
If you already own one, skip to Step 1.
Otherwise, register a domain at the registrar of your choice. Mission
Broadcast doesn't sell domains, doesn't take a cut, doesn't care which
one you pick. Plain .com domains run $10-15/year and re-up every
year. Pick one that's short, easy to say out loud, and unlikely to
embarrass anyone in five years.
Common picks:
<missionaryname>.com— e.g.,elderpehrson.com. Most common.<missionaryname>mission.com— works when your last name is taken.<lastname>mission.com— when there are multiple missionaries in the family and you want one shared archive site.
Registrars Mission Broadcast has step-by-step in-app guides for:
- GoDaddy
- Namecheap
- Cloudflare (Registrar)
- Squarespace Domains (formerly Google Domains)
- Porkbun
- Bluehost
Other registrars work fine too — you'll see a generic walkthrough.
Step 1 — Save the domain in the app¶
- Open the Domain Setup page in the account sidebar.
- In the Custom domain card at the top, type your domain (without
https://, without trailing slash — justelderpehrson.com). - Click Save domain.
The page expands to show the three vendor cards below. Your intake
address preview also updates — it should now read
letters@<your-domain>.
Step 2 — Pick your registrar¶
The Where is your domain registered? card has a dropdown. We auto-detect from the domain's nameservers and pre-select the best guess; if it's wrong, just override.
Once you pick a registrar, a panel appears below with:
- A direct link to that registrar's DNS settings page.
- The host-format conventions that registrar uses (some want
@for apex, some want blank, some want the full domain). - Known gotchas (GoDaddy auto-rewrites
@, Bluehost ships default MX records that need removing, Cloudflare's proxy toggle must be OFF for the A records).
Bluehost users — kill the default MX records FIRST
Bluehost ships every new domain with default MX records pointing at
their built-in email forwarder. These must be removed before Step
5, or inbound letters to letters@<your-domain> will bounce.
Step 3 — Public website (Firebase Hosting)¶
This makes https://<your-domain> resolve to the public archive.
- In the 1. Public website card, click Set up public site.
- Wait ~5 seconds — we register the domain with Firebase Hosting and the table fills in with one or two A records (Firebase Hosting's load-balancer IPs) and a TXT record for ownership.
- Open your registrar's DNS panel (use the link from Step 2). Add
each row from the Firebase Hosting table:
- Type: matches the table.
- Host: paste from the table — registrar-specific conventions are already applied.
- Value: paste from the table.
- TTL: 300 (5 min) during setup. You can raise it later.
- Save the records at your registrar.
- Back in the app, click Re-check verification. The page polls for up to a few minutes. When all rows go green, the card collapses to a one-line success summary and you can move on.
Firebase Hosting issues a free SSL certificate automatically
You don't have to buy anything for https://. The cert is issued
by Let's Encrypt; renewal is automatic forever. The only cost is
the domain itself.
Step 4 — Outbound email (Brevo)¶
This authenticates the missionary's outgoing letters so subscribers' inboxes don't dump them into spam.
- In the 2. Outbound email card, click Register domain with Brevo.
- Five DNS rows appear: a
brevo_codeTXT for ownership, two DKIM TXT records, an SPF TXT, and a DMARC TXT. -
Add all five at your registrar. Same routine as Step 3: Type → Host → Value → TTL 300.
Use the 'Copy all as zone file' button
Cloudflare, Hover, and deSEC let you paste a BIND zone fragment instead of typing each row. The button under the table gives you exactly that.
-
Click Re-check verification. Brevo polls every 10-15 minutes for propagation; if a record reads "Pending" but our Re-check DNS button says it's resolving fine across all three public resolvers, you can ignore the Brevo "Pending" — it'll catch up.
Don't paste a competing SPF record
If your domain is already used for outbound mail elsewhere (e.g., a parent's Google Workspace mail at the apex), the SPF record we give you will conflict. SPF only allows one TXT per domain. If you're not sure, see troubleshooting.
Step 5 — Inbound email (SendGrid)¶
This routes mail sent to letters@<your-domain> into the Letters tab
of the account.
Step A — Authenticate the domain¶
- In the 3. Inbound email card, click Enable inbound for this domain.
- Three CNAME records appear (one mail subdomain + two DKIM subdomains).
- Add them at your registrar. CNAMEs only — these are not TXT records.
- Click Re-check status. SendGrid usually validates within 1-3 minutes once DNS propagates.
Step B — Add the MX record¶
- The MX row is shown at the bottom of the card:
MX @ mx.sendgrid.net priority 10. - At your registrar, add an MX record at the apex (
@) pointing tomx.sendgrid.netwith priority 10.
If your registrar shipped default MX records, REMOVE them
SendGrid's MX must be the only MX at the apex. If your registrar auto-added MX records for a built-in email-forwarding feature (Bluehost, some HostGator plans, Cloudflare's email routing), delete those before saving the SendGrid MX. Otherwise inbound mail will bounce or get silently swallowed by the wrong service.
- Save and Re-check status.
Step 6 — Confirm everything¶
Once all three vendor cards show green, click Re-check DNS at the top of the page. This runs a first-party DNS check across three public resolvers (Google, Cloudflare, Quad9) and tells you exactly which records are verified vs missing vs mid-propagation.
When every record is verified across all resolvers, you'll see a green success banner with a link to your new public archive. We also email a "Your custom domain is live" confirmation to all accounts with access to this missionary.
Send the missionary a quick note to confirm their new intake address:
Letters now go to letters@
. The old letters+<slug>@missionbroadcast.comaddress keeps working too — no rush to update saved contacts, but the new one is what we'll show subscribers.
What happens after setup¶
- The daily domain health check runs every 24 hours and re-verifies all your records. If anything stops resolving, you'll get an email within a day or two — see DNS drift alerts.
- Your registrar can mostly be ignored. You only need to log in if:
- You change registrars (then re-do this walkthrough at the new one).
- You let the domain expire (it'll cost more to re-register at a premium if it gets caught by a domain squatter).
- You add other services that need DNS records — never delete Mission Broadcast's records without checking us first.
If something feels stuck, jump to troubleshooting.