db/ and config/. Sites used to be called member sites. A Site isn’t a theme’s member site, which is written in Liquid and is deprecated, and it isn’t MySite.
Fluid turns Sites on for your company. Until they’re on, publishing answers
404. To ask for them, contact support.Start here
Quickstart
Three commands from an empty folder to a live address.
Site or App?
When a project should be a Site, and when it should be a Mist app.
Framework guides
Vite, Astro, plain HTML and Next.js static export.
Deploy from Claude
Build and deploy a Site with Claude and the Fluid MCP server.
Where a Site opens
A published Site opens at its storefront address:diamond-leaders is the Site’s handle: lowercase letters, digits and single hyphens, at most 40 characters, unique in your company. Everything after the handle is the Site’s own path. The storefront API calls the handle the Site’s slug.
A visit through
/home/sites/<handle> or /sites/<handle> credits the Site’s owner, or the company for a company site.
Sites used to open under /accounts/. Those addresses no longer open a Site, and they don’t redirect, so update any link that still uses one. Account screens such as /accounts/profile aren’t Sites and keep their addresses.
The storefront draws the page around your Site:
- The storefront’s own parts. The cart drawer, checkout, sign-in and the account menu belong to the storefront. Your Site uses them through the SDK, so member pricing and the visit’s credit are the storefront’s own.
- One frame for your Site. Your Site runs in one full-page frame, served from its own host under
sites.fluid.app. The frame is sandboxed, so your code can’t move the storefront’s window by script. Link to storefront pages with plain<a href>links, and the SDK opens them in the storefront’s window when the visitor clicks. See Link to the storefront. - One address bar. The storefront keeps the address bar and the history. Back and Forward move through your Site’s pages, one entry per page.
- Page titles and previews. The storefront writes each page’s head from the Site’s SEO settings and
config/meta.json. See SEO and indexing.
Who can open a Site
A Site belongs to a member or to the company. A new Site is private until its owner makes it public.
A Site that’s switched off (
active: false) opens only for its owner and company admins, whatever its visibility. A branch is private and opens only for the owner and company admins. See Switch a site off.
Sites are shared within one company. A visitor who isn’t a member of your company is a guest, and a guest opens public Sites only. A signed-in member a private Site doesn’t admit sees a refusal page. A guest is asked to sign in.
Share a Site
A member’s own share link, the Site’sshare_url when the member reads the Site through the Member API, carries their credit, such as https://yoli.com/janedoe/sites/diamond-leaders, so the member who shared it gets credit for what the visitor buys.
Copy link copies the Site’s plain link. You find it in Mist and in the site’s screen in the Fluid admin. It shows once the Site is published.
Who manages what
In the Fluid admin, Sites are under Website > Sites. See Sites in the admin. The admin doesn’t add shares: shares are made through the API.
Company Sites on the storefront
A Site your company owns is also a storefront resource, like a page or a product. It has SEO, metafields, countries, adraft, scheduled, published or archived status and an on/off switch, and the public storefront API lists it once it’s live. Member-owned Sites are never in that list. See Company sites on the storefront.
Start from the template
npm create @fluid-app/fluid-site and fluid sites init start a Site in an empty folder. The default starter is a copy of the public member-site-template repository, a blank Vite and React app. It builds and publishes as it is, and it has:
- one home page, and a not-found page for any other path;
- a small router that follows the storefront’s Back and Forward;
- CSS tokens at the top of
src/styles.css, the only place a color or size is named; fluidSite()invite.config.ts, which writes the SEO files at build time;- an empty
config/meta.json, so the Site’s SEO settings decide its title and description; config/access.jsonwith no scopes.
db/ folder, so a new Site has no database until you add a table. See The Site database.
src/pages/, add it to the pages in src/App.tsx, and link to it with <Link>.
db/schema.json and the files in config/ are your Site’s declarations. They’re published with the build and never served as files. Each is optional: leave one out and the Site gets its default.
Build in Mist
When Sites are on for your company, Mist has a Sites section where you create a company Site from the template and open it. You can also ask Mist in chat to create a Site, or to grow one: add pages, a shop with add to cart and checkout, storefront links that keep the visit’s credit, a database table, or content for signed-in members.- Run starts the Site in the preview with
fluid sites dev, on a private local database. Its rows stay on your computer. - The Local and Prod previews run as the member you’re signed in to Mist as, so
fluid.auth.me()andfluid.apianswer for you. The cart still needs the storefront page around the Site, so check it on the published Site. - Publish builds the Site and publishes it. When a change to
db/schema.jsonwould delete data, Mist lists each step in plain words and asks before it applies it. - The settings rail sets the Site’s name, visibility, status and search engine settings. See SEO and indexing.
What Sites don’t do
- No custom domain. A Site lives at your company’s addresses. A project that needs its own domain is a Mist app.
- No server code yet. Server functions aren’t available, so
fluid.fnanswers404and a publish refuses afunctions/folder orconfig/functions.json. You can already store environment variables for them. - No service workers. The Site’s host refuses a service worker’s script.
- No files under
/_fluid/. The Site’s host answers that path itself, and publishing refuses a build with a file under it. - No SQL from the browser. Your code reads and writes its tables through
fluid.db, and the Site’s table rules decide each request. - No secrets in the Site. Everything in your build is public to whoever can open the Site. Don’t put an API key or a token in it.
- No visitors from other companies. A person who isn’t a member of your company opens your Sites as a guest.