Internal Content

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 setInternal set
Where you edit itDesign → DocumentationDesign → Internal
NavigationA menu with the type’s name, created and bound for youThe same
Paths/<type slug>/<folders>/<page>/ on your site/internal/<type slug>/<folders>/<page>/, inside the CMS only
PublishingPublish or schedule each page, or the whole setNever. A revision is locked instead
Your site repositoryData file, page list and menu written on publishNothing, ever
Deploy → pending changesPage type and menu edits queue thereNever appear
SearchSite search, Docs MCP, and the editor’s content searchOnly the editor’s content search and the search_internal MCP tool
SettingsName, slug, required fields, documentation configuration and moreName and slug only
Deleting a pageRedirect or 404 for a live page, removed on the next buildImmediate and permanent

Creating an internal set

  1. Go to Settings → Page Types and use the create control in the header.
  2. 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 as handbook.
  3. 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.
  4. 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 handbook creates an internal type from the CLI.
  • create_page_type with type: "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_page locks an internal page’s revision; update_page_metadata with status: "IN_REVISION" revises a locked page. See MCP Tools: Publishing, Distribution and Users.
  • search_internal searches internal pages only. See MCP Tools: Pages and Content.
ESC