The Bookings report is the line-by-line record of every booking your clients have made: who booked what, whether they turned up, which pass they used, and what it earned you. It replaces seven separate back-office reports with one.
New to Reports? How to use a Report covers the buttons and controls.
It helps you answer questions like:
Who booked into this class, and who actually came?
Which of my clients booked for the very first time this month?
How much did each booking earn me, and on which pass?
Which appointments were booked without payment?
How many bookings am I taking each day, and how many get cancelled?
Where are my bookings coming from: my app, my website, or a partner platform?
What this report replaces
This one report covers seven back-office reports:
Old report | Where it is now |
Bookings (group activities) | Service Type set to Group class |
Bookings (appointments) | Service Type set to Appointment |
Unpaid bookings (appointments) | Is unpaid appointment set to True |
First bookings (group activities) | Is first group class set to True |
First attendance (group activities) | Is first attended group class set to True |
First booking (appointment) | Is first appointment set to True |
Bookings per day (group activities) | Group By → Class Start, with the step on Day |
Each one is spelled out step by step in Matching your old back-office reports below.
Before you read the numbers
One row is one booking. One client, one class or appointment. A client who books ten classes is ten rows. Group classes and appointments sit in the same list, side by side, and Service Type tells them apart.
The reporting period. The date range at the top filters on when the class or appointment starts, not when the booking was made. The default is the last 6 months.
💡 Because it follows the start date, the report includes bookings for classes still to come if your range extends forward. To filter on when the booking was taken instead, use the separate Booking Date filter.
The comparison. Each KPI box compares the period you have selected against the equivalent earlier period.
Cancellations are hidden to begin with. ⚠️ Status starts on confirmed bookings only. This is the single most common reason a total here looks lower than the one you remember: most of the old reports showed cancellations in the same list. Open Filters and add the cancelled statuses to Status to bring them back.
What's always excluded. Waiting-list holds never appear. A client waiting for a spot to free up is not a booking here until the hold is converted into one.
The KPIs
KPI | What it shows |
Number of Bookings | Bookings whose class or appointment starts in the period. |
Number of Clients | How many different clients those bookings belong to. |
Total Earned Revenue | Revenue earned across those bookings, including VAT / sales tax. |
Average Earned Revenue | The same figure divided by the number of bookings. |
Columns
Column | What it shows |
Client Name | The client who made the booking. Click it to open their profile in the back office. |
Client Email | Email address of that client. |
Class Name | Name of the class booked. For an appointment this is the name of the slot. |
Class Start | Date and time the class or appointment starts. |
Service Type | Group class or Appointment. |
Status | Whether the booking is confirmed, or who cancelled it: the client, a staff member, or the class itself being cancelled. |
Earned Revenue | Revenue earned from this booking, including VAT / sales tax. It is the share of what the client paid for their pass that this booking used up. |
Earned Revenue Excl. Tax | The same figure with VAT / sales tax removed. |
Booked At | When the client made the booking. |
Class Category | The category the class belongs to. For an appointment, the group its service sits in. |
Duration Minute | How long the class or appointment lasts, in minutes. |
Teacher Name | The teacher leading it, including a substitute if one stepped in. |
Consumed Credit | Credits the booking used up. |
Pass Name | The pass the booking was taken on. |
Has Attended | True when the client attended. For appointments this reads True for every confirmed booking, including ones still to come. |
Was Refunded | True when the credits the booking used were given back to the client. |
Pass Remaining Credits | Credits left on that pass today. It belongs to the pass, so it is the same on every booking sharing it, and it is not the number that were left right after this particular booking. |
Number of Bookings With Same Pass | How many confirmed bookings have been made on the same pass. |
Aggregator Name | The partner platform the booking came through. Blank for your own bookings. |
Source | Where the booking was made: the back office, your app, your booking page, and so on. |
Venue | Where it takes place. |
Venue Address | Address of that venue. |
Cancellation Date | When the booking was cancelled. Blank for confirmed bookings. |
Appointment Service Name | The appointment service booked. Blank for group classes. |
Spot Number | The spot or bike the client was given, such as |
Is On Behalf Of Teacher | True when the appointment pass used passes its payments on to the teacher. Appointments only. |
Client Phone Number | Phone number of the client. |
Client Membership Id | Their membership number. |
Client Sign-Up Date | The date they joined you. |
Client Total Payments | Everything that client has ever paid you. It is a lifetime figure, so it repeats on every one of their bookings and must not be added up. Account-balance payments are left out. |
Client Date of Birth | Their date of birth. |
Client Gender | Their gender. |
Client City | The city on their address. |
Client Postal Code | The postal code on their address. |
Venue Billing Location | The billing location the venue belongs to. For studios billing across more than one location. |
Venue Billing Location Address | Address of that billing location. |
⚠️ Attendance means something different for appointments. For a group class, Has Attended comes from the roll call, so a class whose roll call was never completed shows everyone as not attended or attended, depending of your settings. For an appointment there is no roll call: any confirmed appointment counts as attended, including one three weeks away. Read attendance figures for the two service types separately.
⚠️ Earned revenue on a cancelled booking is not always zero. If a client cancelled late and lost the credit, the spot was paid for and the booking still carries revenue. Only a refund brings it to zero, which is what Was Refunded tells you.
💡 Earned revenue on an unlimited pass moves. For a client on a pass with no credit limit, what they paid is spread across the bookings they actually make. Every new booking re-spreads it, so revenue on their earlier bookings shifts slightly as they keep coming. Two exports taken weeks apart can differ for the same past booking. Revenue from partner platforms is not counted yet.
Filters
Filter | What it does |
Service Type | Group classes, appointments, or both. |
Status | Confirmed bookings, or cancelled ones by who cancelled. Starts on confirmed only. |
Booking Date | When the booking was taken, as opposed to when the class runs. |
Class Name | One or more classes, by name. |
Class Category | One or more categories. |
Class Venue | One or more venues. |
Earned Revenue | A range of revenue, for example everything above 20. |
Was Refunded | Bookings whose credits were given back, or ones that were not. |
Has Attended | Bookings the client attended, or ones they did not. |
Pass Name | One or more passes. |
Aggregator Name | Bookings from one or more partner platforms. |
Source | Where the booking was made. |
Client Name | One or more clients. |
Teacher Name | One or more teachers. |
Client Email | One or more clients, by email. |
Client Date Joined | Clients who joined you between two dates. Use it to look at a joining cohort. |
Is first group class | True keeps only each client's first ever group class booking. |
Is first attended group class | True keeps only the first group class each client actually attended. |
Is unpaid appointment | True keeps only appointments booked on your unpaid-booking pass. |
Is first appointment | True keeps only each client's first ever appointment. |
Service Name | One or more appointment services. |
💡 The four Is ... filters are what turn this report into the old "first booking" reports. Each one looks at the client's whole history with you, not just the period on screen, so a booking flagged as their first really is their first. Cancelled bookings are never counted as a first.
Group By
Group by | Use it to answer |
Class Start | How bookings, attendance and revenue move over time. |
Client | Who books the most, and what each client is worth. |
Booked At | When bookings come in, as opposed to when the classes run. |
Class Name | Which classes get booked. |
Class Category | Which kinds of class get booked. |
Teacher | Which teachers draw the bookings and the attendance. |
Venue | How your sites compare. |
Status | How much of your booking volume is cancellations. |
Pass Name | Which passes your bookings are being taken on. |
Service Type | Group classes against appointments. |
Grouped rows give you:
Summary column | What it measures |
Number of Bookings | Every booking in the group, whatever its status. |
Number of Clients | How many different clients they belong to. |
Number of Confirmed Bookings | Only the bookings that were not cancelled. |
Total Earned Revenue | Revenue earned across the group, including VAT / sales tax. |
Number of Cancellations | Only the bookings that were cancelled, for any reason. |
Number of Attendances | Bookings the client attended. |
Number of No-Shows | Confirmed bookings the client didn’t attend. |
Attendance Rate | Attendance share of the confirmed bookings. |
Average Earned Revenue | That revenue divided by the number of bookings. |
<aside>
⚠️ Number of Cancellations reads 0 until you widen Status. The summary counts what is in your filters, and Status starts on confirmed bookings only. Add the cancelled statuses first, otherwise the cancellation column is empty and Number of Bookings and Number of Confirmed Bookings are the same number.
Matching your old back-office reports
Bookings (group activities)
To reproduce it: set Service Type to Group class and add the three cancelled statuses (’canceled by client’, ‘canceled by session’, ‘canceled by manager’) to Status alongside the confirmed one.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Activity | Activity | Class Name |
Attendance | Attendant | Has Attended |
No show | Absentees | / (Has Attended set to False on confirmed bookings; Number of No-Shows when grouped) |
Number of bookings with the same pass | Number of bookings with the same pass | Number of Bookings With Same Pass |
Full date | Full date | Class Start |
Date and time of booking | Date and time of booking | Booked At |
Date | Date | Class Start |
Time | Hour | Class Start |
Pass | Pass | Pass Name |
Marginal value (incl. VAT / Sales Tax) | Marginal value (incl. VAT / Sales Tax) | Earned Revenue |
Marginal value (excl. VAT / Sales Tax) | Marginal value (excl. VAT / Sales Tax) | Earned Revenue Excl. Tax |
Remaining credits | Remaning credits | Pass Remaining Credits |
Status | State | Status |
Cancellation date | Cancelation date | Cancellation Date |
Refunded | Refunded | Was Refunded |
Sex | Gender | Client Gender |
Teacher | Teacher | Teacher Name |
Establishment | Establishment | Venue |
Duration (in minutes) | Duration (minutes) | Duration Minute |
Consumed credits | Consumed credit | Consumed Credit |
First name | First name | Client Name |
Last name | Name | Client Name |
Client Email | ||
Telephone | Phone | Client Phone Number |
First booking | First booking | / (now the Is first group class filter) |
Studio | Franchisee | / |
Billing group | Billing group | Venue Billing Location |
Address | Address | Venue Billing Location Address |
/ | / | Service Type |
/ | / | Class Category |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue Address |
/ | / | Appointment Service Name |
/ | / | Spot Number |
/ | / | Is On Behalf Of Teacher |
/ | / | Client Membership Id |
/ | / | Client Sign-Up Date |
/ | / | Client Total Payments |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
What's different
Date and time are now one column. The old report had a separate Date and Time columns for the class start; here Class Start carries both.
Class Name can differ from the old Activity column. The old report showed the name of the activity the class was built from. Class Name shows the class's own name where someone has changed it for that occurrence.
There is no time-of-day filter. The old report let you narrow to classes starting between, say, 18:00 and 20:00, that is not available here. If you need to filter on the hour in a spreadsheet, see Splitting date and time in Excel .
First name and Last name are merged into the single Client Name column.
First bookings (group activities)
To reproduce it: set Is first group class to True. You get one row per client, as before, because only one booking per client can be their first.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Identifier | Identifier | Client Membership Id |
First name | First name | Client Name |
Last name | Name | Client Name |
Date and time of the session |
| Class Start |
Date and time of booking | Date and time of booking | Booked At |
Activity | Activity | Class Name |
Client Email | ||
Telephone | Phone | Client Phone Number |
Sex | Gender | Client Gender |
Total payments | Total of payments | Client Total Payments |
Sign up date | Date joined | Client Sign-Up Date |
Studio | Franchisee | / |
/ | / | Service Type |
/ | / | Status |
/ | / | Earned Revenue |
/ | / | Earned Revenue Excl. Tax |
/ | / | Class Category |
/ | / | Duration Minute |
/ | / | Teacher Name |
/ | / | Consumed Credit |
/ | / | Pass Name |
/ | / | Has Attended |
/ | / | Was Refunded |
/ | / | Pass Remaining Credits |
/ | / | Number of Bookings With Same Pass |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue |
/ | / | Venue Address |
/ | / | Cancellation Date |
/ | / | Appointment Service Name |
/ | / | Spot Number |
/ | / | Is On Behalf Of Teacher |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
/ | / | Venue Billing Location |
/ | / | Venue Billing Location Address |
What's different
Archived clients now appear. The old report left them out, so expect more rows here.
Class Name may differ from the old Activity column, for the reason given under Bookings (group activities).
You now get revenue, the teacher, the venue and the pass for that first class, none of which the old report could show.
First name and Last name are merged into the single Client Name column.
First attendance (group activities)
To reproduce it: set Is first attended group class to True.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Identifier | Identifier | Client Membership Id |
Date and time of booking | Date and time of booking | Booked At |
First name | First name | Client Name |
Last name | Name | Client Name |
Date and time of the session |
| Class Start |
Activity | Activity | Class Name |
Client Email | ||
Telephone | Phone | Client Phone Number |
Sex | Gender | Client Gender |
Total payments | Total of payments | Client Total Payments |
Sign up date | Date joined | Client Sign-Up Date |
Studio | Franchisee | / |
/ | / | Service Type |
/ | / | Status |
/ | / | Earned Revenue |
/ | / | Earned Revenue Excl. Tax |
/ | / | Class Category |
/ | / | Duration Minute |
/ | / | Teacher Name |
/ | / | Consumed Credit |
/ | / | Pass Name |
/ | / | Has Attended |
/ | / | Was Refunded |
/ | / | Pass Remaining Credits |
/ | / | Number of Bookings With Same Pass |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue |
/ | / | Venue Address |
/ | / | Cancellation Date |
/ | / | Appointment Service Name |
/ | / | Spot Number |
/ | / | Is On Behalf Of Teacher |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
/ | / | Venue Billing Location |
/ | / | Venue Billing Location Address |
What's different
You now get the class, teacher, venue, pass and revenue for that first attended class.
⚠️ A missing roll call still hides a first attendance. If a class's roll call was never completed, nobody on it counts as having attended, so a client's real first visit can be recorded later than it happened. This was true of the old report too, and it is worth checking before you read the figure as a fact.
First name and Last name are merged into the single Client Name column.
Class Name can differ from the old Activity, for the same reason as in Bookings (group activities).
Bookings (appointments)
To reproduce it: set Service Type to Appointment and add the cancelled statuses to Status.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Appointment | Appointment | Appointment Service Name |
Session | Session | Class Name |
Full date | Full date | Class Start |
Date and time of booking | Date and time of booking | Booked At |
End of the session | End | / |
Date | Date | Class Start |
Time | Hour | Class Start |
Unpaid | Outstanding payment | / (now the Is unpaid appointment filter) |
Appointment pass | Appointment pass | Pass Name |
Payment paid entirely to the teacher | Payment in full to the teacher | Is On Behalf Of Teacher |
Marginal value (incl. VAT / Sales Tax) | Marginal value (incl. VAT / Sales Tax) | Earned Revenue |
Marginal value (excl. VAT / Sales Tax) | Marginal value (excl. VAT / Sales Tax) | Earned Revenue Excl. Tax |
Remaining credits | Remaning credits | Pass Remaining Credits |
Status | State | Status |
Cancellation date | Cancelation date | Cancellation Date |
Refunded | Refunded | Was Refunded |
Teacher | Teacher | Teacher Name |
Address | Address | Venue Address |
First name | First name | Client Name |
Last name | Name | Client Name |
Client Email | ||
Telephone | Phone | Client Phone Number |
Sex | Gender | Client Gender |
Studio | Franchisee | / |
Billing group | Billing group | Venue Billing Location |
Address | Address | Venue Billing Location Address |
/ | / | Service Type |
/ | / | Class Category |
/ | / | Duration Minute |
/ | / | Consumed Credit |
/ | / | Has Attended |
/ | / | Number of Bookings With Same Pass |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue |
/ | / | Spot Number |
/ | / | Client Membership Id |
/ | / | Client Sign-Up Date |
/ | / | Client Total Payments |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
What's different
You have to ask for cancellations, as above.
The two old name columns are now separate. The old Appointment is Appointment Service Name and the old Session is Class Name.
Outstanding payment is now a filter, not a column. Use Is unpaid appointment, which indicate appointments booked on your unpaid-booking pass.
Has Attended tells you nothing for appointments. It reads True for every confirmed appointment, so treat Status as the column that matters here.
Several columns are new, including Earned Revenue Excl. Tax, Source, Booked At and the full set of client columns.
End of the session has no column of its own; Class Start plus Duration Minute gives you the same information.
Three old columns collapse into Class Start: Full date, Date and Time are one date-and-time column now.
First name and Last name are merged into the single Client Name column.
Unpaid bookings (appointments)
To reproduce it: set Service Type to Appointment and Is unpaid appointment to True. Leave Status on confirmed only.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Appointment | Appointment | Appointment Service Name |
Session | Session | Class Name |
Full date | Full date | Class Start |
Date and time of booking | Date and time of booking | Booked At |
End of the session | End | / |
Date | Date | Class Start |
Time | Hour | Class Start |
Teacher | Teacher | Teacher Name |
Address | Address | Venue Address |
First name | First name | Client Name |
Last name | Name | Client Name |
Sex | Gender | Client Gender |
Client Email | ||
Telephone | Phone | Client Phone Number |
Studio | Franchisee | / |
Billing group | Billing group | Venue Billing Location |
Address | Address | Venue Billing Location Address |
/ | / | Service Type |
/ | / | Status |
/ | / | Earned Revenue |
/ | / | Earned Revenue Excl. Tax |
/ | / | Class Category |
/ | / | Duration Minute |
/ | / | Consumed Credit |
/ | / | Pass Name |
/ | / | Has Attended |
/ | / | Was Refunded |
/ | / | Pass Remaining Credits |
/ | / | Number of Bookings With Same Pass |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue |
/ | / | Cancellation Date |
/ | / | Spot Number |
/ | / | Is On Behalf Of Teacher |
/ | / | Client Membership Id |
/ | / | Client Sign-Up Date |
/ | / | Client Total Payments |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
What's different
End of the session has no column of its own; Class Start plus Duration Minute gives you the same information.
Three old columns collapse into Class Start: Full date, Date and Time are one date-and-time column now.
First name and Last name are merged into the single Client Name column.
First booking (appointment)
To reproduce it: set Is first appointment to True.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Identifier | Identifier | Client Membership Id |
First name | First name | Client Name |
Last name | Name | Client Name |
First appointment date | First appointment date | Class Start |
Date and time of booking | Date and time of booking | Booked At |
Appointment | Appointment | Appointment Service Name |
Session | Session | Class Name |
Client Email | ||
Telephone | Phone | Client Phone Number |
Sex | Gender | Client Gender |
Total payments | Total of payments | Client Total Payments |
Sign up date | Date joined | Client Sign-Up Date |
Studio | Franchisee | / |
/ | / | Service Type |
/ | / | Status |
/ | / | Earned Revenue |
/ | / | Earned Revenue Excl. Tax |
/ | / | Class Category |
/ | / | Duration Minute |
/ | / | Teacher Name |
/ | / | Consumed Credit |
/ | / | Pass Name |
/ | / | Has Attended |
/ | / | Was Refunded |
/ | / | Pass Remaining Credits |
/ | / | Number of Bookings With Same Pass |
/ | / | Aggregator Name |
/ | / | Source |
/ | / | Venue |
/ | / | Venue Address |
/ | / | Cancellation Date |
/ | / | Spot Number |
/ | / | Is On Behalf Of Teacher |
/ | / | Client Date of Birth |
/ | / | Client City |
/ | / | Client Postal Code |
/ | / | Venue Billing Location |
/ | / | Venue Billing Location Address |
What's different
The two old name columns are separate, as in Bookings (appointments): Appointment Service Name and Class Name.
You now get the teacher, the pass and the revenue on that first appointment.
First appointment date is simply the start of the appointment on the row Is first appointment keeps, so it is Class Start.
First name and Last name are merged into the single Client Name column.
Bookings per day (group activities)
To reproduce it: set Service Type to Group class, add the cancelled statuses to Status, then Group By → Class Start with the step set to Day.
Where your old columns are now. A / means the column does not exist on that side.
Name of the column in legacy reports | Name of the column in legacy Excel file export | Name of the column in the new report (and downloaded file) |
Date | Date | Class Start |
Number of bookings | Booking number | Number of Confirmed Bookings and Number of Bookings |
Number of cancellations | Cancellations | Number of Cancellations |
Attendance | Attendant | Number of Attendances |
Number of absentees | Absentees | Number of No-Shows |
Attendance rate | Attendance rate | Attendance Rate |
Studio | Franchisee | / |
/ | / | Number of Clients |
/ | / | Total Earned Revenue |
/ | / | Average Earned Revenue |
What's different
Every day with a booking now appears. The old report dropped any day on which every single booking had been cancelled, so those days and their cancellations were invisible.
Booking number is now two columns. In the old report, it counted confirmed bookings only. Number of Confirmed Bookings is the like-for-like figure; Number of Bookings counts everything in your filters, cancellations included.
Cancellations are counted completely. The old Cancellations column left out bookings cancelled because the class itself was cancelled. Add all three cancelled statuses to Status and you get the full number, which will be higher than you are used to, and correct.
You now get revenue per day, and you can step by Week, Month, Quarter or Year as well as by day.
Downloading
The download gives you exactly what you are looking at: your columns, your filters, your date range, and the summary if you are grouped. Available as Excel, CSV or PDF.
Data freshness
On Report pages, data is refreshed on an hourly basis.
Permissions
Access follows your existing back-office report permissions. Everyone who can see this report sees every venue in your company, so use the Class Venue filter or group by Venue to narrow it down to one site.
Related articles


