---
title: Navigation Menus
description: "The menu builder lets you rearrange, rename, hide and extend the navigation your customers use — the guest header, the logged-in header, the account dropdown, the customer sidebar and the footer. Until you customise one, each surface uses the menu…"
url: "https://rackhelm.com/documentation/navigation-menus/"
updated: "2026-09-24"
category: "Content, Storefront & Marketing"
---

# Navigation Menus

The menu builder lets you rearrange, rename, hide and extend the navigation your customers use — the guest header, the logged-in header, the account dropdown, the customer sidebar and the footer. Until you customise one, each surface uses the menu that ships with the software, so opening the builder changes nothing on your site. This article is for operators.

## Before you start

> **Note:** The whole navigation area requires the `manage_navigation` permission. The built-in **Administrator** role holds it by default.

## The five locations

Open **Platform Settings → Navigation**. Every surface is listed whether or not you have customised it, badged either **Built-in** or **Customised**.

| Location | Where it appears | Nesting |
| --- | --- | --- |
| **Guest Header** | The top navigation bar visitors see before they log in. | Two levels (drop-downs) |
| **Logged-in Header** | The icon row at the top right once someone is logged in. | One level |
| **Account Dropdown** | The menu that opens from the avatar in the top-right corner. | One level |
| **Customer Sidebar** | The main sidebar customers use to move around their account. | Two levels |
| **Site Footer** | The footer at the bottom of every page. | Two levels |

> **Warning:** The Logged-in Header, the Account Dropdown and the Site Footer are also used by the staff area. Editing them changes what your staff see as well as what customers see. The builder flags this at the top of those three screens.

![The Menus screen showing a card per navigation location with Built-in or Customised badges](/wp-content/uploads/rackhelm-docs/content-navigation-locations.png)
The location board. A card shows the item count and when it was last edited once the location is customised.

## Building a menu

1. Select **Customise** (or **Edit**) on a location. The canvas opens pre-filled with the built-in menu; nothing is saved yet.
2. Add items from the palette on the left, drag rows to reorder them, and — where the location supports nesting — drag a row slightly to the right underneath another to make it a drop-down.
3. Click a row to open its settings.
4. Select **Save menu**.

![The menu builder with the palette on the left, the draggable item list in the middle and the preview panel below](/wp-content/uploads/rackhelm-docs/content-navigation-builder.png)
The builder. The palette offers built-in links, your published content pages, structural items and a custom link form.

### What you can add

| Palette section | What it gives you |
| --- | --- |
| **Built-in links** | The application's own destinations. Their addresses are worked out at render time, so they keep working after an update; you can rename them but not edit their URL. |
| Your **content pages**, grouped by page group | Only published pages appear. These items store the page, not a copied URL, so renaming a page slug or a group prefix updates the menu automatically. |
| **Structure** | **Section heading** (sidebar and footer), **Divider** (account dropdown and footer) and **Text block** (footer). |
| **Add Custom Link** | Any other destination. Enter a Title, an optional URL, whether it opens in a new tab, and an icon. |

Custom link URLs accept `http`, `https`, `mailto` and `tel` addresses, or a relative path, query string or in-page anchor. Anything else is discarded when you save, and the item falls back to `#`.

> **Tip:** Footer **Text block** items understand two tokens: `{year}` becomes the current year and `{company}` becomes your company name — so a copyright line never goes stale.

### Item settings

![The Edit item dialog with Content, Appearance and When it appears sections](/wp-content/uploads/rackhelm-docs/content-navigation-item-modal.png)
Options a location's skin cannot render are hidden rather than shown and ignored.

| Setting | What it does |
| --- | --- |
| **Title** | The label, up to 255 characters. |
| **Link** | The destination. Locked for built-in links and for page-backed items — the note beneath offers **Unlink and edit manually** if you want to take control of a page link. |
| **Text** | Body of a footer text block, up to 2,000 characters. Basic formatting and links only — no images, tables or styles. |
| **Icon** | Picked from the built-in icon list. |
| **Open in** | Same tab or new tab. |
| **Number badge** | *Items in the cart* (hidden at zero) or *Items in the cart (shows even when empty)*. |
| **Column** | Footer only: First column, Column 1–4, or Bottom row. Applies once the footer uses more than one column. |
| **Show as a button** | Guest header only — renders the item as a primary button. |
| **Show the icon only** | Guest header and logged-in header — hides the text label. |
| **When it appears** | *Automatic* uses the built-in rules; *Always show it* overrides rules about what the customer owns or which modules are on; *Never show it* hides the item. None of these can override a permission check. |
| **Who sees it** | Everyone, only logged-out visitors, or only logged-in customers. |
| **Extra condition** | One rule from the list below. |
| **Requires permission** | Hides the link from anyone without that permission. Presentation only — it does not protect the page, which has its own check. |
| **Hide this if everything under it is hidden** | Collapses a parent whose children have all been filtered out. |

### Conditions

Conditions are chosen from a fixed list — there is no expression language to learn or to get wrong:

- Only when logged out / Only when logged in
- Only on a main account (not a sub-account) / Only on a sub-account
- Only if the customer has a server, a website, a domain or an SSL certificate
- Only if guest tickets are enabled
- Only if there is something in the cart
- Only if the reviews module is on

## Footer columns

On the footer, the **Footer layout** card sets 1 to 4 columns and saves on its own button. One column keeps the classic single row of links; more columns give you a grouped footer, with each item's **Column** setting deciding where it lands.

## Preview

The preview panel renders the **saved** menu as a chosen persona would see it: a logged-out visitor, a new customer, a customer with services, a sub-account or a Super Admin. It answers the visibility questions synthetically — you are never logged in as anyone else. Save your changes first, then press **Refresh**.

## History and starting over

Every save, reset, restore and revert snapshots the current menu first. **History** lists the last 10 versions with what happened, who did it, their IP address and the item count, and restores any of them — the version you are on now is saved first, so a restore is itself undoable. A restored version is replayed through the same validation as a live save, so an old snapshot cannot reintroduce something the current rules reject.

Two recovery actions sit in the **Start over** card:

| Action | What it does |
| --- | --- |
| **Reset to the built-in menu** | Replaces your items with the shipped defaults, saved as an ordinary customised menu that you can keep editing. |
| **Undo my changes** | Stops using a custom menu at this location entirely. The original hardcoded navigation renders again. This is the strongest recovery available — it works even if something about the custom menu is broken. |

> **Warning:** The hardcoded navigation is still in the page templates as the fallback branch, and it is both the default and the recovery path. If you or a developer customise those templates, never delete it — without it, "Undo my changes" leaves you with no navigation at all.

## Limits and protected items

- A menu can hold at most **300 items**, nested at most **3 levels** deep, in a payload of at most **256 KB**. The builder refuses a save that exceeds any of these.
- A skin that only renders one level rejects a deeper drop rather than accepting something that would never appear.
- Some items are structural furniture the page cannot work without — the logout form, the account dropdown shell, the identity card, the sidebar collapse control. You can rename them, but removing or hiding them is undone on save and logged.
- A built-in link you have deleted is offered back to you: the location card and the builder both list built-in links that are missing from your menu. Nothing is ever re-added silently.

## Troubleshooting

| Symptom | Cause and fix |
| --- | --- |
| An item is invisible on the site but present in the builder | A condition, a "Who sees it" rule or a permission is filtering it out. Use the preview personas to see which. |
| "Always show it" does not reveal a link | It cannot override a permission check. Clear **Requires permission**, or grant the permission. |
| A dragged item refuses to nest | That location renders a single row. Only the guest header, the customer sidebar and the footer support drop-downs. |
| "A menu cannot hold more than 300 items" / "too large to save" | The menu exceeded the item, depth or payload limit. Remove items and save again. |
| An item I deleted reappears after saving | It is protected furniture the layout needs. Rename it if it is in the way. |
| A custom link goes to `#` | Its URL used a scheme that is not allowed. Use `http`, `https`, `mailto`, `tel` or a relative path. |
| The preview does not show my latest edit | The preview renders the saved menu. Save first, then refresh it. |
| A menu appears under "Menus that are not shown anywhere" | It was created at a location no part of the site renders. Rebuild those items in one of the five real locations, then delete the stray menu. |
| Staff complain the admin header changed | Three locations are shared with the staff area. Use **Who sees it** on individual items to separate the audiences. |
