Custom Domains
Serve your whiz.pub blog from your own domain, such as blog.example.com or example.com.
Prerequisites
- A verified email address on your whiz.pub account.
- A working blog at your subdomain (e.g.
yourname.whiz.pub). - Headless mode must be disabled (custom domains and headless mode are mutually exclusive).
- Access to your domain's DNS settings.
Step 1: Add Your Domain
Register the domain with whiz.pub using any of the following methods.
Web
Go to /app/settings and enter your domain in the Custom Domain field. Click Add Domain.
Your tenant_id will be shown on the settings page after the domain is added. You need this for the DNS verification record.
CLI
whiz domain add example.comThe output includes your tenant_id, which you need for the DNS verification record.
API
curl -X POST https://whiz.pub/api/v1/domains \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'The response includes your tenant_id, which you need for the DNS verification record.
Step 2: Configure DNS
Add two DNS records at your domain registrar or DNS provider.
CNAME Record (subdomains)
Point your custom domain to the Whiz custom-domain edge:
| Type | Name | Value |
|---|---|---|
| CNAME | blog.example.com | proxy.whiz.pub |
proxy.whiz.pub is the DNS-only custom-domain edge. It terminates TLS and serves rendered pages from the Whiz edge cache.
If you use Cloudflare DNS for your own domain, set this CNAME record to DNS only (grey cloud). Do not proxy it through Cloudflare; Whiz Edge handles HTTPS automatically.
A Record (apex / root domains)
If you are using an apex domain (e.g. example.com) and your DNS provider does not support CNAME records on the root, use an A record pointing to the Whiz edge IP instead:
| Type | Name | Value |
|---|---|---|
| A | example.com | 161.118.181.32 |
This is the Whiz Edge IP. It provides the same functionality as the CNAME target — TLS termination, edge caching, and automatic HTTPS.
Tip: Use the CNAME for subdomains (
blog.example.com) and the A record for apex domains (example.com). If your provider supports CNAME flattening (Cloudflare, DNSimple, NS1), you can use the CNAME on the apex as well.
TXT Record (Verification)
Prove domain ownership by adding a TXT record:
| Type | Name | Value |
|---|---|---|
| TXT | _whiz-verify.example.com | <YOUR_TENANT_ID> |
Where to find your tenant ID:
- Dashboard: Shown on the
/app/settingspage after adding the domain. - API: Returned in the response body when you add the domain via
POST /api/v1/domains.
DNS Examples
Subdomain (blog.example.com):
| Type | Name | Value |
|---|---|---|
| CNAME | blog.example.com | proxy.whiz.pub |
| TXT | _whiz-verify.blog.example.com | <YOUR_TENANT_ID> |
Apex domain (example.com):
| Type | Name | Value |
|---|---|---|
| A | example.com | 161.118.181.32 |
| TXT | _whiz-verify.example.com | <YOUR_TENANT_ID> |
Step 3: Verify Your Domain
After DNS records have propagated, verify the domain.
Web
Go to /app/settings and click Verify Domain.
CLI
whiz domain verify example.comAPI
curl -X POST https://whiz.pub/api/v1/domains/example.com/verify \
-H "Authorization: Bearer YOUR_API_KEY"Once verified, your blog is served at https://example.com.
Removing a Domain
Web
Go to /app/settings and click Remove Domain.
CLI
whiz domain removeYou will be prompted for confirmation. Use -f to skip:
whiz domain remove -fAPI
curl -X DELETE https://whiz.pub/api/v1/domains \
-H "Authorization: Bearer YOUR_API_KEY"How It Works
- Whiz Edge receives traffic for custom domains through
proxy.whiz.puband preserves the originalHostheader. - The edge checks that the custom domain is verified in Whiz, then serves rendered pages from the Whiz edge cache.
- If a rendered page is missing or stale, the edge falls back to the main Whiz app, which renders and refreshes the cache.
- After verification, your subdomain (
yourname.whiz.pub) redirects to your custom domain. All links and SEO metadata use the custom domain as the canonical URL. - HTTPS is issued automatically by Whiz Edge using Let's Encrypt. No certificate setup is needed on your end.
Troubleshooting
DNS propagation delay
DNS changes can take up to 48 hours to propagate, though most providers complete within minutes. Use a tool like dig to check:
dig TXT _whiz-verify.example.com
dig CNAME example.com # for subdomains
dig A example.com # for apex domainsWrong TXT value
The TXT record value must be your tenant ID exactly, with no extra spaces or quotes. Double-check the value shown on your settings page.
Domain still showing as unverified
- Confirm both the DNS record (CNAME or A) and TXT record are in place.
- For subdomains: confirm the CNAME record points to
proxy.whiz.pub. - For apex domains: confirm the A record points to
161.118.181.32. - Confirm the TXT record is on
_whiz-verify.example.com, notexample.com. - If you use Cloudflare DNS, confirm the CNAME is DNS only (grey cloud), not proxied.
- Wait for DNS propagation and try verifying again.
Apex domain setup
For root domains (example.com), use an A record pointing to the Whiz edge IP 161.118.181.32. This is the recommended approach because many DNS providers do not support CNAME records on the apex. Other options:
- Use a provider that supports CNAME flattening (Cloudflare, DNSimple, NS1) and use a CNAME instead.
- Some providers offer an
ALIASorANAMErecord type that works the same way as a CNAME. - Use a subdomain (
blog.example.com) with a CNAME if you prefer.
Cannot add a domain — headless mode is active
Custom domains and headless mode are mutually exclusive. Disable headless mode first, then add your domain:
whiz headless disable
whiz domain add example.comBlog loads but shows the wrong content
The CNAME record may be pointing to the correct server, but the TXT record is missing or incorrect. The server cannot identify your tenant without a verified TXT record.