Member sites require member storefront enablement for your company. The member layout and page templates a site frames are theme content that you author. See Member page templates.
Understand the building blocks
Sites belong to the theme, not to the company. Switching the active theme switches the sites, duplicating a theme copies them, and exporting a theme writes them to disk.
Know where member pages live
Member pages are served on your company’s account subdomain, not on the storefront domain. Replaceacme with your company’s Fluid subdomain:
A storefront on a custom domain still uses its Fluid subdomain for member pages. On the storefront domain, the
/accounts prefix is reserved and serves no pages, so do not link to it.
Every member page is rendered for the signed-in member on each request. It is never cached, never served by the CDN, and never indexed by search engines.
Create a site
- Open your theme in the Page Editor.
- In the templates panel, open Member Sites and add a site.
- Give the site a name that describes its audience, such as
RepsorUS customers. Names are unique within a theme. - Set the rule: the countries and member types the site serves. Leave both empty for a site that serves everyone.
- Choose whether the site is a default site.
- Pick the layout that frames the site’s pages.
- Save. The site is appended after the theme’s existing sites and receives a menu named after it.
Decide who a site serves
A rule has two axes: countries and member types. Each axis is a list.- An empty axis is unconstrained. A site with both axes empty matches every member.
- A constrained axis matches when the member’s value is in the list. A member whose country is unknown takes the company’s default country.
- Clearing an axis widens the site. Removing the last country from a rule does not turn the site off. It serves every country.
- Explicit sites first. Every active site that is not a default site is tried in position order. The first match wins.
- Default sites next. Only when no explicit site matches, active default sites are tried in position order.
Two explicit sites can overlap. A US rep matches both
Reps and US customers, and the higher site wins. Reorder the list to change which one that is.
You can rename, reorder, narrow, or deactivate any site. You cannot delete a theme’s last site. Deactivate it instead, which is visible in the editor and reversible.
Add pages to a site
Each site holds its own pages. In Member Sites, open a site and choose Add page.- A page has a title, a slug, and a published flag. The slug is derived from the title unless you set one. It uses lowercase letters, numbers, and hyphens, and is at most 64 characters.
- Slugs are unique within a site, not within the theme. Two sites can both have a
rewardspage, and each member gets the one in their site. - Every page gets its own
members_pagetemplate, created with the page. Compose it with sections the way you compose any other template. - An unpublished page returns a not-found response and is absent from derived navigation. Publish it when it is ready.
- A page can move to another site. It keeps its template and its slug.
Arrange the navigation
Every site has its own menu. When you create a site, Fluid creates a menu named after it, such asReps navigation, and links the site to it by slug.
Edit the menu in the theme editor’s menu editor. Its items can point at:
- A member page in the site.
- A system screen: Messaging, Contacts, or My Site.
- Any other destination, such as the storefront shop or an external URL.
settings.menu, in the same shape as any link_list setting. See Member page templates for the Liquid.
Until a site has a menu with items, Fluid derives one: the Dashboard first, then the site’s published pages by title. A menu whose items all resolve to nothing falls back the same way, so a member always has a way out of the page they landed on.
Two things the menu does not do. It does not mark the current page: compare an item’s url with request.path in Liquid, as the storefront navigation does. And it does not hide links that leave the member area: a link back to the shop is a normal thing to want.
Frame the site in a layout
A site names the layout that frames its pages. The page’s own{% layout %} tag is ignored for member pages, because a page can move between sites and the site owns the frame.
A new site is framed in the theme’s
member layout when the theme has one, and in theme otherwise. When a site names a layout the theme no longer has, Fluid falls back to member, then to theme, so a renamed layout degrades rather than leaving the page bare. none is a deliberate choice and does not fall back.
The editor’s layout picker offers only layouts the theme has. Write the member layout before you expect to pick it. See Member page templates.
Sign in and sign out
A guest who opens any member page is redirected to Fluid’s hosted sign-in for your company, with the requested path carried along. After signing in, the member returns to the account subdomain, receives a session, and lands on the page they asked for. The session is a signed, HTTP-only cookie that lasts 30 days. Fluid re-checks the member’s standing in your company on every request, so a member whose access ends is signed out immediately, whatever the cookie says. The sign-in landing at/login is a themed page you control. Nothing redirects a guest through it, but you can link to it from the storefront, and it receives the sign-in URL to put behind its button. Sign-out is a form in your layout that posts to the member’s sign-out route. Both are shown in Member page templates.
Use the system screens
Fluid ships three screens that every site has:
A system screen is not a page you compose. Fluid renders it inside the site’s layout, and the member’s identity comes from their session. You control whether a screen appears in a site’s menu and where. You do not control its content or its address.
System screens require the account screens runtime to be enabled for your company. Fluid loads it once, on every member page, through a global embed. Your layout needs only
{{ content_for_header }} for the runtime and its security token to reach the page.Export and import sites
Exporting a theme writesmembers_sites.json at the theme root, next to variables.json. It lists every site in resolution order with its rule, layout name, menu slug, and pages. Every reference is a name: a site names its layout, and a page names its template, which the export writes as members_page/{name}/index.liquid.
Importing a theme recreates the sites and pages from the manifest and relinks each page to its template by name:
- The importing company must have member storefront enabled. Otherwise the layouts and page templates import as ordinary templates and no sites are created.
- A theme that already has sites keeps them. The manifest is skipped rather than merged.
- A page whose template did not import arrives unbound. Bind it in the editor.
- A malformed manifest costs the sites, not the import.
Test a member site
- Sign in as a member who matches the site’s rule. Confirm the dashboard, each published page, and each system screen open.
- Sign in as a member who matches a different site. Confirm the first site’s pages return a not-found response, including by direct URL.
- Sign in as a member who matches no site. Confirm every member page returns a not-found response.
- Open a member page as a guest. Confirm you are sent to sign in and return to the same page afterwards.
- Reorder two overlapping explicit sites and confirm a member who matches both moves with the order.
- Confirm the menu lists what the same member can open, and nothing they cannot.
Troubleshoot a member site
Implementation checklist for coding agents
Treat this page as the member site contract. Read the target theme before editing it, and preserve its existing conventions and content.- Confirm member storefront is enabled for the target company. Do not infer it from the presence of this guide.
- Create sites through the theme editor or its API. Do not edit
members_sites.jsonto change a live theme. - Give every site a name unique within the theme and a rule made only of countries and member types.
- Treat an empty axis as unconstrained. Never clear an axis to disable a site; deactivate it.
- Keep one default site with no rule when every member should reach some page set. Place explicit sites above it.
- Use lowercase, hyphenated slugs of at most 64 characters, unique within the site.
- Point a site at a layout the theme has. Create
layouts/member.liquidbefore selecting it. - Link the site’s menu to member pages and system screens rather than to storefront copies.
- Never link to
/accountspaths on the storefront domain. - Verify matching, non-matching, and no-match members, guest redirect and return, and menu contents.
- Report which files changed and which checks ran. Editing a theme, publishing it, and enabling the feature are separate actions; confirm the target and authorization before each remote change.