> ## Documentation Index
> Fetch the complete documentation index at: https://fit4lifecare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Track and Manage Orders in the Fit4Life OS Order Board

> Create, update, and fulfill customer orders in Fit4Life OS. The order board tracks every order from request through payment, clinic hand-off, and delivery.

The Orders screen, at `/live/orders`, is the central hub for every transaction your clinic processes. Whether an order was created by a staff member or drafted automatically by the SMS bot, it shows up here. The board tracks each order through its lifecycle and feeds your revenue and KPI tiles.

## Order Statuses

Every order carries one status. The status vocabulary (defined in code) is:

| Status             | Meaning                                                                  |
| ------------------ | ------------------------------------------------------------------------ |
| `requested`        | Initiated (by staff or the bot), no invoice sent yet                     |
| `invoiced`         | An invoice/payment link has gone out, awaiting payment                   |
| `paid`             | Payment has landed, the order is now committed and counts toward revenue |
| `sent_to_clinic`   | Handed to the clinic nurse to fill                                       |
| `ready`            | Prepared and ready                                                       |
| `out_for_delivery` | Dispatched (pickup, lab ship, or Uber)                                   |
| `delivered`        | Completed                                                                |
| `cancelled`        | Voided                                                                   |

<Info>
  **"Awaiting fulfillment"** is not a stored status, it is a derived view meaning `requested` **or** `invoiced`. The dashboard triage card and the `?status=awaiting` filter both use this definition.
</Info>

<Warning>
  There is also a `pending_payment` status used only for **unpaid SMS-bot drafts**. Pending orders are kept out of the orders board, revenue, LTV, P\&L, and clinic-notify until payment commits them. A conversational "yes" to the bot can at most produce a payment link, never a committed order. They do surface in one read-only place, the **Awaiting payment** section (below), so you can see and follow up on links that have not been paid. See [How the SMS bot works](/docs/sms-bot/how-it-works).
</Warning>

## Creating a New Order

<Steps>
  <Step title="Open the new order form">
    Click **New Order** on the order board.
  </Step>

  <Step title="Select the customer">
    Search for an existing customer by name or phone. Orders must attach to an existing customer record.
  </Step>

  <Step title="Pick a product">
    Use the searchable product picker. Selecting a product auto-fills its catalog price from the menu.
  </Step>

  <Step title="Set channel, payment source, and fees">
    The **channel** records how the order was initiated (e.g. in-clinic, phone, SMS bot); **payment source** records the payment method. An optional **Uber fee** is captured for the daily-sales ledger.
  </Step>

  <Step title="Save the order">
    Order writes are atomic (header + lines in one transaction) and append an audit-log entry.
  </Step>
</Steps>

## Editing an Order

Open an order to edit its products, prices, channel, payment source, and delivery details, or to advance its status. Every change is written atomically and recorded in the activity log (Settings).

## Awaiting payment

At the top of the Orders screen, an **Awaiting payment** section lists every SMS-bot draft that has a payment link sent but not yet paid. Each row shows the customer, the items, the amount that was quoted and sent, how long ago the link went out, and a **Copy link** button so you can resend or follow up. The header shows the count and the total dollar value of outstanding links.

<Note>
  Awaiting-payment orders are **not counted in revenue, LTV, or P\&L**. A row only appears when it is backed by a real sent invoice (an actual payment link), so it always reflects a link a customer genuinely received. When the customer pays, the order leaves this section, moves into the board, and starts counting toward revenue.
</Note>

## Revenue and the payment gate

An order contributes to revenue once it reaches `paid`. Orders in `requested`/`invoiced` (and `pending_payment` drafts) are not yet counted. This keeps unearned revenue out of your P\&L by construction, financials only reflect real, paid transactions.

## Filtering by Status

Use the status filter at the top of the board, or deep-link with the `?status=` URL parameter:

| Filter                                           | URL parameter       |
| ------------------------------------------------ | ------------------- |
| Requested                                        | `?status=requested` |
| Invoiced                                         | `?status=invoiced`  |
| Awaiting fulfillment (requested **or** invoiced) | `?status=awaiting`  |

<Tip>
  Bookmark `?status=awaiting` and check it at the start and end of each clinic day, it surfaces every order that still needs an invoice or fulfillment. Unknown `?status=` values safely show the full board with no filter.
</Tip>

## SMS Bot Orders

When a customer texts the bot to reorder, the bot creates a draft order on the `sms-bot` channel. That draft stays in `pending_payment` (invisible) until the customer pays the link, at which point it commits to `paid` and the clinic is notified. You then advance it the same way as any other order.

<Note>
  Only customers with a phone number on file can be recognized by the SMS bot. A customer with no phone is unknown to the bot by design.
</Note>

## KPI Tiles

The KPI tiles reflect your **whole business** for the selected date range. Filtering the board by status does not change what the tiles show, they are a practice-wide summary, not a view of what is currently on screen.
