Skip to content

Custom domains for status pages

Serve your status page from your own domain (e.g. status.example.com) with automatic TLS.

Last updated April 26, 2026

Every status page is reachable at a free StatusOwl-hosted subdomain by default. For production, most teams want their status page on their own domain — for example status.example.com instead of acme.statusowl.app. This guide walks through that setup.

TLS certificates are issued and renewed automatically by Cloudflare. There is no upload, no rotation step, and no expiry to track on your side.

Default subdomain

When you create a status page, it's immediately live at:

text
https://{your-subdomain}.statusowl.app

The subdomain comes from your status page's settings. You can change it at any time in Status Pages → [your page] → Settings. The free subdomain stays active even after you add a custom domain — both URLs serve the same page, so you can migrate at your own pace.

Note: .app, not .net

The marketing site and dashboard live on statusowl.net. Status pages live on statusowl.app. Don't mix them up when sharing links.

Adding a custom domain

In the dashboard, open the status page's detail view and find the Custom Domain card. Enter the hostname you want to use (e.g. status.example.com) and click Add domain.

You'll be shown two DNS records to publish on your domain:

  1. A TXT record for ownership verification, with a name like _cf-custom-hostname.status.example.com and a value Cloudflare provides (a random UUID).

  2. A CNAME record mapping your custom hostname to StatusOwl's edge:

    text
    status.example.com  CNAME  status-pages.statusowl.app
    

Add both records at your DNS provider, then come back to the dashboard. The Custom Domain card auto-polls every 10 seconds and you can also click Check now to force an immediate re-check.

Once both records are visible to the world, Cloudflare validates ownership, issues a Let's Encrypt certificate, and the card flips to Verified. The status page becomes reachable on your custom domain immediately after that — typically within 1–5 minutes of publishing the records.

What the verification states mean

StatusMeaning
UnsetNo custom domain configured. Only the free *.statusowl.app subdomain is active.
PendingRecords have been registered with Cloudflare. Waiting for DNS to propagate and for ACME validation to complete.
VerifiedBoth ownership and TLS are active. The status page is live on your domain.
FailedCloudflare reported a verification error (usually a DNS misconfiguration). The error detail is shown on the card; fix DNS and click Check now.

Apex domains (example.com)

CNAME records are not allowed at the apex of a DNS zone by the DNS standard. If you want to serve your status page at the apex (e.g. example.com directly, with no subdomain), your DNS provider must support CNAME flattening or ALIAS records. Most modern providers do — Cloudflare, Route 53, DNSimple, DigitalOcean, and Namecheap all support some form of it.

If your provider doesn't support flattening, use a subdomain instead (status.example.com is the convention everyone follows).

Already on Cloudflare?

Fully supported. You can keep your domain proxied through your own Cloudflare zone (orange cloud) — Cloudflare detects the SaaS relationship automatically and routes traffic correctly. There's no need to disable proxying or change your zone settings.

Removing or rotating a custom domain

To remove a custom domain:

  1. Open the status page's detail view.
  2. In the Custom Domain card, click Remove domain.
  3. Delete the TXT and CNAME records from your DNS provider (optional but recommended).

The status page reverts to its *.statusowl.app subdomain immediately.

To rotate to a different domain (e.g. moving from status.old.com to status.new.com), remove the old domain first, then add the new one. Both operations can be done within minutes.

Troubleshooting

Stuck on "Pending validation"

Confirm both records are publicly resolvable:

text
dig TXT _cf-custom-hostname.status.example.com
dig CNAME status.example.com

The CNAME must resolve to status-pages.statusowl.app, either directly or through your own Cloudflare proxy. Click Check now in the dashboard to force a re-poll.

Stuck on "Pending issuance"

Cloudflare is waiting on certificate issuance. This usually clears within a few minutes. If it persists past 15 minutes, remove and re-add the domain in the dashboard.

"Hostname already in use"

The domain is attached to a different Cloudflare account or another StatusOwl status page. Make sure no other service is claiming the same hostname. If you were previously testing against another platform, release the old custom hostname there before retrying.

My DNS shows the records but the dashboard doesn't see them

DNS propagation can take a few minutes — sometimes longer if you have a high TTL on the parent zone. Wait 5–10 minutes and click Check now. If it still fails, double-check that the TXT record name matches exactly what the dashboard shows (some DNS providers strip or add the trailing zone name automatically).

Can I use multiple custom domains for the same status page?

No — each status page has exactly one custom domain. If you need multiple hostnames pointing at the same content, create separate status pages or use a DNS-level redirect at your registrar.

Security

  • TLS termination happens at the Cloudflare edge with a Let's Encrypt certificate issued for your hostname.
  • The origin is reachable only through Cloudflare's SaaS routing — direct connections to the StatusOwl origin from your hostname are blocked.
  • Custom domains are unique across StatusOwl. The same hostname can't be attached to two different status pages.
  • Until the domain reaches Verified, the middleware refuses to serve content under that hostname — no risk of an unverified domain accidentally exposing your page.