Skip to main content
Coming soon: member storefront is in a limited pilot and is not yet generally available. This page describes the pilot release for companies that have it enabled, and details can change before general availability. Contact Fluid support to ask about enabling it for your company.
A member site is an access rule and the set of pages it governs. Your theme holds an ordered list of sites. A signed-in member resolves to exactly one of them, is served that site’s pages, and receives a not-found response for every other site’s pages. The rule is a permission, not a display choice, and Fluid enforces it on every request. Use member sites when reps and customers need different pages, when a country needs its own set, or when one group of members should not see another group’s content.
Member sites require member storefront enablement for your company. The member layout and page templates a site frames are theme content that you author. When you create a theme, Fluid starts each default site that has no pages with a member layout, premade pages built from native widgets and a navigation menu. An imported or library theme keeps its own member configuration instead. 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. Replace acme 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

  1. Open your theme in the Page Editor.
  2. In the templates panel, open Member Sites and add a site.
  3. Give the site a name that describes its audience, such as Reps or US customers. Names are unique within a theme.
  4. Set the rule: the countries and member types the site serves. Leave both empty for a site that serves everyone.
  5. Choose whether the site is a default site.
  6. Pick the layout that frames the site’s pages.
  7. Save. The site is appended after the theme’s existing sites and receives a menu named after it.
A new theme has no sites, and a member who matches no site receives a not-found response for every member page. Add a site before you invite members to the account subdomain.

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.
Fluid resolves a member to a site in two passes:
  1. Explicit sites first. Every active site that is not a default site is tried in position order. The first match wins.
  2. Default sites next. Only when no explicit site matches, active default sites are tried in position order.
A default site therefore never shadows an explicit one, wherever it sits in the list. An inactive site resolves for nobody. A member who matches nothing is refused: every member page, including the home page and the system screens, returns a not-found response for them. A common arrangement is one explicit site per audience plus one default site with no rule: 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. Set the slug to / to make the page the site’s home page, served at the site root.
  • Slugs are unique within a site, not within the theme. Two sites can both have a rewards page, and each member gets the one in their site.
  • Every page gets its own members_page template, 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.
Deleting a site deletes its pages, and deletes each page’s template when no other page uses it. The system screens are not pages you add. Every site has all of them.

Arrange the navigation

Every site has its own menu. When you create a site, Fluid creates a menu named after it, such as Reps 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.
Nesting, order, and labels are whatever you save. Your layout reads the result as 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 from the site’s published pages by title, including the home page. 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. Use member_routes.sign_in and member_routes.sign_out for ordinary navigation links. Both the storefront and account host use hosted authentication; no themed sign-in page is rendered. See Sign in and sign out for examples and release requirements.

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 writes a version 2 members_sites.json at the theme root. It contains sites, portable access rules, custom pages, complete menus, template metadata, and references to menu settings. Template content remains in separate files. Importing or uploading the document reconciles the receiving theme’s member configuration. Sites match by name and pages by slug within their site. Missing sites and pages are removed from that theme, so preserve unrelated entries when editing a single menu. Member-type slugs resolve against the receiving company, and a slug with no active member type there rejects the member configuration. A site whose country codes are all unrecognized is imported inactive. Neither case silently widens access. See Sites and access rules. You can edit the manifest while fluid theme dev is running. The CLI uploads the change and reloads its preview after success. See the Member sites manifest for the complete format, navigation examples, and removal behavior.

Test a member site

Preview first, then test with real members:
  • Locally, fluid theme dev renders member pages with sample data. See Preview member pages.
  • In the builder, the member preview opens a page on the account subdomain with your own member data. A company admin can open any active site there, even one whose rule excludes them. The page still renders as the admin’s own member, never as someone else, and an inactive site stays unavailable. Real-time messaging works in that preview too. The response carries X-Fluid-Member-Preview-Site: <id> and X-Fluid-Member-Preview-Rules: bypassed when the rule was skipped. Members who aren’t admins of the company, and guests, keep the normal rules.
Then check access with real accounts:
  1. Sign in as a member who matches the site’s rule. Confirm the home page, each published page, and each system screen open.
  2. 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.
  3. Sign in as a member who matches no site. Confirm every member page returns a not-found response.
  4. Open a member page as a guest. Confirm you are sent to sign in and return to the same page afterwards.
  5. Reorder two overlapping explicit sites and confirm a member who matches both moves with the order.
  6. 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.
  • Use the theme editor or edit the complete members_sites.json through the theme CLI. Verify the target theme before uploading, and preserve unrelated entries.
  • 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.liquid before selecting it.
  • Link the site’s menu to member pages and system screens rather than to storefront copies.
  • Never link to /accounts paths 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.

Copyable task brief

For the Liquid that frames and fills these pages, see Member page templates. For member values on cached storefront pages, see Member-aware sections.