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

# Sales

> Closes, invoices, and orders with Contract Value and Cash Collected per contact.

The **Sales** tab is the revenue view of the CRM. Every value on this screen — closes, invoices, and orders — comes from **GoHighLevel** models. Stripe data is not used here; per-business Stripe enrichment lives separately in the [Contacts/Sales grid columns](/getting-started/integrations/connect-stripe#contacts-and-sales-ui).

## Summary cards

A row of KPI cards sits at the top of the Sales tab and summarises the selected date range. Every number is sourced from GHL:

| Card               | What it shows                                      | GHL source                                                                                                                                                                  |
| ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Total Closes**   | Number of contacts marked as closed in the period. | Contacts with a value in the GHL **Date Closed** custom field (or in a won opportunity stage, depending on Revenue Settings mode).                                          |
| **Contract Value** | Sum of Contract Value across closed contacts.      | GHL custom field configured in [Revenue Settings → Contract Value field](/getting-started/integrations/connect-crm#custom-fields), or `monetaryValue` on won opportunities. |
| **Cash Collected** | Sum of cash actually received.                     | GHL custom field configured in [Revenue Settings → Cash Collected field](/getting-started/integrations/connect-crm#custom-fields).                                          |
| **Total Invoices** | Count of GHL invoices for the period.              | GHL invoices API.                                                                                                                                                           |
| **Invoice Amount** | Sum of GHL invoice amounts.                        | GHL invoices API.                                                                                                                                                           |
| **Total Orders**   | Count of GHL orders (`ghl_orders`).                | GHL orders API — the same source used by the [Order fallback](/getting-started/integrations/connect-crm#order-fallback-applies-to-all-modes).                               |
| **Order Amount**   | Sum of GHL order amounts.                          | GHL orders API.                                                                                                                                                             |

These cards recompute when the date range or filters change.

## Three sub-tabs

The Sales table is split into three sub-tabs, all populated from GHL:

* **Closes** — GHL contacts that closed in the period.
* **Invoices** — GHL invoices for the period.
* **Orders** — GHL orders (`ghl_orders`) for the period.

Each sub-tab has its own count badge (for example, *Closes (8)*, *Invoices (0)*, *Orders (0)*).

## Closes columns

The default Closes grid surfaces:

| Column         | Description                                                              |
| -------------- | ------------------------------------------------------------------------ |
| Checkbox       | Multi-select for bulk actions.                                           |
| History        | Opens the contact event history.                                         |
| Name           | Contact name.                                                            |
| Phone Number   | Synced from GHL.                                                         |
| Email          | Synced from GHL.                                                         |
| GHL Contact ID | Native GHL ID for cross-referencing.                                     |
| Date Closed    | Date from the GHL **Date Closed** custom field (or won-stage timestamp). |
| Contract Value | Per-contact Contract Value from the mapped GHL custom field.             |
| Cash Collected | Per-contact Cash Collected from the mapped GHL custom field.             |
| UTM            | Attribution captured on the GHL contact.                                 |

Use **Columns** to add UTM Source / Medium / Campaign, Ad IDs, and other GHL custom fields.

## Invoices and Orders sub-tabs

Both sub-tabs read directly from GHL:

* **Invoices** — One row per GHL invoice (amount, status, line items, contact link).
* **Orders** — One row per GHL order from the `ghl_orders` table (amount, `orderStatus`, `paymentMode`, customer email). This is the same source used by the **Order fallback** option in [Revenue Settings](/getting-started/integrations/connect-crm#order-fallback-applies-to-all-modes).

If a sub-tab is empty, check that the corresponding GHL feature is in use (invoices created, orders captured) for the selected date range.

## Pagination and bulk

* **Per page** selector (default **50**) and **1–8 of 8** style counter at the bottom right.
* **Bulk select** with checkboxes to export selected rows or change status.

## Typical workflows

### Reconcile Cash Collected with finance

1. Set the date range to the period finance is reconciling.
2. Read the **Cash Collected** summary card.
3. Cross-check against finance's bank deposits; export the Closes sub-tab if you need a line-item breakdown.

### Audit a Contract Value spike

1. Sort the Closes sub-tab by **Contract Value** descending.
2. Use the **History icon** on the top rows to verify the deal was real (form submission, calls, payment).
3. If a row shouldn't be counted, fix the GHL custom field value in GHL and let the next sync recompute.

### Investigate missing revenue

1. Compare **Contract Value** and **Cash Collected** cards against your expectation.
2. If a closed deal is missing, open it in GHL and confirm the mapped custom fields (Contract Value, Cash Collected, Date Closed) are populated.
3. Re-run a [manual GHL sync](/getting-started/integrations/connect-crm#manual-sync) so the value picks up immediately.

## Next steps

<CardGroup cols={2}>
  <Card title="GHL Revenue Settings" icon="plug" href="/getting-started/integrations/connect-crm#custom-fields">
    Configure which GHL custom fields drive Contract Value and Cash Collected.
  </Card>

  <Card title="Lead qualification rules" icon="filter" href="/getting-started/integrations/connect-crm#lead-qualification-rules">
    Make sure only real deals count as closes.
  </Card>
</CardGroup>
