Skip to content

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

  1. Open the Domain Setup page in the account sidebar.
  2. In the Custom domain card at the top, type your domain (without https://, without trailing slash — just elderpehrson.com).
  3. 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.

  1. In the 1. Public website card, click Set up public site.
  2. 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.
  3. 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.
  4. Save the records at your registrar.
  5. 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.

  1. In the 2. Outbound email card, click Register domain with Brevo.
  2. Five DNS rows appear: a brevo_code TXT for ownership, two DKIM TXT records, an SPF TXT, and a DMARC TXT.
  3. 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.

  4. 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

  1. In the 3. Inbound email card, click Enable inbound for this domain.
  2. Three CNAME records appear (one mail subdomain + two DKIM subdomains).
  3. Add them at your registrar. CNAMEs only — these are not TXT records.
  4. Click Re-check status. SendGrid usually validates within 1-3 minutes once DNS propagates.

Step B — Add the MX record

  1. The MX row is shown at the bottom of the card: MX @ mx.sendgrid.net priority 10.
  2. At your registrar, add an MX record at the apex (@) pointing to mx.sendgrid.net with 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.

  1. 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.com address 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.