Custom domain (BYO)¶
Mission Broadcast's free path URL (https://missionbroadcast.com/m/<slug>) works fine
forever — but if you'd rather subscribers see something cleaner like
https://elderpehrson.com and email letters to
letters@elderpehrson.com, you can bring your own domain.
The whole setup takes about 30 minutes the first time and does not need a developer. The Domain Setup page in the account walks you through it and verifies each step automatically.
What you'll need
- A domain name (registered at any registrar — GoDaddy, Namecheap, Cloudflare, Squarespace Domains, Porkbun, and a few others have step-by-step in-app guides; others work too via the generic walkthrough).
- About 30 minutes the first time. DNS changes typically propagate in 5-15 minutes but can take up to a few hours.
- Login access to your domain registrar's DNS panel.
How it fits together¶
flowchart LR
subgraph Registrar [Your registrar — you manage DNS here]
A[DNS records<br/>at your registrar]
end
subgraph MB [Mission Broadcast — automatic]
H[Firebase Hosting<br/>the public site]
B[Brevo<br/>outbound letters]
S[SendGrid<br/>inbound letters]
end
A -->|A + TXT records| H
A -->|TXT records| B
A -->|CNAMEs + MX| S
Three vendors do the work behind the scenes:
| Vendor | What it powers | DNS records you add |
|---|---|---|
| Firebase Hosting | The public archive at https://<your-domain> |
1× TXT (ownership) + 1-2× A (Firebase IPs) |
| Brevo | Outbound broadcasts sent to subscribers | 1× TXT ownership + 2× DKIM + 1× SPF + 1× DMARC |
| SendGrid | Inbound mail to letters@<your-domain> |
3× CNAME + 1× MX |
Total: typically 9-11 DNS records. You only do this once.
The Domain Setup page¶
When you click Domain Setup in the account sidebar, the page is split into four parts (plus a registrar walkthrough panel at the top):
- Custom domain — Type your domain and click Save. This locks in the domain on the missionary doc and pre-fills every record below.
- Where is your domain registered? — Pick your registrar. We auto-detect from your domain's nameservers and pre-select the best match; you can override.
- Public website (Firebase Hosting) — A + TXT records.
- Outbound email (Brevo) — TXT records for DKIM, SPF, DMARC, and ownership.
- Inbound email (SendGrid) — CNAMEs (Step A) and the MX record (Step B).
Each card has:
- A clickable cell-by-cell table — click any value to copy it.
- A Re-check button per card that asks the vendor to re-validate.
- A Re-check DNS button at the top of the page that asks public resolvers (Google, Cloudflare, Quad9) what they see — usually faster and more honest than the vendor's cache.
- A Copy all as zone file button (under each table) that bundles every record as a BIND zone fragment for registrars with bulk import (Cloudflare, Hover, deSEC).
Step-by-step¶
Don't try to wing it from the table — there are a few gotchas. The walkthrough page takes you through the whole setup, top to bottom.
If you're already in the middle of setup and something doesn't add up, the troubleshooting page covers what each verdict badge means and what to do when records say "missing" or "mismatch" hours after you saved them.
Disconnecting later¶
You can return to the free path URL at any time. The Disconnect custom domain button on the Domain Setup page:
- Sets
customDomainback to empty. - Reverts the intake address to
letters+<slug>@missionbroadcast.com. - Leaves your registrar DNS records alone — they just stop being referenced. (You can clean them up at the registrar at your leisure.)
- Doesn't break links in already-sent letters. Subscribers' inboxes keep working.
Letter-book retention is tied to the domain
If a custom domain is disconnected, future letter-book PDFs lose the cleaner header. Existing letter-book orders aren't affected. See Plans & pricing for retention details.