Use a manifest when public routes or parents must remain independent of filenames. Use redirects when an old documentation path should remain discoverable after a move.
Define a manifest
{ "pages": [ { "id": "root", "title": "Docs", "slug": "", "markdown_source": "index.md" }, { "id": "guides", "title": "Guides", "slug": "guides" }, { "id": "start", "title": "Start here", "slug": "getting-started", "parent": "guides", "markdown_source": "getting-started/first-sync.md" } ]}
Set manifest-file: docs/manifest.json. Each entry needs a stable id; parent references another entry ID. Entries without markdown_source become managed placeholder Pages.
DocsPress stops on duplicate IDs, missing parents, parent cycles, invalid entries, or two entries that normalize to the same route.
Preserve moved paths
{ "redirects": { "old-start": "guides/getting-started", "legacy/api": "https://developer.wordpress.org/rest-api/" }}
Set redirects-file: docs/redirects.json. DocsPress creates a managed moved-page placeholder containing a link to the new destination.
A redirect cannot replace the managed root and cannot occupy the same route as a real documentation Page.