Some content belongs in Leed but must never reach your site: a team handbook, on-call runbooks, release checklists, policies, onboarding notes. An internal page type is built for exactly that. You write and organize its pages the way you would a documentation set — a menu-driven tree, folders, the full editor toolbar, comments and suggestions — but no internal page can ever be published, and nothing about the set leaves the CMS.
What makes a page type internal
| Documentation set | Internal set | |
|---|---|---|
| Where you edit it | Design → Documentation | Design → Internal |
| Navigation | A menu with the type’s name, created and bound for you | The same |
| Paths | /<type slug>/<folders>/<page>/ on your site | /internal/<type slug>/<folders>/<page>/, inside the CMS only |
| Publishing | Publish or schedule each page, or the whole set | Never. A revision is locked instead |
| Your site repository | Data file, page list and menu written on publish | Nothing, ever |
| Deploy → pending changes | Page type and menu edits queue there | Never appear |
| Search | Site search, Docs MCP, and the editor’s content search | Only the editor’s content search and the search_internal MCP tool |
| Settings | Name, slug, required fields, documentation configuration and more | Name and slug only |
| Deleting a page | Redirect or 404 for a live page, removed on the next build | Immediate and permanent |
Creating an internal set
- Go to Settings → Page Types and use the create control in the header.
- Enter a Name, such as
Team Handbook. The Path fills in from it; change it if you like. It is always a single segment, such ashandbook. - Set Type of Page to Internal. The dialog confirms Internal pages live under /internal/handbook and are never published. A navigation menu with the same name is created for them.
- Click Create.
Leed creates the page type, stores its slug as internal/handbook, and creates an empty menu called Team Handbook bound to it. Nothing is committed to your repository, no search index is created for your site, and nothing appears in Deploy.
Open Design, pick Internal in the section picker, and select the new menu. From there you build the set exactly as you would a documentation set: Add Folder to add structure, Add Page → Create new page to write a page into a folder, and drag to reorder. A page you create there opens straight away in the Internal section, selected in the tree you added it to. Folder names become path segments, just as in Folders Set Your URLs.
The menu’s Add Page is the only place an internal page is created. The New Page dialog elsewhere in the editor never offers an internal page type, because a page created there would belong to no menu.
The reserved internal/ path
Every internal page type’s slug starts with internal/, and Leed adds it for you — you only ever type the part after it. The internal root is reserved for page type slugs: no posts, documentation or API type may use internal, or a slug beginning with internal/ or internal.. That keeps an internal set’s path from ever colliding with another page type’s.
The editor shows an internal page’s path without the prefix, beside an internal icon — /handbook/engineering/on-call/ rather than /internal/handbook/engineering/on-call/. The path is an address inside the CMS; it is never built or served.
The settings you get, and the ones you don’t
An internal type’s panel on Settings → Page Types shows three things:
- Name — the display name, also the menu’s name when it was created.
- Slug — shown after a fixed
internal/prefix. It never locks, because nothing is ever published under it. - Navigation Menu — the bound menu, read-only.
Everything else is fixed by Leed and cannot be changed: every editor formatting option is on, no field is required, and there are no feeds, recommendations, autolinking, layouts or documentation configuration. Access overrides on the type work as they do on any other page type; see Resource-Level Access Overrides.
Working on an internal page
An internal page opens in the same editor as every other page, at /internal/<id>, with a few differences:
- The header shows Lock revision or Revise instead of Publish, to anyone whose role can publish the page. There is no schedule, approve or publish control anywhere. See Locking and Revising Internal Pages.
- The right rail has three tabs — Assistant, Comments and Page settings. Workflows and Analytics do not apply to content that is never published.
- Page settings leaves out Page Type, Form, Target Date, Automations and Redirects. Slug, authors, contributors, labels, journey, summary and keywords work as usual.
- The menu’s item settings leave out Disabled and Expanded, which only change how a menu renders on a site, and the menu has no Schedule control. Editing it never marks it as needing a publish.
Never published, enforced everywhere
The rule is not a missing button; it is enforced at every entry point. Publishing or scheduling an internal page — from the editor, the API, the CLI or an AI client — is refused with Internal pages cannot be published (error code internal_page_not_publishable). A bulk schedule that includes one reports that page as refused and schedules the rest. Internal pages, their page type and their menu never appear in Deploy’s pending list and are never written to your site repository.
Internal content is also kept out of every public surface. It is never built into your site, so it never appears in recommendations, and your site’s search, your Docs MCP and the reader-facing agent endpoints never return it, even when asked for an internal page type by id. It has its own search index, used only by the editor’s content search and the search_internal MCP tool.
Finding internal content
The search box at the top of the Internal section filters menus by name as you type. Press Enter to search the text of your internal pages instead, by exact words or by meaning — see Searching Content from the Left Panel. An internal page is searchable as it stood when it was last locked or when its last editor left it.
Deleting an internal page
Delete sits at the bottom of Page settings, as for any page. Because an internal page was never live, deleting it is always the plain confirmation and is immediate and permanent: there is no redirect to choose and no build to wait for. The page is removed from its menu and from internal search at the same time.
From an AI client or the CLI
leed settings pagetype create --type internal --name "Team Handbook" --slug handbookcreates an internal type from the CLI.create_page_typewithtype: "internal"creates one from an AI client. It takes only a name and a slug; every other setting is fixed, and below Growth it is refused with an upgrade-required error. See MCP Tools: Site Structure.lock_pagelocks an internal page’s revision;update_page_metadatawithstatus: "IN_REVISION"revises a locked page. See MCP Tools: Publishing, Distribution and Users.search_internalsearches internal pages only. See MCP Tools: Pages and Content.