Custom domain and reserved slugs β
Every organization on GCM has a public web presence β either at a free subdomain like grace.geniuschurchmanager.com, or at a custom domain you own like app.grace.org. This article covers both, plus the special case of reserved subdomains the platform won't let you claim.
The Domain tab lives at Settings β Domain and is available on Growth, Network, and Unlimited plans. Reserved-slug management is a platform-admin job β most readers will only encounter it when an attempted signup is rejected because the slug they wanted is reserved.

Free subdomains β
When you create an org, you pick a slug β grace, hope-city, centro-de-fe. This becomes the subdomain at <slug>.geniuschurchmanager.com, which is where your public website (built with the Website Builder) lives, where members go to sign in, and where the visitor form lives.
The slug is normalized: lowercased, non-alphanumerics stripped except hyphens. So Grace Church! becomes gracechurch; Centro de FΓ© becomes centrodefe. You set this once at signup; changing it later breaks every existing link, so we don't make it easy to change.
Reserved subdomains β
A small set of subdomains is reserved by the platform and can't be claimed at signup. These include:
| Category | Why reserved |
|---|---|
| System | app, api, www, admin, auth, mail β platform infrastructure. |
| Brand protection | genius, gcm, church-manager β to prevent impersonation. |
| Offensive | A blocklist of slurs and explicit terms. |
| Reserved for client | Slugs claimed for specific clients but not yet active. |
| Other | Edge cases handled case-by-case. |
If a user tries to sign up with a reserved slug, the signup form rejects it before submitting and explains why. The platform-admin Reserved Slugs tab (under Platform Admin, not Settings) is where the platform team adds new reserved slugs or releases old ones.
Most org admins never interact with reserved slugs directly β but if your preferred slug is taken, the rejection message will tell you why.
Custom domains (Growth+ plans) β
If you want members to visit app.grace.org instead of grace.geniuschurchmanager.com, configure a custom domain. The Domain tab walks you through it.
Add a custom domain β
- Open Settings β Domain. You'll see your free subdomain and an Add domain input.
- Type the domain you want β e.g.
app.grace.orgor justgrace.orgif it's the bare domain. - Click Add. The tab now shows a list of DNS records you need to create at your registrar.
DNS records β
GCM gives you one or more records depending on whether you're using a subdomain or apex:
| Type | Name | Value | Purpose |
|---|---|---|---|
| CNAME | app | cname.geniuschurchmanager.com | Routes traffic for the subdomain. |
| A | @ | (IP shown in UI) | Apex domains can't CNAME, so we give you an A record. |
| TXT | _gcm-verify.<domain> | (token shown) | Proves you own the domain. |
Copy each value (click the copy icon next to it) and paste into your registrar's DNS panel.
Verification stepper β
While you wait for DNS to propagate, the tab shows a stepper:
- Pending DNS β we haven't seen your records yet. Auto-rechecks every 30 seconds.
- DNS configured β records visible, verification token matched.
- SSL provisioning β Let's Encrypt is issuing a certificate. Usually takes 1-5 minutes.
- Active β your custom domain works. Members can now visit it.
You can also click Check DNS to force a re-check immediately instead of waiting for the 30s tick.
SSL expiry and renewal β
Once active, the tab shows the SSL certificate's expiry date. Let's Encrypt certs are good for 90 days and auto-renew at the 60-day mark. You don't need to do anything β if a renewal ever fails, the tab shows an error state and we get notified.
Removing a custom domain β
Click the trash icon next to a configured domain. The tab asks you to confirm β once removed, members visiting that domain hit a 404 and you'll need to re-add it from scratch (DNS records and all) to re-enable.
WARNING
Removing a custom domain doesn't break your free subdomain. The <slug>.geniuschurchmanager.com URL always works as a fallback, regardless of what custom domains come and go.
Where domains affect other things β
Once your custom domain is active:
- Public website built in the Website Builder is served from it.
- Visitor form URLs use it (instead of the free subdomain).
- Email sender domain isn't automatically affected β you still configure that separately in Settings β Email. The custom domain is for web traffic only; email deliverability needs its own DNS records.
- Members signing in can use either the custom domain or the free subdomain.
Common pitfalls β
"I added the CNAME but it still says Pending DNS after an hour." DNS propagation is slow. Most propagate in 5-15 minutes; some registrars take up to 48 hours. Use dig CNAME app.grace.org from a terminal to check what the world sees β if it returns the right value, the verifier will pick it up on the next 30s tick.
"SSL provisioning is stuck." Let's Encrypt rate-limits identical certificate requests. If you've removed and re-added the same domain several times in a short window, you might be rate-limited. Wait an hour and try again.
"My free subdomain went away after adding a custom domain." It hasn't. The free subdomain always works as a fallback. Test it in a private window if your browser is auto-redirecting from one to the other.
"I want my slug app but it's reserved."app is a system slug used by app.geniuschurchmanager.com itself β it can never be claimed by an org. Pick a different slug, or use a custom domain like app.grace.org where you can use app freely on your own domain.
"My custom domain works for the public site but not the admin app." By design β the admin app (app.geniuschurchmanager.com) is always served from the platform domain so we can roll out updates atomically. Custom domains route to your public site only. Staff sign in at the platform URL.
Next steps β
- Website Builder custom domain β the public-site side of the same setup.
- Organization basics β set your org identity once your domain is active.
- Email + notifications β set up email sender on your domain separately.
