Jamdesk Documentation logo

Custom Domain Only

Enable Custom Domain Only in Jamdesk to block direct subdomain access and serve your docs exclusively through your own domain.

Your documentation is hosted at YOUR_SLUG.jamdesk.app. The subdomain keeps answering after you connect a custom domain. Every page it serves includes a <link rel="canonical"> tag pointing at your domain. Search engines index your domain, never the subdomain.

Custom domain only turns the subdomain off for direct visitors. A plain hit on YOUR_SLUG.jamdesk.app returns a 404. Your docs are reachable only through your own domain.

This hides your subdomain. It is not a password. Anyone visiting through your domain still sees your docs. Control who can read them with password protection. You can turn on both.

Turning It On

1
Verify your custom domain

Add and verify your domain in the dashboard. See Custom Domains. The toggle requires a domain with status Active.

2
Check your proxy (reverse-proxy setups only)

If your domain is a plain CNAME pointed at Jamdesk (like docs.acme.com), skip this step. If you serve docs at yoursite.com/docs through a proxy, the proxy must identify itself on every request it forwards. See Proxy setups below.

3
Flip the toggle

Open your project's Settings in the dashboard. Expand the Custom Domain card and turn on Custom domain only. Jamdesk checks your live domain first. The toggle stays off until your setup passes. If the check fails, the message tells you what to fix.

The Custom domain only toggle in the Custom Domain card, switched on

Changes reach every edge server within a minute.

Proxy Setups

Jamdesk serves a request to YOUR_SLUG.jamdesk.app only if it identifies itself as coming through your proxy. It needs the X-Jamdesk-Forwarded-Host header or the ?jd_proxy=1 query marker. These setup guides include the right one:

Using MCP or the chat widget through a reverse proxy? Forward /api/mcp/:path* and /api/chat/:path* the same way as /docs. On Vercel:

vercel.json
{
  "rewrites": [
    { "source": "/api/mcp/:path*", "destination": "https://YOUR_SLUG.jamdesk.app/api/mcp/:path*?jd_proxy=1" },
    { "source": "/api/chat/:path*", "destination": "https://YOUR_SLUG.jamdesk.app/api/chat/:path*?jd_proxy=1" }
  ]
}

MCP and chat need no changes on a domain CNAME'd to Jamdesk. Point MCP clients at https://docs.acme.com/_mcp.

Good to Know

  • Everything 404s on the bare subdomain: pages, sitemap.xml, robots.txt, llms.txt, and Markdown exports. Browsers see a Jamdesk not-found page.
  • Images stay reachable. Images, video, and social-preview (OG) images are exempt. The dashboard's site preview loads them directly from the subdomain.
  • You can't lock yourself out. If your domain's DNS breaks, Jamdesk stops enforcing the block. The subdomain serves again until the domain recovers. If you break your own proxy config (say, by removing the marker from a rewrite), turn the toggle off while you fix it.
  • The Search API is unaffected. It authenticates by API key.

What's Next?

Vercel

Add the jd_proxy marker or Edge Middleware

Custom Domains

Register and verify your domain

Password Protection

Control who can read your docs