> ## 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 confirmation link, then sign the agent in to the Fluid CLI or give it 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 on an operation whose spec documents those params — mostly the unversioned company-v0 admin surface, plus some lists on other surfaces, versioned ones included; page every other list with cursors.
> 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 except two operations that take no credential, POST /api/company (create a company) and GET /api/agreements/{id} — 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.

# Back-office connectors

> Connect ByDesign, InfoTrax, Exigo or Pillars to Fluid, finish setup, then follow each sync, fix held or failed records and change what syncs.

A back-office connector keeps Fluid in step with your ByDesign, InfoTrax, Exigo or Pillars system. On its screen you connect the two, choose what syncs, and then follow each sync and fix the records that didn't go through.

Which tabs, cards and settings you see depends on the connector. If your connector only sends data out of Fluid, the screen says export where it would say import: for example, **Import preferences** reads **Export preferences**.

## Where to find it

In the admin sidebar, under **Droplets**, select **Marketplace**, then click your connector's card.

The connector's screen appears once its droplet is installed. Until then, the card opens the droplet's marketplace listing, where **Install** adds it. See [Droplets](/help/admin/droplets).

<Note>
  To open this screen, your role needs **View only** or **Full access** for **Droplets**. Installing the connector's droplet needs **Full access**. On the [Roles](/help/admin/settings/roles) screen, **Droplets** is in the **Tools & Messaging** card.
</Note>

## Connect your back office

A connector that isn't connected yet opens on **Credentials**. The fields depend on the connector:

* **Name for your integration**: at least 3 characters.
* **Company**: if your connector asks for it.
* **Type**: **Production**, the default, or **Sandbox**. Some connectors, such as Exigo, also ask for a **Sandbox ID** when you choose **Sandbox**.
* **API Credentials**: depending on the connector, an **API URL** (if the connector asks for it), plus either a **Username** and **Password** or an **API Token**. The eye button shows or hides what you typed.
* **Database Credentials**: if the connector also reads your back-office database, its **Data Server**, **Database**, **Username** and **Password**. The section lists the addresses to allow on your database server.

If the screen shows **Setting up your company…**, wait a few moments for the form to appear.

<Steps>
  <Step title="Open the connector">
    Open the connector's screen as described in [Where to find it](#where-to-find-it).
  </Step>

  <Step title="Fill in the connection details">
    Enter a name for the connection and the details your connector asks for. Fields marked with an asterisk are required.
  </Step>

  <Step title="Test the connection">
    Click **Test Connection**. **Testing Connection...** shows while Fluid checks your credentials. If they work, you see **Integration connected successfully!**. If not, you see **Error testing connection:** followed by the reason. Correct your details and try again.
  </Step>

  <Step title="Wait for the connection to start">
    The screen reads **Please wait while the integration is being initialized…** and checks again every few seconds. When it's ready, **Integration Connected!** appears.
  </Step>

  <Step title="Continue">
    If your connector has setup steps, **What's next?** names them. Click **Continue to Setup**. Otherwise, click **View Integration** to open the dashboard.
  </Step>
</Steps>

## Finish setup

Setup has up to two steps after **Connect**, depending on the connector: **Import Preferences** and **Data Mapping**. Click **Import Preferences** or **Data Mapping** at the top to move between setup steps.

<Steps>
  <Step title="Choose what to import">
    On **Import Preferences**, switch on the record types to sync, such as **Orders**, **Products** and **Customers**. Only the types your connector supports appear. Each card lists what it includes. Under **Sync Direction**, choose **Import**, **Bidirectional** or **Export**. Only the directions your connector supports appear.
  </Step>

  <Step title="Check your mappings">
    Click **Save & Continue**. On **Data Mapping**, use **Sections** to jump between mapping sections and check how your back office's values match Fluid's. **Export** saves your mappings as a JSON file. **Import** loads a saved file and, once you confirm with **Replace All**, deletes every existing mapping and replaces it with the file's. This can't be undone.
  </Step>

  <Step title="Complete setup">
    Click **Complete Setup**. Fluid saves your choices and opens the connector's dashboard.
  </Step>
</Steps>

## The dashboard

The header shows the connector's name and the direction data flows (point at it for details). If a banner says **Setup hasn't finished — this integration isn't syncing yet.**, click **Retry setup**. If the banner doesn't clear, check your credentials.

The tabs, in screen order, if your connector uses them:

* **Overview**: sync health for the range you pick, the **Needs attention** card and the activity log. See [Check sync health](#check-sync-health).
* **Reconciliation**: compares Fluid with your back office by external ID. Each record type shows **In Fluid**, the count in your back office and the **Difference**. **Check now** refreshes the counts; it doesn't sync or repair records. When a record type has differences, **View records** lists the affected records, and you can download them as a CSV file.
* **Import preferences**: what syncs and in which direction. See [Change what syncs](#change-what-syncs).
* **Data Mapping**: how your back office's values match Fluid's, grouped by record type, such as Customers, Products and Orders, with a **Search mappings…** box. A group can also have a settings card for that record type.
* **Rules**: the rules your connector offers, such as what happens to **Duplicate records** (customers and orders), **Refund orders** and **Products without a warehouse**. Each rule marks its recommended option, and your pick saves as soon as you make it.
* **Settings**: **Edit credentials**, plus any settings your connector supports, such as **Bundle export** for Exigo, which sets how product bundles are written to Exigo orders.
* **Reports**: CSV exports of your sync activity.

## Check sync health

On **Overview**:

* Pick **24h**, **7d** or **30d**. The counts, the chart and the activity log follow the range. The log shows 10 rows a page; use **Next** and **Previous** to move through the most recent events.
* Cards show how many of each record type synced. Click one to filter the activity log to it.
* **Needs attention** has a tile for each kind of problem: **Held** (waiting on a mapping), **Failed**, **Skipped** (filtered by a rule) and **Quarantined** (held for review after repeated failures). When there's nothing to fix, it reads **All clear**.
* The activity log opens on **Needs attention**; **All** adds successful syncs. **Trends** groups errors that repeat, and **Inbox** groups failed, held and skipped syncs by category. In both, expand a group and click **view all** to list its records.
* To find a record, type at least two characters in **Search…** and press Enter. The search covers all time. Press Esc to clear it.
* Click a row to see its details: its Fluid and external IDs, its retries, and the error, missing mapping or rule behind it. In the row's three-dot menu, **Open record in Fluid** opens the record in the admin in a new tab. If the record has no admin link yet, you see **Not linkable yet**.

## Fix a held record

A record is held when one of its values has no mapping. Fixing it needs the **Data Mapping** tab, so it's available only if your connector shows it.

<Steps>
  <Step title="Open Fix mappings">
    On **Overview**, in **Needs attention**, click **Fix mappings** on the **Held** tile. The **Fix mappings** panel lists each unmapped value, how many events it's holding, and a suggestion when there is one.
  </Step>

  <Step title="Open the mapping">
    Click **Open mapping**. The **Data Mapping** tab opens at that mapping.
  </Step>

  <Step title="Choose the match">
    Set the value's match in that section. In most sections, you choose it from the value's row menu or click the value after **Suggested:**. The change saves right away.
  </Step>

  <Step title="Replay the held records">
    In the activity log, click the filter button and check **Held**. Check the rows and click **Replay**. You see **Replay started**.
  </Step>
</Steps>

## Retry a failed record

<Steps>
  <Step title="Find the failed records">
    On **Overview**, in the activity log, click the filter button and check **Errors**. Click a row to see the error.
  </Step>

  <Step title="Replay them">
    Click the **Replay sync** button on the row, or check several rows and click **Replay**. You see **Replay started**.
  </Step>
</Steps>

## Review quarantined records

Records go to quarantine after their retries run out.

<Steps>
  <Step title="Open the quarantine queue">
    On **Overview**, in **Needs attention**, click **Review** on the **Quarantined** tile. The queue lists the first eight records; handle them and reopen it to see the rest.
  </Step>

  <Step title="Retry or exclude each record">
    Click **Retry now** to queue the record again. To stop a record from ever syncing, click **Exclude**, enter a **Reason** and click **Confirm exclusion**. Right after you confirm, the dialog changes and offers **Unexclude** to undo it. After you close the dialog, the record no longer appears in the queue.
  </Step>
</Steps>

## Change what syncs

On **Import preferences**:

* **Sync direction**: import from your back office, **Bidirectional** or export to it, as your connector supports.
* A switch for each record type your connector supports, such as **Orders**, **Products** and **Customers**.
* For Exigo, **Points** syncs Fluid Points with Exigo point accounts. Set up the accounts on **Data Mapping**.

Each change saves as soon as you make it. If **These settings are saved, but nothing is importing yet** appears, the connection isn't live yet. If **Sync is paused — the source changed underneath it** appears, importing has stopped. If either message stays:

<Info>
  Email Fluid support at [help@fluid.app](mailto:help@fluid.app). The [Getting help](/help/getting-help) page lists what to include in your request.
</Info>

## Update credentials

<Steps>
  <Step title="Open Edit Credentials">
    On **Settings**, click **Edit credentials**. The dialog opens with your saved details; sensitive values can appear masked.
  </Step>

  <Step title="Change the details">
    Change what you need. Fields marked with an asterisk are required, including **Sandbox ID** if you use a sandbox. **Name for your integration** can't be changed here.
  </Step>

  <Step title="Save">
    Click **Update Credentials**. You see **Credentials updated**. If the save fails, you see **Failed to update credentials** with the reason.
  </Step>
</Steps>

## Download a sync report

<Steps>
  <Step title="Set the range">
    On **Reports**, under **Generate sync activity report**, pick a **Start date** and **End date**. They start at the last 7 days. Choose an **Entity type**, or leave **All entity types**.
  </Step>

  <Step title="Generate the report">
    Leave **Hide system-skipped and waiting rows (recommended)** checked unless you need those rows, then click **Generate report**.
  </Step>

  <Step title="Download it">
    Under **Your reports**, the report shows **Preparing…** while it builds. When it's ready, click **Download CSV**. If a report fails, **Failed** appears instead; generate it again. Reports are kept for a limited time.
  </Step>
</Steps>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why don't I see a tab or setting described here?" id="missing-tab-or-setting">
    Each connector's configuration decides which tabs, cards and settings appear, and some settings exist for only one back office. A tab your connector doesn't use isn't shown.
  </Accordion>

  <Accordion title="The setup steps didn't come back. How do I finish setup?" id="finish-setup-later">
    Setup steps show once, right after you connect. If you leave before you complete them, the connector opens on the dashboard next time. Make the same choices on the **Import preferences** and **Data Mapping** tabs.
  </Accordion>
</AccordionGroup>

## Related pages

* [Droplets](/help/admin/droplets)
* [Droplets (developer overview)](/concepts/droplets)
* [Roles](/help/admin/settings/roles)
* [Connect ByDesign to Fluid](/setup/connect-bydesign)
* [Connect Exigo to Fluid](/setup/connect-exigo)
* [Connect InfoTrax to Fluid](/setup/connect-infotrax)
* [Connect Pillars to Fluid](/setup/connect-pillars)


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