WritedocsWritedocs

Hidden sections

Any tab, product, version, language or dropdown can be hidden: it’s built like the rest of the site, but no tab, switcher or menu leads to it. Use it for docs that share a site but are meant for someone else - an admin guide next to the user guide, a partner program, an internal API:

{
  "navigation": {
    "products": [
      { "product": "User guide", "pages": ["user/intro", "user/setup"] },
      {
        "product": "Admin",
        "hidden": true,
        "tabs": [
          { "tab": "Setup", "pages": ["admin/setup"] },
          { "tab": "Security", "pages": ["admin/security"] }
        ]
      },
      { "product": "Partners", "hidden": true, "searchPublic": true, "pages": ["partners/intro"] }
    ]
  }
}
hidden boolean default: false

Leaves the item out of every tab, switcher and menu. Its pages are still built, at their usual addresses.

searchPublic boolean default: false

For a hidden item: its search also finds the site’s public pages. writedocs validate rejects it on an item that isn’t hidden.

What readers see

  • Nothing links to it. No tab, switcher, menu or mobile menu lists a hidden item, and the site’s address (/) never opens it. Share its pages’ addresses - /admin/setup/ - with the people it’s for.
  • Inside, it reads like a site of its own. The level it sits on isn’t shown: a reader of the Admin docs above sees no product switcher, since it would list the other products. Everything under it works as usual - its tabs, versions, languages, sidebar, and previous and next links.
  • Its search is its own. Searching from a hidden item’s pages finds only those pages, and the rest of the site’s search never finds them. With "searchPublic": true, its search finds the public pages too - useful when, say, the Admin docs build on the user guide.
  • Folder addresses lead to public pages first. When a folder has pages from both public and hidden sections, opening the folder’s address goes to a public one - see Redirects.

Hidden isn’t private

Anyone with a page’s address can read it. A hidden section’s pages are also listed in sitemap.xml, llms.txt, llms-full.txt and the MCP server, like any other page - to leave a page out of those, set seo.noindex in its frontmatter:

---
title: Security settings
seo:
  noindex: true
---

For docs that must stay private, put a login in front of their addresses - on Cloudflare, with Cloudflare Access - or publish them as a separate site.

A site with no public section

If every top-level item is hidden, add an index.mdx at the project root for the site’s home page. Without one, the site’s address shows “page not found”, and writedocs validate warns about it.

Hiding a single page

To keep one page out of the sidebar, rather than a whole section, set hidden: true in the page’s frontmatter - see Frontmatter.