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. When you connect a custom domain, that subdomain keeps answering — but every page it serves includes a <link rel="canonical"> tag pointing at your domain, so search engines index your domain, never the subdomain. For most projects that's all you need.

Custom domain only goes one step further: it turns the subdomain off for direct visitors. A plain hit on YOUR_SLUG.jamdesk.app returns a 404, and 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. To control who can read them, use password protection; the two work together.

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 — there's nothing to configure. 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

In the dashboard, open your project's Settings, expand the Custom Domain card, and turn on Custom domain only. Jamdesk checks your live domain first and won't enable the toggle until your setup passes — if the check fails, the message tells you exactly 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

A request to YOUR_SLUG.jamdesk.app is only served if it identifies itself as coming through your proxy — with either the X-Jamdesk-Forwarded-Host header or the ?jd_proxy=1 query marker. Each setup guide already includes the right one:

If you followed one of those guides, you're already set.

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" }
  ]
}

If your custom domain is CNAME'd to Jamdesk, MCP and chat on your domain keep working with no changes — point MCP clients at https://docs.acme.com/_mcp and you're done.

Good to Know

  • Everything 404s on the bare subdomain — pages, sitemap.xml, robots.txt, llms.txt, and Markdown exports. Browsers see a simple 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 ever breaks, Jamdesk stops enforcing the block and the subdomain serves again until the domain recovers. If you break your own proxy config instead (say, by removing the marker from a rewrite), turn the toggle off while you fix it.
  • The Search API is unaffected — it's authenticated 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