Custom domain

Put your status page on status.yourdomain.com — or yourdomain.com/status — with a valid TLS certificate Produl manages for you.

Overview

By default, every status page is served from produl.tech/s/<slug>. That works fine, but most teams prefer their own domain for brand continuity, SEO, and the simple reason that status.yourdomain.com looks more trustworthy to users in the middle of an outage.

Produl supports both subdomains (like status.acme.com) and apex domains (like acme-status.com), and issues a genuine TLS certificate automatically — no manual cert uploads, no Let's Encrypt scripts to maintain.

What happens under the hood

When you verify a domain, Produl attaches it to the infrastructure serving your status pages and a TLS certificate is provisioned automatically via Let's Encrypt. Requests to your domain are routed to your branded status page.

Walkthrough

  1. 1

    Pick your domain

    Subdomains are simplest (status.acme.com). If you only own the apex, you can use that too — Produl will prompt for an A record instead of a CNAME.

  2. 2

    Enter it in Settings

    Open your status page → SettingsCustom domain. Paste the domain (without https://) and click Save changes.

  3. 3

    Add the DNS record at your provider

    The DNS record card on the settings page shows exactly what to add:

    • For subdomains: a CNAME record pointing at cname.vercel-dns.com.
    • For apex domains: an A record pointing at 76.76.21.21.
  4. 4

    Wait for DNS to propagate

    Usually 1–5 minutes. Some providers (older caches, slow TTLs) take up to 30. You can check propagation with dig status.acme.com CNAME or any online DNS checker.

  5. 5

    Click Verify now

    Produl runs three checks in order: DNS resolves to our target → domain is attached to Produl → a TLS certificate has been issued. Each shows a green check or a red X with the exact reason it failed.

  6. 6

    Visit https://your-domain

    Once all three turn green you're live. The URL renders your branded status page over HTTPS, and the internal slug URL still works as a backup.

DNS records reference

Use caseRecord typeNameValue
Subdomain status.acme.comCNAMEstatuscname.vercel-dns.com
Apex acme.comA@76.76.21.21
Any subdomain health.acme.ioCNAMEhealthcname.vercel-dns.com

Set a short TTL

If your provider lets you set TTL (GoDaddy, Namecheap, most), put it at 300 seconds while you're setting things up. Makes re-trying verification after a fix much faster.

Cloudflare note

Cloudflare wants to proxy every record by default (the orange cloud). That breaks Produl's setup — our certificate provider needs to see the real origin IP to issue the TLS cert. Fix:

  • In your Cloudflare DNS dashboard, find the new record.
  • Click the orange cloud next to it to turn it grey (“DNS only”).
  • Save and click Verify again. Should go green within seconds.

Proxied = broken

If the verification says “TLS certificate not issued” and you're on Cloudflare, the orange cloud is almost always the cause. The DNS lookup works, but the TLS handshake can't complete because Cloudflare is intercepting it.

Verification steps

The Verify button runs three checks in order. Understanding each makes troubleshooting trivial:

  1. DNS record matches. Produl does a live DNS lookup. For subdomains we ask for the CNAME; for apex domains we ask for A records. If the value matches the target shown in Settings, step 1 passes.
  2. Domain attached to Produl.Produl registers the domain with its routing layer. This is idempotent — if it's already attached (from a previous attempt), Produl just re-fetches its state.
  3. TLS certificate issued.Produl confirms that Let's Encrypt has issued a valid certificate and HTTPS is live on your domain.

Troubleshooting

SymptomLikely causeFix
“No CNAME record found yet — DNS may still be propagating”DNS hasn't propagatedWait 2–5 more minutes, try again. Verify with dig +short status.acme.com CNAME.
“Expected CNAME cname.vercel-dns.com; got myapp.herokuapp.com”Old CNAME still in placeYour DNS has an old record pointing elsewhere. Delete it, add the correct CNAME, wait for propagation.
“Domain already in use by a different project”Domain is attached somewhere elseDetach it from the other project or provider first, then retry.
“TLS certificate not yet issued. Try again in ~30s.”Cert provisioning in progressWait 30 seconds and click Verify again. First-time issuance can take up to ~60 seconds.
Step 3 fails repeatedly with “misconfigured”Proxied DNS (Cloudflare) or CAA record blocks Let's EncryptTurn off Cloudflare proxy. Check for CAA records on your apex restricting issuers — add letsencrypt.org.

Removing a domain

Clear the Custom domain field in Settings and save — Produl detaches the domain and flips verification state back to off. The slug-based URL keeps working; requests on the old domain will 404 within a few minutes (once DNS caches clear).