> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluid.app/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For new direct REST integrations, use the v2026-04 surfaces. The @fluid-app FairShare SDK continues to use its own published public-v2025-06 contract.
> Authenticate with the header Authorization: Bearer <token>; public storefront read endpoints require no auth.
> To sign a new merchant up for Fluid programmatically, call POST https://api.fluid.app/api/company with no credentials, as described in /api/agent-signup. Do not automate the signup form or book a demo. The merchant must open the emailed sign-in link and create an API token before authenticated calls are possible.
> After signup, to launch a merchant's store (back-office sync, payments onboarding, store setup, a theme copied from their current site, and a preview link before billing), follow /api/agent-launch.
> Lists use cursor pagination via the page[cursor] and page[limit] query params; follow meta.pagination.next_cursor until it is null.
> When the same operation exists on more than one surface, use the newest: dated API versions are newer than unversioned ones, and later dates win (v2026-04 > v2025-06 > unversioned v0/v1.1). Fall back to a legacy or unversioned operation only when no newer versioned equivalent exists — the company-v0 notes below list the known superseded operations. The same applies to /api/company/v1 and /api/v1/... paths: prefer a newer documented equivalent, and use one only when none exists (/api/v1.1/... is distinct and documented in company-v0). Use page/per_page offset pagination only where a spec documents it — in practice the unversioned company-v0 admin surface; every versioned surface uses cursor pagination.
> Fluid has three navigation APIs; don't mix them up. Storefront website menus (navigation bars, footers) are /api/menus and nested menu_items, in api-reference/content-v0.yaml (API Reference: Website > Navigation menus), with a how-to in themes/navigation-menus; their list uses flat page/per_page pagination. The Fluid mobile app's navigation is /api/v2/mobile_navigations, in api-reference/mobile-v2.yaml (API Reference: Mobile app > Navigation); its list also uses page/per_page. Portal navigations belong to a portal definition (Fluid OS), in api-reference/fluid-os-v0.yaml (API Reference: Portal > Portal navigation), and each has a platform of web or mobile.
> The OpenAPI specs under api-reference/ are the authoritative contracts; prefer them over prose when in doubt. api-reference/storefront-v2026-04.yaml covers the v2026-04 storefront surface (/api/v202604/... paths); api-reference/checkout-v2026-04.yaml covers the v2026-04 checkout surface (/api/checkout/v2026-04/... paths — carts, cart auth, discounts, items, subscriptions, orders, enrollments, and store config); api-reference/public-v2025-06.yaml covers the Public SDK surface used by the @fluid-app FairShare SDK, including its parallel cart lifecycle, browser integrations, versioned payment callbacks, unversioned public utilities, and the cart price-override operation; api-reference/payment-v2026-04.yaml covers the v2026-04 payment gateway admin surface (/api/payment/v2026-04/... paths, bearer-authenticated — gateway CRUD, gateway purchase/authorize/$0-verify, transaction list/show and capture/void/credit, and merchant payment configuration); api-reference/payments-v2026-04.yaml covers the v2026-04 cart payment surface (/api/payments/v2026-04/carts/{cart_token}/... paths, authenticated by the cart token in the path with no bearer — payment-method selection, VGS card tokenization, 3D Secure verification, and PayPal/Braintree/Klarna/Apple Pay flows); api-reference/commerce-v2026-04.yaml covers the v2026-04 commerce order-editing surface (/api/v202604/orders/{order_id}/edits paths, bearer-authenticated — post-checkout order edits that atomically insert items and add adjustments/discounts, with an optional dry-run preview); api-reference/webhooks-v0.yaml covers the unversioned webhooks surface (/api/... paths — webhook registration, delivery payloads, callback registrations, company events, and webhook/callback schemas); api-reference/company-v0.yaml covers the legacy unversioned company admin surface (/api/... paths, bearer-authenticated — company settings and management, customers, users, roles, subscription plans, subscription bundles, subscriptions, media, pages, catch-ups, inventory levels, domains, agreements, and admin order actions). company-v0 caveats: it is the legacy v0 admin contract and its lists use flat page/per_page offset pagination, which is expected there despite the general cursor-pagination rule; where an operation exists in both company-v0 and a versioned spec, prefer the versioned spec — the subscriptions lifecycle (list/create/show/update, cancel, pause, reactivate, resume, retry, skip, failed-cycle-waiver, discounts) and subscription bundles are superseded by checkout-v2026-04, and company pages/media CRUD plus the public pages, categories, products, and media list endpoints are superseded by storefront-v2026-04. Subscription plan management (/api/subscription_plans, resource-wrapped {"subscription_plan": {...}} bodies) exists only in company-v0. api-reference/members-v2025-06.yaml covers the v2025-06 unified Member identity surface (/api/v2025-06/members/... paths, bearer-authenticated — member list/create/show/update, lookup by email/username/external_id/legacy_customer_id, member-type assignment, and the sponsor genealogy read). Prefer it over the customers and reps surfaces when the member type matters: /customers does not serialize member_type. api-reference/analytics-v2026-04.yaml covers the v2026-04 Home dashboard analytics surface (/api/v202604/analytics/dashboard/... paths, bearer-authenticated — read-only endpoints for the Home > Overview, Home > Live, and Home > Field tabs, each accepting an optional country ISO alpha-2 query param that scopes aggregations to a single country).
> api-reference/analytics-v0.yaml covers the unversioned analytics surface that backs the fluid-admin Traffic tab (/api/analytics/... and /api/analytics/traffic/... paths, bearer-authenticated — the legacy shares/views/visitors summary plus traffic overview, ranked campaigns, sources, geographies, flows, and per-rep breakdown, all sharing one reporting-period contract).
> Successful responses wrap the resource payload alongside a top-level integer status and a meta object.
> Portal Definition authoring edits and synchronizes the portal JSON resource graph. Widget Package authoring builds either a company-owned or Droplet-owned Remote DOM package. These are separate contracts; do not imply that one defines the other.
> For Widget Package worker code, use only @fluid-app/portal-sdk/widgets/worker. Use only the Portal Definition and Widget Package workflows and public entry points documented here; do not infer support for undocumented surfaces.
> Every portal function and declarative capability used by a widget must appear in that widget's uses array. Use the same typed function value in uses; do not invent capability-name strings.
> Widget styling must use the portal's semantic theme variables for colors, typography, spacing, radii, borders, focus, and charts whenever a token represents the visual decision. Do not create a separate light or dark palette or duplicate theme controls as widget properties.
> Prefer worker-safe Fluid UI components exported by @fluid-app/portal-sdk/widgets/worker when they fit the interaction. When no exported component fits, use semantic HTML, accessible behavior, and the portal theme variables.
> A Portal Definition push updates the remote working definition. A portal version is an immutable snapshot, and activation is a separate live release operation.
> The Help Center (/help/...) is for merchants, admins and reps using Fluid. Its admin pages mirror the admin's routes: the screen at admin.fluid.app/settings/taxes is documented at /help/admin/settings/taxes. Use the Help Center for how-to questions about the admin, and the Developer Platform and API Reference for building integrations.
> Help Center pages describe what a company admin sees. A reader's role can hide screens and actions; admins manage roles on Settings > Roles (/help/admin/settings/roles). If someone can't find a screen or button, their role's permissions are the first thing to check.
> Send people who need Fluid support to /help/getting-help. Don't invent support email addresses, phone numbers or response times.

# Menus

> Build navigation menus: add links to pages, products and other content, nest sub-menu items, set status and countries, and translate item titles.

Use the **Menus** screen to create and manage navigation menus. A menu is a list of links, and each link can have its own sub-menu items.

## Where to find it

In the admin sidebar, under **Website**, select **Navigation**.

<Note>
  To open this screen, your role needs **View only** or **Full access** for **Navigation Menus**. To create, edit or delete menus, it needs **Full access**. On the [Roles](/help/admin/settings/roles) screen, **Navigation Menus** is in the **Content & Website** card. Open the card and set access from the **Navigation Menus** area's menu, not the card's.
</Note>

## What's on the screen

The **Add Menu** button is at the top of the page.

* The **All**, **Active** and **Draft** tabs filter the list by status. **Draft** lists menus whose status is **Inactive**.
* Use the search box to find a menu.
* Filter the list by **Status** (**Active** or **Draft**) or by **Country**. The **Status** filter and the tabs stay in step.

The list has these columns:

* **Title**: the menu's name. Click it, or anywhere on the row, to open the menu.
* **Status**: **Active** or **Inactive**.
* **Menu Items**: the titles of the menu's top-level items, up to five, then a count of the rest, such as **+3 more**. A menu with no items shows **No items**.
* **Items**: how many top-level items the menu has.
* **Date**: when the menu was created.

Click the **Title** or **Date** header to sort by that column.

Each row's actions menu has **Edit** and, if your role can delete menus, **Delete**. To delete several menus, select their rows with the checkboxes (shown only if your role can delete menus), then click **Delete** in the bar that shows how many rows are selected.

## Create a menu

<Steps>
  <Step title="Start a new menu">
    On the **Menus** screen, click **Add Menu**. The **New Menu** page opens.
  </Step>

  <Step title="Name the menu">
    In the **Menu Details** card, the **Title** starts as **New Menu**. Replace it with your menu's name.
  </Step>

  <Step title="Add menu items">
    Under **Menu Items**, add each link. See [Add a menu item](#add-a-menu-item).
  </Step>

  <Step title="Choose countries and status">
    In the **Available Countries** card, select at least one of your company's countries. In the **Status** card, choose **Active** or **Inactive**. A new menu starts as **Active**.
  </Step>

  <Step title="Create the menu">
    Click **Create Menu**. A confirmation message appears and the menu's page opens.
  </Step>
</Steps>

**Create Menu** stays grayed out until you change something on the page. If no country is selected, the menu isn't created and a message asks you to select at least one country.

Once the menu is saved, **Handle** under the **Title** field shows the menu's handle, which is made from its title.

## Add a menu item

You add items the same way under **Menu Items** on a menu's page and under **Sub Menu Items** on a menu item's page.

<Steps>
  <Step title="Enter the item title">
    In **Item Title**, enter the text the link shows.
  </Step>

  <Step title="Choose where it links">
    Click the **Enter URL** field to open the **Select Type** list. **Home Page**, **Categories**, **All Collections**, **Blog**, **Join Page**, **Shop** and **Cart** are selected as soon as you click them. For **Products**, **Media**, **Pages**, **Enrollments**, **Collections**, **Posts** and **Playlists**, click the type, then pick the item from its list. Use the search box to find it, or click the back arrow to choose another type. To link anywhere else, type the full address in the field instead, such as `https://shop.example.com/sale`.
  </Step>

  <Step title="Add the item">
    Click **Add**. The item appears in the table below.
  </Step>
</Steps>

**Add** stays grayed out until the item has a title and a link. When you click **Add**, a typed address must be a full URL, or a message asks for a valid one.

The table shows each item's **Title**, **Link** and number of **Sub Menu Items**. In the table you can:

* **Reorder** items: drag a row up or down.
* **Edit** an item: click the pencil icon, change the title or link, then click the check mark to apply the change in the table. To cancel, click the X or press Escape.
* **Remove** an item: click the trash icon.
* **Open** an item: click its title to open its page, where you add sub-menu items. See [Add sub-menu items](#add-sub-menu-items).

Adding, editing, removing and reordering items change the table only. Click **Save** (**Create Menu** on a new menu) to keep them. A new item opens only after it's saved; before that, a message asks you to save first.

## Edit a menu

<Steps>
  <Step title="Open the menu">
    In the list, click the menu, or choose **Edit** from its actions menu. The **Edit Menu** page opens.
  </Step>

  <Step title="Make your changes">
    Change the title, items, countries or status. The badge next to the menu's name shows **Active** or **Inactive**.
  </Step>

  <Step title="Save">
    Click **Save**. A confirmation message appears. **Save** is grayed out when there's nothing to save.
  </Step>
</Steps>

If your role can only view menus, there's no **Save** button.

## Add sub-menu items

<Steps>
  <Step title="Open the item">
    On the menu's page, click a saved item's title. The item's page opens, titled **Edit Menu Item** followed by the item's name.
  </Step>

  <Step title="Make your changes">
    Change the **Menu Item Title** if you need to. Under **Sub Menu Items**, add, edit, reorder and remove items the same way as on the menu's page. To go a level deeper, click a sub-menu item's title.
  </Step>

  <Step title="Save">
    Click **Save**. A confirmation message appears. **Save** is grayed out when there's nothing to save.
  </Step>

  <Step title="Go back to the menu">
    Click **Back to Menu**. If you have unsaved changes, you're asked to confirm that you want to leave without saving.
  </Step>
</Steps>

**Back to Menu** always returns to the menu's page, even from a deeply nested item. When you reach the maximum nesting depth, clicking an item shows a message instead of opening it.

If your role can only view menus, an item's page has its fields grayed out and no **Save** button.

## Translate menu item titles

<Steps>
  <Step title="Save your changes">
    On a saved menu's page, click **Save** if you have unsaved changes. Translations don't open while there are changes to save.
  </Step>

  <Step title="Open the panel">
    Click **Translations**. The **Menu Translations** panel opens with each top-level item's **Title**. Enter the title in each of your company's other active languages.
  </Step>

  <Step title="Translate sub-menu items">
    For an item that has sub-menu items, click **View Sub-items**. Click **Back to Menu** or **Back to Parent** to go back up a level.
  </Step>

  <Step title="Save the translations">
    Click **Save** in the panel. A confirmation message appears and the panel closes.
  </Step>
</Steps>

The panel translates item titles only, not the menu's own title. At the top level, **Language Settings** opens your company's language settings in a new tab. To close the panel without saving, click the close button or press Escape.

## Delete a menu

<Steps>
  <Step title="Choose Delete">
    In the list, choose **Delete** from the menu's actions menu. To delete several menus, select their rows and click **Delete** in the selection bar.
  </Step>

  <Step title="Confirm">
    In the **Delete Menu** dialog (**Delete Menus** for several), click **Delete**. A confirmation message appears.
  </Step>
</Steps>

You can delete menus only from the list, not from a menu's page.

<Warning>
  Deleting a menu deletes its items too and can't be undone.
</Warning>

<Tip>
  The **Navigation** item under **Mobile App** is a different screen. See [Mobile app navigation](/help/admin/mobile/navigation).
</Tip>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why isn't my menu created or saved?" id="select-a-country">
    A menu needs a **Title** and at least one country in **Available Countries**. Select a country, then click **Create Menu** or **Save** again.
  </Accordion>

  <Accordion title="Why doesn't a page or product appear in the link list?" id="item-missing-from-picker">
    The **Products**, **Pages**, **Enrollments**, **Collections**, **Posts** and **Playlists** lists show only items that are active or published. Publish or activate the item, then pick it again.
  </Accordion>

  <Accordion title="How do I change where a menu item links?" id="change-item-link">
    An item's own page has no link field. In its parent's table (the menu's page for a top-level item), click the pencil icon next to the item, choose a new link, click the check mark, then click **Save**.
  </Accordion>

  <Accordion title="Why does clicking a new item show a message instead of opening it?" id="save-before-opening">
    A new item opens only after it's saved. Click **Save** (or **Create Menu**), then click the item's title.
  </Accordion>
</AccordionGroup>

## Related pages

* [Website](/help/admin/website)
* [Mobile app navigation](/help/admin/mobile/navigation)
* [Pages](/help/admin/pages)
* [Posts](/help/admin/posts)
* [Languages](/help/admin/settings/languages)
* [Roles](/help/admin/settings/roles)
* [Navigation menus](/themes/navigation-menus)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.