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

# Messaging

> Chat with your team, read your company's channels and keep up with SMS and email conversations with customers in the app.

Use **Messaging** to talk with your team one-to-one and in groups, follow your company's channels and keep track of your conversations with customers.

## Where to find it

In the app, tap the **Messaging** tab.

## What's on the screen

The plus icon at the top starts a new conversation. It appears only if your company lets reps start conversations.

Tabs below the title filter your conversations:

* **All**: all your conversations.
* A tab named after your company: your **Teams** and **Channels** conversations. It appears when your company has direct, group or channel messaging on.
* **SMS** and **Email**: your text and email conversations with customers.
* **Bots**: appears if your company uses bots.

<Note>
  If your company has turned off the **SMS** and **Email** tabs, the tab named after your company is called **Internal** instead, and your text and email conversations share one **External** tab. There, the plus icon opens the **New Team Conversation** sheet directly. To answer an External conversation, type your message and tap **Open in iMessage** on iOS, **Open in Messages** on Android, or **Open mail**. Your phone's app opens with the message filled in.
</Note>

Under the tabs, tap **Open** or **Archived** to switch between active and archived conversations. The **Bots** tab doesn't have this filter.

The **All** tab groups your conversations:

* Pinned conversations sit in a row at the top.
* **New Messages** lists conversations with messages you haven't read.
* **Teams** (your direct and group conversations) and **Channels** appear when you have any.
* **SMS**, **Email** and **Bots** match their tabs. **Bots** shows only under **Open**.

Each conversation shows a picture and a name, with a count of unread messages on the picture. A **DRAFT** label means you've started a message there and haven't sent it. Tap **Load more** at the end of a section to see more, and pull down on the list to refresh it.

### Swipe and long-press actions

* Swipe right on a conversation for **Mark as Read** or **Mark Unread**, and **Pin** or **Unpin**. Archived conversations and bots don't have these.
* Swipe left for **Archive** or **Unarchive**, and **Delete**. **Delete** opens a sheet where you tap **Delete Chat**. Broadcast-only channels and bots don't have these.
* Long-press a pinned conversation in the top row for **Unpin**, **Mark as Read** or **Mark as Unread**, **Delete Chat**, and **Archive** or **Unarchive**. **Delete Chat** here deletes the conversation immediately.

## Send a message

These steps are for conversations with your team. For customers, see [SMS and email conversations](#sms-and-email-conversations).

<Steps>
  <Step title="Open the conversation">
    Tap a conversation in the list. Opening it marks it as read.
  </Step>

  <Step title="Type your message">
    Type in the **Enter message** box. To mention someone in the conversation, type `@` and tap their name in the list that appears. A link you type shows a preview above the box; tap its close icon to dismiss it.
  </Step>

  <Step title="Add photos or videos">
    Tap the attachment icon to the left of the box, then pick one or more photos or videos from your photo library. They appear above the box. Tap one there to remove it.
  </Step>

  <Step title="Send it">
    Tap the send button to the right of the box.
  </Step>
</Steps>

What you type is saved as a draft, so it's still there when you come back. If an attachment fails to upload, the app asks you to remove it or upload it again before you send.

While you're in a conversation:

* Tap the name at the top to open the group's details or, in a one-to-one conversation, the person's details.
* Tap an attachment in a message to preview or download it.
* Small pictures next to a message show who has seen it: up to three, then a count of the rest. Tap them to open the **Seen By** list.
* In a group or channel, a banner above the box says whether notifications are on, with a switch to change it. Tap its close icon to hide it for that conversation.

## Start a conversation

From the app, you can start one-to-one and group conversations with your team.

<Steps>
  <Step title="Open the New Message drawer">
    On the **Messaging** screen, tap the plus icon at the top. If you don't have any conversations yet, you can tap **New Conversation** instead.
  </Step>

  <Step title="Tap the chat row">
    In the **New Message** drawer, tap the chat row, which includes your company's name.
  </Step>

  <Step title="Choose people">
    Under **Send to**, search by name, phone number or email, then tap a person. Each person you choose appears in the box; tap a name there to remove it. You can choose more than one person.
  </Step>

  <Step title="Send separately, if you want">
    With two or more people chosen, tap the arrow at the right end of the box to hide the list. Check **Send in separate conversation** and type your message under **Message Text**. **New Team Conversation** stays unavailable until you do. Each person gets their own one-to-one conversation.
  </Step>

  <Step title="Create the conversation">
    Tap **New Team Conversation**. For one person, the conversation opens. For separate conversations, the first one opens.
  </Step>

  <Step title="Name your group">
    If you chose two or more people for one conversation, you can enter a name under **Create group name (optional)**. Tap **Create Group** to open the group. Closing this sheet instead deletes the group you just created.
  </Step>
</Steps>

If a group name is already taken, the app tells you so; try another name.

## Reply to, edit, copy or delete a message

Long-press a message to open its menu:

* **Reply**: the message appears above the box. Type your reply and send it, or tap the close icon on the quoted message to cancel.
* **Edit**: for your own messages. The text moves into the box. Change it and tap the send button, or tap the red close button to cancel.
* **Delete**: for your own messages. Choose **Delete for everyone** or **Delete for me**.
* **Copy text**: copies the message's text.

In an archived conversation, the menu has only **Copy text**, plus **Delete** for your own messages. Messages in SMS and email conversations and deleted messages have no menu. In broadcast-only channels the menu has no actions. The long-press also shows a row of emojis; tap one to react to the message.

## Manage a group or channel

Open the group or channel and tap its name at the top. The details screen has these rows:

* **Change Group name** and **Change photo**. Type the new name and tap **Save**; a new name applies for everyone. In a channel the first row reads **Change channel name**, and these rows are grayed out.
* **Notifications**: turn the switch off to mute the conversation, or on to unmute it.
* **Add members**, in groups only. It opens **Add Recipients**: search, tap the people to add, then tap **Add Users**.
* **Group Members** (**Channel Members** in a channel), with the member count. Tap it to show the list and a search box. Tap a member to see their details, or tap the three-dot icon next to them for **Remove from Group** (groups only; the person is removed right away) or **Chat**, which opens a one-to-one conversation.
* **Leave Group**, or **Leave channel** in a channel. You leave immediately and go back to **Messaging**. In some channels this row is grayed out.

## SMS and email conversations

You read SMS and email conversations in the app and answer them from your phone. To answer, tap **Respond in Messages** in an SMS conversation or **Respond in Mail** in an email conversation. Your phone's messaging or mail app opens, addressed to the customer, and you write and send your reply there. If the customer's phone number or email address is missing or isn't valid, the app shows an error message instead.

## Bots

If your company uses bots, the **Bots** tab lists them. Tap a bot, then type and send a message to start a conversation. While the bot replies, the box shows **Bot is typing...** and you can't type.

## Tips

* On every tab except **All** and **Bots**, conversations with unread messages are listed first.
* An archived conversation is read-only. To reply, tap **Archived**, swipe left on the conversation and tap **Unarchive**.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="How do I pin a conversation?" id="how-do-i-pin-important-conversations-in-messaging">
    Swipe right on the conversation and tap **Pin**. Pinned conversations appear in the row at the top of the **All** tab. To unpin one, long-press it in that row and tap **Unpin**. If pinning fails, the app shows an error message.
  </Accordion>

  <Accordion title="Why can't I reply in a conversation?" id="cannot-reply-in-conversation">
    You can't send a message from the app when:

    * It's an SMS or email conversation. You answer from your phone; see [SMS and email conversations](#sms-and-email-conversations).
    * It's archived. Unarchive it first. See [Tips](#tips).
    * It's closed. The conversation shows **You can only read and can't reply to these messages.**
    * It's a broadcast-only channel. There's no message box.
    * It shows **Only admins can send messages.**
  </Accordion>

  <Accordion title="Why don't I see the plus icon?" id="no-new-conversation-button">
    Your company hasn't turned on starting conversations for reps. You can still read and reply in the conversations you're part of.
  </Accordion>
</AccordionGroup>

## Related pages

* [Mobile app](/help/mobile)
* [Getting around the app](/help/mobile/getting-around)
* [Contacts](/help/mobile/contacts)
* [Settings and troubleshooting](/help/mobile/settings)
* [Getting help](/help/getting-help)
* [Messaging in the admin](/help/admin/messages), for company admins


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