A tree, not a list

Every page has a parent, except the one at the root. That structure does two jobs at once: it builds the URL, and it gives menus and breadcrumbs something to follow.

A page with the slug pricing under a parent with the slug services is served at /services/pricing. Move it under a different parent and the URL changes with it — which is worth remembering before reorganising a live site.

Slugs

The slug is the page's own URL segment, not its full path. Keep them short, lowercase and hyphenated. A slug is generated from the page name when you leave it blank, but the two are independent afterwards: renaming a page does not silently change its URL, which is deliberate — it stops a copy edit from breaking every inbound link.

Position

Sibling pages have a position, and that is the order they appear in wherever the site lists them. Position is separate from the name, so you can order things by importance rather than alphabetically.

When the tree and the navigation disagree

The page tree is not automatically the site menu. Menus are built separately, which means:

  • A page can exist without appearing in any menu — useful for landing pages you link to directly.
  • A menu can point at something that is not a page at all, such as an external URL or a documentation section.
  • Reordering pages does not reorder the menu, and vice versa.

This separation is a feature, but it does mean that "I moved the page and the menu didn't update" is expected behaviour rather than a bug.

Choosing where a page belongs

Put a page under the parent that matches how visitors would look for it, not how your team is organised internally. The URL is part of the interface, and a path that reads sensibly out loud is usually the right one.