members_sites.json is the portable member configuration at the theme root. It contains sites, access rules, page bindings, and complete navigation trees. Liquid, sections, layouts, and their settings remain in separate theme files.
Use this file to change navigation from your editor or a coding agent such as Mist. You do not need to recreate the menu in the admin after each edit.
Edit navigation with theme dev
- Start with your theme’s current files, including
members_sites.jsonand its referenced templates. - Run
fluid theme devfrom the theme directory. By default, it creates or reuses an isolated development theme.--themeexplicitly targets an existing theme; check the target before using it. - Find your site in
sites. Follow itsmenu_keyto the matching entry inmenus. - Edit that menu’s
items: change atitle, update atarget, reorder the array, or add nestedchildren. Preserve every required field and keep keys unique. - Save the manifest. Wait for
synced members_sites.jsonin the CLI output. - Check the CLI preview. With live reload enabled, it reloads after a successful upload and renders the updated menu.
The layout must render the site’s menu, usually through
settings.menu. Editing the manifest cannot change hardcoded navigation HTML. See Member sites for rendering behavior.Document structure
Use the exact filenamemembers_sites.json, including the s in members. Put it next to root-level variables.json, not inside config/.
All five top-level fields are required:
Each object uses an exact set of fields. Include empty arrays, empty objects, or
null where allowed; do not add your own fields. Document keys are portable references, not database IDs. Keep them stable while editing, but note that existing sites are matched by name, and pages by slug within their site. Changing a site name or page slug replaces that entry rather than performing an in-place rename.
Example: a customer menu
This complete example defines one customer site with two navigation links. It assumes the destination company has an activecustomer member type and the US country, and that layouts/member.liquid exists and renders settings.menu without additional selected menu settings. It has no custom pages or template metadata overrides.
Use it as a format example. Do not replace an existing multi-site manifest with it to edit one link.
title and save. If the item has translated labels in titles, update those labels too. To place it before Shop, move the whole item earlier in the items array.
Sites and access rules
Each site requires these fields:
Rules use country codes such as
US and CA, and member-type slugs such as customer and rep. Fluid resolves them against the receiving company. A missing country or missing/archived member type rejects the upload; it does not silently clear the restriction.
An empty rule axis is unconstrained. Clearing member_type_slugs broadens access; use active: false to disable a site. Country and member-type restrictions both apply when both are present. See Site access rules.
Custom pages
Every entry in a site’spages array requires:
For example, add this object to the intended site’s
pages array and include its template file in the theme:
MembersScreen target; do not create custom page entries to represent them.
Menus and nested items
Each menu requireskey, handle, title, active, country_codes, and items.
keyconnects the menu to sites and declared settings.handleis the preferred menu slug. An unrelated existing menu with that slug is not a prerequisite. Fluid can create a new menu and allocate a different handle on a collision.country_codesmust contain at least one country available in the receiving company. Unlike a site’s country rule, this cannot be empty.itemsis ordered. Each item requireskey,title,titles,target, andchildren.- Item keys must be unique across all menus.
titlesmaps locales to translated labels, such as{"en": "Shop", "fr": "Boutique"}. Use{}when there are no translations. childrencontains more items of the same shape. Use[]for a leaf.
menu_key or a menu_references entry. Fluid preserves shared menus by creating a separate copy when an edit would otherwise change another consumer’s navigation. Declared menu settings are rewritten to the allocated handle. Avoid hardcoding a handle that must survive a cross-company import.
Link targets
A
MembersPage target must name a page belonging to the referenced site. A MembersScreen key must be a supported system screen, and the destination company must have the account screens runtime configured.
Handle-based target types are Product, Medium, Page, EnrollmentPack, Collection, Post, and Library. Their content must already exist in the receiving company; the manifest does not transfer products or media.
Built-in target types are HomePage, CollectionPage, CategoryPage, JoinPage, Shop, and PostPage. These take only type.
Explicit links accept HTTP, HTTPS, mailto:, tel:, root-relative paths, and fragment links. Prefer MembersPage or MembersScreen targets for member destinations so Fluid resolves their routes.
Template metadata and menu settings
Keep thetemplates and menu_references entries produced by a pull or export when editing navigation. They preserve template behavior and selected menus across imports.
A templates entry requires these fields:
These entries carry metadata, not Liquid bodies. Keep the separate template, layout, section, snippet, and settings files they depend on. Only templates belonging to the member composition can be declared here.
menu_references describes selected link_list settings. Each entry requires:
Every selected menu setting in the member composition needs exactly one matching reference. Use the references emitted by export or pull instead of guessing a pointer. If you add a new selected menu setting, add its reference and include the containing file.
Upload, import, and removal behavior
For a company theme, uploading the manifest updates that theme’s member configuration. Downloading it again reconstructs the document from the current sites, pages, menus, and templates.- Re-uploading unchanged configuration retains unchanged records.
- Sites match by name; pages match by slug within their site. Document keys connect references within the file and are not persistent record identities.
- Sites and pages omitted from a version 2 snapshot are removed. Removal can be rejected if a removed page is still referenced by another menu consumer.
- Missing templates, unresolved content handles, invalid rules, and malformed documents reject the member upload.
- Deleting or renaming
members_sites.jsonis rejected. To intentionally clear the target theme’s member sites and pages, submit an explicit empty version 2 document. This is not a request to delete every company menu or theme file.
menu_slug alone cannot reconstruct a menu in another company.