> For the complete documentation index, see [llms.txt](https://btwb.gitbook.io/btwb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://btwb.gitbook.io/btwb/admin/gym-reporting.md).

# Gym Reporting

This article explains the Reporting page — dashboards for revenue, memberships, attendance, coaching hours, upcoming charges, birthdays, and clients who've stopped coming in.

### Overview

**Reporting → Gyms** is your business dashboard, organized in tabs. **Revenue**, **Memberships**, and **Attendance** each have a date-range picker with presets (Last 30 Days, Last Month, Last Quarter, Last Year, Month To Date, Quarter To Date, Year To Date) or a custom range. It starts at Last 30 Days and resets when you switch tabs. The other tabs have their own controls, described below, and every tab has a CSV export.

![The Revenue and Memberships reporting tabs](https://283006627-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZrefv5JliAQavbeRiIvd%2Fuploads%2Fgit-blob-95e4901246ddcc95e5aa5b64caaa079fd665cc2f%2Freporting.gif?alt=media)

***

### The Tabs

#### Revenue

Gross volume charted **Daily** or **Weekly** over the selected dates, with these totals for the range:

* **Gross Volume** — total revenue before fees, refunds, and disputes are deducted
* **Refunds** — the amount refunded and the number of refunds
* **Fees** — processing fees taken from successful payments
* **Net Volume** — Gross Volume minus Refunds and Fees
* **Taxable Sales** — sales where tax was collected, not counting the tax itself
* **Taxes Collected**
* **Successful Payments** — the number of successful payments, including ones later refunded
* **Average Payment**
* **MRR** (Monthly Recurring Revenue) — normalized monthly revenue from all active and past-due subscriptions. It doesn't change with the selected dates.

At the bottom, **Revenue By Month** lists Gross, Refunds, Fees, Taxable Sales, Taxes, Net, and Payments for each month. **Export List** downloads every month since January 2023 as a CSV, whatever dates are selected.

#### Revenue by Membership Plan

See how much revenue each of your membership plans brings in. The **Revenue by Membership Plan** table is on the **Revenue** tab, below the Gross Volume chart.

* **What's shown:** **Plan Name**, **Revenue**, and **Payments** (the number of payments), with a **Total** row at the bottom. Plans are sorted by number of payments, highest first. Archived plans still appear if they had payments in the selected dates, and **Unknown plan** groups membership payments that couldn't be matched to a plan.
* **Dates and export:** it has its own date picker with the same presets. Changing the dates here also changes the Gross Volume chart above it, and the other way around. Click **Export List** to download the table as a CSV.
* **Membership payments only.** Retail products and Late Cancel / No Show fees aren't included.
* Amounts are **after sales tax, refunds, and fees**, so the Total won't match Gross Volume or Net Volume.
* Refunded payments still count in the **Payments** column.

#### Memberships

The health of your membership base. These figures are always current and don't change with the selected dates:

* **Active / Past Due / Trials** — current paying subscriptions, paying subscriptions that are past due, and active trials
* **Set to Cancel** — active, past-due, and trial subscriptions set to cancel at the end of their current billing period
* **Churn Rate** — the share of subscriptions canceled during a rolling 30-day window
* **Avg Revenue Per Member**
* **Avg Membership Length** — for paid subscribers, in months
* **Avg Age**
* **Male** / **Female** — active, past-due, and trial subscriptions by gender

Below them, a chart of **Total Active & Past Due Members** (daily or weekly) over the selected dates, with **Avg Members**, **New Memberships**, **New Trials**, **New Clients**, and **Canceled Memberships** for the range. **Memberships By Month** lists Total Memberships Paid, New Clients, New Memberships, and Canceled Memberships; **Export List** downloads every month since January 2023.

#### Attendance

Class visits over time, charted daily or weekly, with these totals for the selected dates:

* **Total Visits**
* **Unique Clients**
* **Average Visits Per Client**
* **Average Visits Per Day**
* **Average Classes Per Day**
* **Average Class Size**

It covers your whole gym; there are no location, class type, or coach filters. **Attendance By Month** shows the same figures per month, and **Export List** downloads every month since January 2022.

#### Coaching Hours

How many classes each coach taught and for how many hours, broken down by class type (e.g. CrossFit, Mobility, Weightlifting), with totals per coach and per class type — useful for payroll.

* It counts **classes only**, based on the coaches assigned in Class Schedules. Appointments aren't included. Classes with no coach appear under **Unassigned Coach**.
* It opens on the last two full weeks (Sunday to Saturday). Pick any other range with the date picker; there are no presets.
* Gyms with more than one location can filter by location.
* **Export** downloads the report as a CSV.

#### Upcoming Charges

The next charge for every recurring membership, soonest first. It isn't limited to a date range.

* The **Today**, **Next 7 days**, and **Next 30 days** buttons show how many charges fall in each window; click one to filter the list, and click it again to clear.
* Each row shows the client, the **Plan** (a **Scheduled** badge marks a plan sold to start later), the plan's **Price**, the **Charge** that will actually be billed (after discounts), and the **Date & Time**. The row menu has **View client**.
* **Export** emails you a CSV of the list, with any of those filters applied.

#### Birthdays

Build community by recognizing member birthdays.

* Pick a month (this month or any of the next 11). The count next to it shows how many birthdays fall in that month.
* Filter by **Active** (the default, which includes past-due clients), **Inactive**, **Lead** (clients without memberships), or **All**.
* Each row shows the client's name, email, and status, their **Phone**, and their **Birthday** with the age they're turning. The row menu has **Edit Birthdate** and **View client**.
* **Export** emails you a CSV of the selected month and filter — handy for outreach campaigns.

#### Missing in Action

Active and past-due clients who haven't checked into a class recently, so you can reach out before they drift away.

* Choose the window: 7, 14 (the default), 21, 30, 60, or 90 days.
* Clients who have never checked in are listed first. Each row shows the client's phone, **Last Check-in**, **Days Ago** (30 days or more is shown in red), and status.
* **Export** downloads the list as a CSV.

***

### Notes for Admins and Coaches

* The selected tab and dates live in the page URL, so you can bookmark or share a specific view. Bookmarked dates stay fixed; they don't roll forward.
* **Upcoming Charges** and **Birthdays** exports are always **emailed** to the staff member who requested them. All other exports download directly.
* Access requires the **Reporting → Gyms** permission — safe to grant to bookkeepers or managers, but not strictly view-only: it also lets them edit client birthdates from the Birthdays tab. See [Adding Coaches & Admins](/btwb/admin/gym-setup/adding-coaches-and-admins.md).

***

### Video Walkthrough

*Watch the walkthrough of the Reporting section (recorded before Revenue by Membership Plan and Missing in Action were added):*

{% embed url="<https://www.loom.com/share/7c194dcfb8c945f0862515bfa1bc64df?sid=70547873-64bf-4ac2-b7e2-cc0dc3d5cd1c>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://btwb.gitbook.io/btwb/admin/gym-reporting.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
