Skip to content

Reports & analytics ​

The Reports page provides Analytics and insights for your business across its report tabs, all filterable by date range and location.

Getting there ​

  • Sidebar path: Insights → Reports.
  • Permission: reports:read. If your role is scoped to specific locations, the reports show data for those locations only.

Filters and export ​

  • Location: choose a single location or All locations.
  • Date range: presets include Last 7 Days, Last 30 Days, Last 90 Days, Last Week, Last Month, Last Year, Last 12 Months, Week to Date, Month to Date, Year to Date, and All Time.
  • Export CSV: downloads the reports for the tab you're viewing.

The tabs ​

Analytics ​

The default overview of your studio's performance. Total Sales and Total Sales Over Time use the same figure as Total Revenue on the Financial tab, so they count gift card value when it is redeemed, not when the card is sold. Avg Spend / Customer and Unique Customers leave gift card purchases out the same way, so a customer whose only payment in the period was a gift card purchase is not counted. See How gift cards count toward revenue.

Financial ​

Revenue and financial breakdowns for the selected period and location.

The Failed Payments table, under Transactions, lists two kinds of failed charge, newest first:

  • A checkout, booking, point-of-sale or staff-entered payment that failed. It also appears in the Payments table with the status Failed.
  • A membership renewal that Stripe, Square or PayPal could not collect, with the type Membership renewal. Each failed attempt is its own row, so a renewal the provider retries appears once for every attempt that failed. The amount is what the provider tried to charge, the date is when it reported the failure, and the location is the member's home location.

Renewals that were already failing when the table started listing them, and had not been paid since, appear once each: dated by their most recent failure, at the plan's price rather than the amount the provider tried to charge. Their earlier failed attempts are not shown.

A failed renewal stays in the table after a later retry succeeds. The successful charge appears in the Payments table as a separate payment. A failed renewal is not a payment the member owes you, so it never appears in Payments or in the Amount Due report on the Customers tab. The CSV export has a kind column that is payment or membership_renewal.

The Gift Card Report, under Point of sale, mixes two kinds of figure:

  • Issued in period and Redeemed in period count what happened inside the date range.
  • Outstanding is the balance customers could still redeem on the last day of the range, across every gift card sold by then, including cards sold before the range started. It is your gift card liability on that date. Running a past period again later gives the same number even after later voids or reactivations. While the range is still running, it is stated as of today. Historical status changes erased before status-history recording began cannot be reconstructed; legacy cards retain their last known deactivation date.
  • Expired is unused value on cards that had expired by that date. It is kept apart from Outstanding because it can no longer be redeemed, but whether you still owe it depends on where you operate, so it is shown rather than dropped. Voided cards count toward neither.

Gift cards have no location, so the report is empty when you filter by one.

How gift cards count toward revenue ​

Revenue counts gift card value when it is redeemed, not when the card is sold. Selling a gift card collects money you still owe as future services, so it is a liability until the card is used. Counting it at sale and again at redemption would count the same value twice.

  • Total Revenue includes gift card value when it pays for a booking, membership or point-of-sale sale, in the period it is redeemed. A gift card purchase adds nothing to it.
  • Gift card sales collected shows the money taken for gift card purchases in the period, less purchases returned in the period. A period with more returned than sold shows a negative amount. Cards issued from the CRM record no payment, so they do not appear here, but their value counts toward Total Revenue when redeemed.
  • Transactions and Avg Value leave gift card purchases out.
  • Refunds includes returned gift card purchases, since it shows all money returned.
  • Gift card purchases have no location, so Gift card sales collected appears only when the report covers all locations.
  • Unused value that expires is not counted as revenue.

The same definition applies to Total Sales on the Analytics tab and to Revenue, last 30 days on the dashboard. Customer figures such as Lifetime Value on the Customers tab are based on payments: a gift card purchase counts toward the buyer's spend, and its redemption counts toward the spend of whoever redeems it, even when that is the same customer.

The Financial summary CSV export has a giftCardSalesCollected column after currency. It reads 0.00 when the export is filtered to a location.

Memberships ​

How your memberships are performing: new, active, and churned.

Activity ​

Bookings and attendance activity over time.

Customers ​

Customer-focused reporting, such as new and returning customers. This tab includes the At Risk (lapsing members) widget: customers who attended before but have not visited within your inactivity window. Each row shows the last visit, days inactive, membership status, and lifetime value (total settled payments), so you can prioritize who to reach out to. Use the widget's Export CSV to pull the full list. The inactivity window defaults to 30 days: a customer appears once their last visit is 30 to 60 days old and nothing is booked ahead. Change it under Customer settings.

You can also find the same customers from the Customers page: open Filters and set Activity to At risk (lapsing). To contact them automatically, set up a win-back automation.

Marketing ​

How your email campaigns translate into bookings and revenue. Each campaign is reported under two attribution models, side by side, so you can read its impact under either:

  • Direct: click-through attribution. The customer clicked a tracked link in the campaign email, landed on your booking widget, and the booking they made was tagged to that campaign at the moment it was booked. This is exact: the booking is credited to the campaign that brought the customer in.
  • Assisted: a softer, "last-touch" signal. The booking itself was not tagged, but the same customer had clicked a campaign link within the seven days before booking, so the campaign likely contributed. A booking can be assisted by one campaign while being directly credited to none.

For each model you see bookings (how many bookings it drove) and revenue (the settled payments behind them, free bookings count toward bookings but add no revenue). Location and date filters apply here too, so a location-scoped admin sees only their locations' attributed revenue.

You can also see a single campaign's attribution from Insights → Notifications: open a sent campaign's detail to find its direct and assisted bookings and revenue over the last 90 days.

Staff ​

The labor report: for each person and location, the hours the staff schedule planned beside the hours they worked on the time clock, the difference between the two, overtime, and labor cost. The tab appears when your role can also read timesheets (timesheets:read), because worked hours are timesheet data. If your timesheet access covers only some locations, choose one of them in the location filter to see its hours.

  • Scheduled totals the person's published shifts in the date range, as real elapsed time in your brand's timezone. A shift that runs past midnight at either end of the range counts only the part inside it.
  • Worked is time clock hours as Payroll counts them under your pay rules: punches rounded, unpaid breaks and any automatic break taken off, voided entries left out, and each hour on the day it was worked, so an overnight entry splits at midnight. Over a date range that matches a pay period, a person's rows add up to their live hours in Payroll. The report is always live: once a period is approved, Payroll shows and exports the figures as approved, which differ from the live ones if your pay rules change afterwards. Time still on the clock is counted up to now, and the table says so when it includes some.
  • Variance is worked minus scheduled. A negative figure is planned time nobody recorded; a positive one is time worked beyond the person's own shifts, which includes any role shift they covered (see below).
  • Overtime (and Double time, when your rules have any) follows your pay rules, measured over each person's whole workweeks at every location, then shown at the location where it was worked. Someone who works six hours at one studio and two more at another, with daily overtime after six, has their two overtime hours at the second.
  • Labor cost is estimated pay at each person's hourly rate in Payroll details, with overtime at 1.5 times the rate and double time at twice it. A person's rows split their live estimated pay in Payroll between their locations, so they add up to it to the cent. It shows only to roles with payroll:read (by default, only the Owner), and someone without a rate shows No rate and counts for nothing in the total.

Shifts assigned to a role rather than a person are listed apart, under Role Coverage, as the hours the role was scheduled for. They are never spread over the people who hold the role, so a past week's figures do not change when someone changes role. Whoever works a role shift records the time as their own, so it shows as worked hours on their row and raises their variance by as much. The headline Scheduled hours include role coverage, so the headline Variance compares everything worked with everything planned. A role shift that runs past midnight at the edge of the date range counts in Shifts for each range it touches, with only its hours inside each.

The report covers at most 92 days at a time. Its CSV export has one row per person or role and location, in decimal hours, with labor cost and its currency for roles that can see pay.

Tips ​

  • The tab you're on is remembered in the page address, so you can bookmark or share a specific report.
  • Export CSV exports the data behind the current tab. Switch tabs first if you want a different export.
  • For a quick daily snapshot instead of full reports, use the Dashboard.