---
title: Page Groups and URL Prefixes
description: "Every content page belongs to a group, and the group's slug is the first part of that page's public URL. Group your terms under `/legal/`, product-specific terms under `/terms/` and company documents under `/company/` — then change your mind later…"
url: "https://rackhelm.com/documentation/page-groups-urls/"
updated: "2026-09-24"
category: "Content, Storefront & Marketing"
---

# Page Groups and URL Prefixes

Every content page belongs to a group, and the group's slug is the first part of that page's public URL. Group your terms under `/legal/`, product-specific terms under `/terms/` and company documents under `/company/` — then change your mind later and move a whole set of pages at once. This article is for operators.

## Before you start

> **Note:** Groups sit behind the same `manage_pages` permission as the pages themselves, because a group's slug is a public URL.

## What a group does

A group supplies three things:

- **The URL prefix.** A page with the slug `privacy-policy` in a group with the slug `legal` is published at `/legal/privacy-policy`.
- **A group index.** Visiting `/legal` lists every published page in that group.
- **A standardised picker.** The page editor's **Group** dropdown is filled from this table, so page URLs stay tidy instead of being free text.

A fresh install seeds four groups: **Legal** (`/legal/`), **Product Terms** (`/terms/`), **Company** (`/company/`) and **Other** (`/other/`). A fifth, **Marketing** (`/marketing/`), is created when the homepage is converted into an editable page.

## Managing groups

Open **Platform Settings → Pages** and select **Manage Groups**, or go straight to `/admin/page-groups`. The table shows each group's name, prefix, page count and sort order, with a preview button that opens the public group index.

![The Page Groups screen listing groups with their URL prefixes and page counts, and the Old URLs card beside it](/wp-content/uploads/rackhelm-docs/content-page-groups-index.png)
Each group's prefix is shown as the path it produces. The card on the right controls what happens to URLs you vacate.

### Adding or editing a group

1. Select **Add Group**, or **Edit** on an existing row.
2. Enter a **Name** — this is the label shown in the page editor and on the group index.
3. Optionally set the **URL prefix**. Leave it blank to derive one from the name.
4. Optionally add a **Description** and a **Sort Order**.
5. Save. If you changed the prefix, the confirmation tells you how many pages moved.

| Field | What it does |
| --- | --- |
| **Name** | Required, up to 100 characters. |
| **URL prefix** | Letters, numbers, dashes and underscores, up to 100 characters, unique across groups. Blank means "generate it from the name". |
| **Description** | Optional, up to 255 characters. Shown on the groups list and the public group index. |
| **Sort Order** | Whole number, 0 or higher. Controls the order groups appear in. Defaults to one more than the current highest. |

> **Tip:** You can also create a group without leaving the page editor — the **Add group** link beside the Group dropdown opens a small form and selects the new group for you.

## Prefixes the site already uses are rejected

Content-page URLs are a catch-all: RackHelm registers them *after* every other route so that a real part of the application always wins. That is what stops a page group breaking your store or your admin area — but it also means a group prefix that collides with a real route would simply never be reachable.

Rather than let you create a dead prefix, the form rejects it with:

> **Warning:** "That URL prefix is already used by another part of the site. Pick a different one."

The reserved list is built from the router itself, so every first path segment the application answers on is covered — `store`, `cart`, `checkout`, `dashboard`, `login` and so on, including routes added by later updates. On top of that, these are always reserved: `admin`, `api`, `assets`, `build`, `css`, `js`, `img`, `images`, `fonts`, `storage`, `vendor`, `webhooks`, `livewire`, `up`, `page-link`, `sanctum`, `broadcasting`, `telescope`, `horizon`, `robots.txt` and `sitemap.xml`.

If you type a prefix that is taken and let RackHelm generate one instead, it appends a number — `store` becomes `store-2`.

## Renaming a prefix moves every page in the group

Changing a group's slug from `legal` to `policies` moves `/legal/privacy-policy` to `/policies/privacy-policy`, and does the same for every other page in that group, in one save. The old addresses are recorded so they can keep working — see [Redirects for Renamed Pages](/docs/page-redirects/).

> **Warning:** Anything outside RackHelm that links to the old path — a marketing site, an email footer, a registrar's whois record — still points at the old URL. Redirects cover you, but update the important links as well.

## Deleting a group

A group can only be deleted when it holds no pages, including pages you have deleted but which are still in the recycle bin. Move its pages to another group first. RackHelm also refuses to delete your last remaining group, because a page with no group has no stable public path.

The lowest-sorted group doubles as the fallback for any page that somehow ends up without one, which is why the seeded **Legal** group sits at sort order 1 and Marketing was placed after **Other**.

## Troubleshooting

| Symptom | Cause and fix |
| --- | --- |
| "That URL prefix is already used by another part of the site" | The prefix collides with a real route. Pick a different word. |
| "This group still contains pages. Move them to another group first" | Deletion is blocked while pages reference the group — including soft-deleted pages. Reassign them in the page editor. |
| "You need at least one page group" | You are trying to delete the last group. Create a replacement first. |
| The prefix I typed came back with a number on the end | It was reserved or already in use, so a unique variant was generated. |
| A page shows an amber "Ungrouped" badge | Its group has gone. It falls back to the lowest-sorted group's prefix; open the page and pick a real group. |
| Old links 404 after a rename | Redirects are switched off. Turn **Redirect old URLs** back on in the **Old URLs** card. |
