> ## 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.

# Home Pages

> Build the Home screen of your company's mobile app: its pages, the tabs across the top, the widgets on each tab, and who sees each page.

Use the **Home Tabs** screen to build the Home screen of your company's mobile app. Each home page has tabs across the top and widgets on each tab, and access rules decide which members see it. [Share Tabs](/help/admin/mobile/share) and [Shop Tabs](/help/admin/mobile/shop) use the same editor, and [Navigation](/help/admin/mobile/navigation) sets up the app's bottom bar. For how reps use the app, see [Mobile app](/help/mobile).

## Where to find it

In the admin sidebar, under **Mobile App**, select **Home Tabs**.

<Note>
  To open this screen and the page editor, your role needs **View only** or **Full access** for **Mobile Pages**. With **View only**, pages open in the editor without a **Save** button, and the list has no actions menu. To create, edit, duplicate, set the default or delete pages, it needs **Full access**. On the [Roles](/help/admin/settings/roles) screen, **Mobile Pages** is in the **Content & Website** card. Open the card and set access from the **Mobile Pages** area's menu, not the card's.
</Note>

## What's on the screen

**New Page** and **Advanced Search** are above the list of your company's home pages. The list always includes your default page, marked **Default**. Members who match no other active page see it.

### Pages list

* The **All**, **Active** and **Inactive** tabs filter the list by status.
* Use the search box to find a page by name.
* The sort button sorts by **Name** or **Status**.

Columns:

* **Name** and **Status** (**Active** or **Inactive**). Members only see active pages.
* **Visibility**: how many members see the page in the app now.
* **Tabs**: how many tabs the page has.
* **Country**, **Language**, **Rank** and **Member Type**: the page's access rules, with countries as flags. **All** means no rule of that kind. **Not in navigation for:** under **Member Type** means a navigation hides the Home screen from the members it names.

Click a page to open it in the editor. Each row's actions menu has **Edit**, **Duplicate**, **Set default** and **Delete**. The default page's menu has only **Edit** and **Duplicate**.

### Advanced Search

**Advanced Search** shows which home page a member sees. On **Search by User**, find an active rep by name, email or phone, and select them. On **Search by Rules**, choose a **Country** and a **Language**, and a **Rank** if you want.

### The page editor

The editor's top bar has a close button (X), the title **Mobile Home Page Editor**, a settings (gear) button, **Preview** and **Save**. Below are the **Tabs** sidebar and the widget drawer on the left, a phone preview of the selected tab in the middle, and the **Settings** panel on the right.

### Tabs

The **Tabs** sidebar has two sections:

* **Main Tabs**: the tabs across the top of the screen, left to right in the app. A page has one to eight.
* **Not Linked**: tabs that aren't across the top. Members open them from a widget. See [Link a widget to a tab](#link-a-widget-to-a-tab).

The tab you're editing has a **Selected** badge.

* To add a tab, click **+** next to a section, then **Create Tab** or **Create Embed Tab**. The new tab is named **Tab #** and a number.
* To rename a tab, hover over it, click the pencil, type up to 15 characters and press Enter.
* To reorder tabs, or move one to the other section, drag it by its handle.
* To delete a tab, hover over it, click the trash icon, then click **Delete**.

You can't move or delete the last main tab. Tab changes take effect when you save the page.

### Embed tabs

An embed tab, marked with a braces icon, shows one web page across the whole tab. When it's selected, the **Embed settings** panel replaces **Settings**: enter the page's address in **Embed URL**. It must start with `https://` or `http://`. Some sites can't be previewed in the editor, so save and check the app. To get back to the page's **Settings**, select another tab.

### Settings and access rules

With no widget selected, the right panel shows **Settings**. Close it with its X; the gear button opens it again.

* **Publish**: when it's on, the page is active. The default page has no **Publish** switch; it's always active.
* **Page Name**: required.
* **Access Rules**: pick one or more values in **Rank**, **Country**, **Language** and **Member Type**. The default page can't have access rules.

After you turn on **Publish**, or change a rule while it's on, a message names any other active home page with exactly the same access rules. Saving this page while it's published unpublishes that page.

How Fluid chooses each member's page:

* A member can see an active page if they match every kind of rule on it. Within a kind, one matching value is enough.
* A page without access rules reaches no one, unless it's the default page.
* If a member matches more than one page, a **Language** rule counts most, then **Country**, then **Rank**, then **Member Type**.
* Members who match no other active page see the default page.

### Widgets

The widget drawer, below the tabs, lists the widgets you can add, with a search box. Drag a widget into the preview. A widget that comes in more than one size shows a preview of each size. Your company's own widgets, if it has any, are listed first, under **My Widgets**.

Click a widget in the preview to open its settings, then click **Done** to go back or **Delete** to remove it. Some widgets, such as **Calendar** and **Catchup**, have no settings.

| Widget | Sizes | What it shows |
| - | - | - |
| **Split Row** | One | Two halves, each with one small widget |
| **Unordered List** | Small, Medium, Large | Items you pick, or that Fluid fills |
| **Ordered List** | Small, Medium, Large | The same, numbered |
| **Video** | One | A video, with a title and description |
| **Carousel** | Small, Medium, Large | Slides that can scroll on their own |
| **Calendar** | Small, Medium, Large | Upcoming [events](/help/admin/events) |
| **Nested Unordered List** | One | Items over a background image |
| **Custom Embed** | One | A web page in a box of the height you set |
| **Image** | Small, Large | An image that can link somewhere |
| **To-Do List** | Small, Medium, Large | The rep's to-dos |
| **Catchup** | Small, Medium, Large | The rep's [catch-ups](/help/admin/settings/catch-ups) |
| **Daily Summary** | One | A summary of the rep's day |
| **Spacer** | One | Empty space |
| **Text** | One | Formatted text that can link somewhere |
| **Recent Activity** | Small, Medium, Large | The rep's latest activity |
| **Analytics** | Small, Medium, Large | The rep's visitors, views and shares |
| **Quote** | Small, Medium, Large | A quote |
| **Alert** | One | A banner with text and an optional button |
| **MySite** | One | The rep's MySite |
| **Leaderboard** | Small, Medium, Large | Reps ranked by shares, order volume or web traffic |
| **Get Started** | Small, Medium, Large | Trainings from a category you choose |
| **Announcements** | One | Your company's [announcements](/help/admin/announcements) |
| **Quick Share** | One | One item to share, with a QR code |
| **Quick Share Links** | One | Links reps can share |
| **Quick Links** | Small, Large | Links to app screens or web addresses |
| **Subscriptions and Orders** | One | The rep's subscriptions and recent orders |

Some widgets work differently:

* **Unordered List**, **Ordered List** and **Carousel** show only **Powered By** at first. Choose **Custom** to pick the items yourself, or a listed section for Fluid to fill the widget. For a section, also choose the **Number of Items to Display**. The other settings then appear.
* In **Split Row**, each half takes the small size of **Analytics**, **Calendar**, **Catchup**, **Image**, **Recent Activity**, **To-Do List**, **Quote**, **Leaderboard** or **Get Started**.

### Preview and save

**Preview** shows a QR code to scan with an iOS device to see the page live, and **Copy Preview Link**. **Save** stays grayed out until you change something.

<Tip>
  Closing the editor doesn't save your changes. Click **Save** first.
</Tip>

## Tasks

### Create a page

<Steps>
  <Step title="Start a new page">
    Click **New Page**. Fluid creates an inactive page named after you, such as **Alex's Page #42**, and opens it in the editor. It has one main tab, **Home**, with a **MySite** widget.
  </Step>

  <Step title="Set it up">
    In **Settings**, change the **Page Name** and add access rules. Then add tabs and widgets.
  </Step>

  <Step title="Publish and save">
    Turn on **Publish** when the page is ready for members, then click **Save**.
  </Step>
</Steps>

The new page stays in the list even if you close the editor without saving.

### Link a widget to a tab

<Steps>
  <Step title="Open the item's settings">
    In the preview, click an **Image**, **Nested Unordered List**, **Unordered List**, **Ordered List** or **Carousel** widget. For a list or carousel, open the item you want to link from the widget's settings.
  </Step>

  <Step title="Choose a tab link">
    Under **Link Type** (**Button Type** for a list or carousel item), click the last icon, a smartphone. For a carousel item, turn on **Button** first. A **Nested Unordered List** shows **Link Tab** without this step.
  </Step>

  <Step title="Pick the tab">
    In **Link Tab**, choose one of the page's other tabs, including **Not Linked** ones. Below **Powered By** and the Fluid logo, you can instead choose **Products**, **Enrollments**, **Media**, **Pages**, **Uploads** or **Playlists**.
  </Step>

  <Step title="Save">
    Click **Save**.
  </Step>
</Steps>

### Duplicate, set the default or delete a page

From the page's actions menu in the list:

* **Duplicate** creates an inactive copy named after the page, with **(Copy)** added. The copy has the same tabs but no access rules.
* **Set default** opens **Set Default Page?**. Click **Confirm**. The page becomes the active default page and loses its access rules. The previous default page becomes inactive.
* **Delete** opens **Delete Page?**. Click **Delete**. You can't undo this, and you can't delete the default page.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why don't members see my page?" id="members-dont-see-page">
    Check that the page is **Active** and has at least one access rule, and that the members match every kind of rule on it. Saving another active page with exactly the same rules unpublishes this one. A member who matches several pages sees only one; see [Settings and access rules](#settings-and-access-rules).

    If the **Member Type** column shows **Not in navigation for:**, a navigation hides the Home screen from those members. See [Navigation](/help/admin/mobile/navigation).
  </Accordion>
</AccordionGroup>

## Related pages

* [Mobile App](/help/admin/mobile)
* [Navigation](/help/admin/mobile/navigation)
* [Share Tabs](/help/admin/mobile/share)
* [Shop Tabs](/help/admin/mobile/shop)
* [Mobile app](/help/mobile)
* [Roles](/help/admin/settings/roles)


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