Reports let you build custom data exports across report types for customers, events, transactions, purchases, payments, promo codes, custom fields, project tickets, time tracking, resources, staff, waivers, checklist runs, and checklist steps. Each report is a saved configuration (type + selected fields + optional date range + access rules) that you can run repeatedly to get fresh data. Running a report opens a table view with filters, pagination, and CSV download.
Getting started
Navigate to Reporting and analytics > Reports from the sidebar.
How it works
Reports has three pages:
- Reports list — every saved report with its type, date range, creator, and last-run info. Actions: Run, Edit, Delete
- New report — create a report by picking a type, selecting fields, setting an optional date range, and choosing who can view and edit
- Generated report (
/reports/run?id=) — the results view, with per-field filter popovers, per-page controls, refresh, and CSV download
Reports are run on demand. The list shows the last-generated-by user and timestamp so teammates know how fresh the data is.
Every report can run in one of two modes. A plain report lists one row per record. A summary report collapses those records into one line per group, with a record count and totals for each money or number field you selected, so "revenue by month for the last 365 days" comes back as a short 12-row table instead of hundreds of rows. You set the mode when building the report and can flip between Detail and Summary on the run page at any time.
Step-by-step guide
Create a report
- Open Reporting and analytics > Reports
- Click Create custom report
- On the New report page, enter a Name and optional Description
- Select a Report type from the radio list on the right (see the Reference section below for what each type covers)
- In the Fields list (to the right of the type), check the boxes for the columns you want
- Drag fields to set the column order in the output
- (Optional) In the Report mode section, switch to a summary report (see the next section)
- (Optional) Set a date range
- (Optional) Configure access
- Click Create
The report appears on the list and can be run immediately.
Build a summary report
A summary report groups records by one field and shows a count plus totals instead of raw rows.
- In the report editor, find the Report mode section and set it to Summary report (the default is Plain report). A hint describes what the summary will collapse for this report type
- Check the Fields you want on the right, including the money or number fields you want totaled and the field you want to group by (only checked fields can be grouped)
- In Group results by, pick the field to group on. You can't save a summary report without a valid group field
- If the group field is a date, a Group dates by dropdown appears. Pick a period: Day, Week, Month, Quarter, or Year
- Click Create (or Save)
When run, the report shows one row per group value, a record count, and a total for each selected money or number field. Amounts use your company group's currency settings, and day and week groups use your date format. Grouping is single level (you can't group by month and then by event within the month), and summaries show counts and totals only, not averages.
Set a date range
- In the editor, toggle Show results for a given date range
- Pick a time period from the dropdown (17 options; see Time range options in the Reference section below)
- If you choose Custom range, set Start date and End date using the date pickers
- Save the report
The info icon next to the date-range toggle shows which field the range filters by for the selected report type.
Configure access
- Accessible to everyone is on by default. Leave it on to let anyone with global report permissions use this report
- Turn it off to restrict access. Add users to Viewers (can run, not edit) and/or Editors (can run and edit)
- Save the report
Run a report
- On the reports list, open the three-dot menu on the report
- Select Run report
- The generated-report page opens with your results in a table
- Use the filter popovers above the table to narrow the data (each field has its own popover; enter a value and click Update)
- Use the per-page selector to adjust pagination
- Click the refresh icon to re-query with current filters
- Click the download icon to export the current filter result as CSV
Tip: Filters on the generated-report page are applied client-side or via re-query (depending on the field). The CSV download reflects only the rows matching the active filters.
You can also sort the table by clicking a column header; a caret shows the sort direction. Sorting happens on the server, so it orders every page of results, not just the page on screen. Sorting, pagination, and CSV export all work in both the detail and summary views.
If the report has a saved filtered view (see below), those filters are applied automatically before the first results load, so the report opens already narrowed for everyone it's shared with.
Switch between detail and summary
Any report can be viewed either way on the run page, regardless of how it was saved.
- Run the report. Under the filters, a View switch offers Detail and Summary
- Pick Summary to collapse the rows into groups. Controls appear showing what the report is grouped by, and for a date group, per which period (Day, Week, Month, Quarter, or Year). Change either to regroup on the spot
- Pick Detail to drill back into the individual rows
Flipping the View switch or changing the grouping on the run page doesn't change the saved report; a report saved as a summary just opens on the Summary view by default. All filters apply in both views.
Save a filtered view onto a report
A report template can remember a set of filters, so it opens pre-filtered for everyone, every time. The classic use case: a Transactions report saved with a due-amount filter becomes a standing "outstanding balances" report.
- Run the report and set the filters you want (for example, filter to transactions with a balance due)
- If you have edit access and your current filters differ from what's saved, a Save filtered view chip appears at the end of the filter chip row
- Click it. Your current filters are saved onto the template
- From now on, anyone who opens the report sees the first results already matching the saved view
Filter changes you make mid-run are temporary; they never touch the saved view unless you click Save filtered view again. To remove a preset entirely, clear all filters and save. The report goes back to showing everything.
Date ranges are deliberately not part of a saved view; the report's own date range setting (on the editor) continues to govern dates.
- On the generated-report page, apply any filters you want
- Click the download icon (cloud with down-arrow)
- A progress bar appears showing download progress. Click Cancel download to abort
- The CSV file downloads to your device
The download action requires the download_data permission. Without it, the icon is hidden.
Edit a report
- On the reports list, open the three-dot menu
- Select Edit report
- Update any field, date range, or access setting
- Click Save
Delete a report
- On the reports list, open the three-dot menu
- Select Delete report
- Confirm in the dialog
Deletion is permanent; you can't recover a deleted report.
Reference
Reports list columns
| Column | What it shows |
|---|---|
| Name | Report name with description underneath. Reports with a saved filtered view also show a Filtered: line listing the names of the saved filters, so you can tell a report is narrowed before opening it |
| Type | Badge with the report type (Customers, Events, Transactions, Purchases, Payments, Promo codes, Custom fields, Resources, Staff, Waivers, Checklist runs, Checklist steps). Summary reports also carry a Summary badge |
| Date range | "All time", a named range (e.g., "Last 7 days"), or "from-to" dates for a custom range |
| Created by | Creator's name and the creation date/time |
| Last generated by | Who last ran the report and when. Shows "-" if never run |
| Actions | Three-dot menu with Run / Edit / Delete |
The reports list has a filter bar with a Name search (matches name and description), a Type filter, and a Mode filter (Plain or Summary). You can save and reopen filter combinations as bookmarked views, the same saved-views system used on the transactions and payments pages (see Saved views).
Three-dot actions
| Action | Shown when |
|---|---|
| Run report | Always. Opens the generated-report view |
| Edit report | Viewer has write permission on the report (can_write !== 0) |
| Delete report | Viewer has write permission. Confirms before deleting |
Report types
| Report type | What it covers |
|---|---|
| Customers | Customer profiles with contact info, addresses, preferences, credit balance, and experience level. Returns the customers who have visited the report's group, plus customers with no recorded visit anywhere yet |
| Events | Completed event sessions with times, event host, experience level, interactions, breakages, and notes |
| Transactions | All transactions with amounts (subtotal, tax, fee, discount, paid, due, refunded, total), status, customer, tips, promo codes, and source |
| Purchases | Individual purchase line items within transactions (tickets, merchandise, gift cards, and add-ons) |
| Payments | Individual payments with method, card info, gateway transaction id, amount, refund amount, and who collected the payment |
| Promo codes | Promo codes with value, redemption type, usage count, combinability, and attached events |
| Custom fields | Customer responses to custom fields from any source (booking site, internal booking, or waiver), with field name, type, response, response time, source, waiver id, and customer info |
| Resources | One row per resource availability slot (a staff member, room, or piece of equipment, scoped to a single window). Includes available, booked, and idle hours plus utilization %, so you can see how much of your paid availability is actually earning |
| Staff | One row per staff member per event they were involved in, with how they were involved and the tips assigned to them. Use it for payroll and tip reconciliation and to see who ran what. Only real customer events (booked, checked in, or completed) produce rows; empty, phone-only, autoblocked, and cancelled slots never appear |
| Waivers | One row per signed waiver record, adults and minors alike, with contact details, birthday, a minor flag, the guardian's name and contact details for minors, the event and booking details, waiver type (booked or walk-in), signed date, signature status, referral source, experience level, location, and consent flags. Use it for bulk waiver exports and age checks |
| Checklist runs | One row per checklist run with who ran it, when, how long it took, steps done, percent complete, issues, notes, photos, tickets, review status, and tags. Use it to compare hosts and spot incomplete or slow runs |
| Checklist steps | One row per step of a run, carrying the run's details, with the step's outcome, who did it and when, the recorded answer, note, issue, photo count, ticket, and tags. Use it to see which steps get flagged and to read typed answers over time |
Fields by report type
Field names appear in the editor with underscores replaced by spaces and the first letter capitalized (for example, the stored customer_phone field shows as "Customer phone" in the UI).
Customers (19 fields)
| Field | Description |
|---|---|
| First name | Customer's first name |
| Last name | Customer's last name |
| Primary email address | |
| Phone | Primary phone number |
| Birthday | Date of birth |
| Address line 1 | Street address, line 1 |
| Address line 2 | Apartment, suite, or unit |
| City | City |
| State | State or province |
| Zip | ZIP or postal code |
| Country | Country |
| Date joined | Date the customer first interacted with your company |
| Date last visited | Date of the customer's most recent visit |
| Referral source | How the customer heard about you (captured on waivers or booking forms) |
| Customer credit | Current store-credit balance on the customer's account |
| Opted out of receiving emails | Whether the customer has opted out of marketing emails |
| Opted out of posting photos | Whether the customer has opted out of public photo sharing |
| Player experience level | Experience tier recorded on the customer's waiver or during check-in |
| Tags | The customer's tags, listed together alphabetically with duplicates removed (e.g., "repeat group, VIP"). Combines tags from every group in your account. Customers without tags show "-". A matching Tag filter appears under More filters whenever the field is selected; it uses partial match, like the Tax names filter. Included in the CSV export |
Events (13 fields)
| Field | Description |
|---|---|
| Event name | The event the session was for |
| Group name | The company group the event belongs to |
| Start time | Scheduled start time of the session |
| End time | Scheduled end time of the session |
| Booking date | Date of the underlying booking |
| Booking time | Time of the underlying booking |
| Event host | Staff member who hosted the session |
| Completed | Whether the session was marked complete |
| Team experience level | Experience level assigned to the team for this session |
| Pre-event notes | Notes recorded by the host before the session started |
| Post-event notes | Notes recorded by the host after the session finished |
| Number of interactions | Count of interactions (hints, clues) given during the session |
| Number of breakages | Count of equipment breakages or issues logged during the session |
Transactions (33 fields)
| Field | Description |
|---|---|
| Transaction id | Order number for the transaction |
| Transaction date | Date the transaction was created |
| Source | Where the transaction originated (public booking site, internal booking, etc.) |
| Medium | The marketing channel from the link the customer used (for example Cpc, Email or Social). Blank when the link had none. A matching Medium filter appears under More filters whenever the field is selected; it uses partial match and treats underscores as spaces |
| Campaign | The campaign name from the link the customer used (for example Spring sale). A matching Campaign filter appears whenever the field is selected; typing "spring sale" also finds spring_sale |
| Referrer | The website the customer came from, shown as the site name only (for example facebook.com). Blank when no referring site was recorded. The Referrer filter matches the full address, so you can search for part of a page path too |
| Traffic attribution | Source, medium and campaign combined into one label, such as "Facebook / Cpc / Spring sale", the same label the traffic attribution breakdown uses on dashboards. Untagged booking-site orders show "Booking site", staff-created orders show "Internal", and orders with nothing recorded show "Untracked". Group a summary report by this field to compare campaigns side by side. A matching Traffic attribution filter appears whenever the field is selected |
| Customer first name | Customer's first name |
| Customer last name | Customer's last name |
| Customer email | Customer's email |
| Customer phone | Customer's phone number |
| Customer address | Street address from the customer's profile for your company (address line 1 and line 2 together). Blank when the customer has no address on file. A matching Customer address filter appears under More filters whenever the field is selected; it uses partial match. Included in the CSV export |
| Customer city | City from the customer's profile. A matching Customer city filter appears under More filters whenever the field is selected |
| Customer state | State or province from the customer's profile. A matching Customer state filter appears under More filters whenever the field is selected |
| Customer zip | ZIP or postal code from the customer's profile. A matching Customer zip filter appears under More filters whenever the field is selected |
| Customer country | Country from the customer's profile. No filter |
| Group name | Company group the transaction belongs to |
| Price | Pre-tax subtotal |
| Tax | Total tax collected |
| Tax names | Names of every tax applied to the transaction, listed together (e.g., "TPS/GST, TVQ/QST"). Gift card rows show "-" because gift cards aren't taxed. Both order-wide taxes and taxes tied to a specific event or item are included. Existing transactions populate immediately — no reprocessing. A matching Tax names filter on the generated report uses partial match (same behavior as the promo code and transaction notes filters). Included in the CSV export |
| Fee | Total fees collected |
| Discount | Total discount applied |
| Paid | Amount paid toward the transaction |
| Due | Amount still outstanding |
| Refunded | Amount refunded |
| Total | Final total (price + tax + fee − discount) |
| Status | Transaction status (paid, partial, refunded, voided, etc.) |
| Tips | Total tips collected on this transaction |
| Tip date | Date the tip was recorded |
| Tip assignees | Staff members the tip was assigned to |
| Promo codes | Promo codes applied to the transaction |
| Purchases in transaction | Summary of the items (tickets, merchandise, gift cards) on the transaction |
| Transaction notes | Internal notes recorded on the transaction |
Purchases (32 fields)
| Field | Description |
|---|---|
| Transaction id | Parent transaction's order number |
| Purchase name | Item or ticket name |
| Purchase type | Type of purchase (booking, gift card, merchandise, add-on) |
| Purchase time | Time the purchase was made |
| Booking date | Date of the associated booking (when the purchase is tied to a booking) |
| Booking time | Time of the associated booking (when applicable) |
| Quantity | Number of units on this line |
| Price | Line price |
| Customer first name | Customer's first name |
| Customer last name | Customer's last name |
| Customer email | Customer's email |
| Customer phone | Customer's phone number |
| Customer address | Street address from the customer's profile for your company (address line 1 and line 2 together). Blank when the customer has no address on file. A matching Customer address filter appears under More filters whenever the field is selected; it uses partial match. Included in the CSV export |
| Customer city | City from the customer's profile. A matching Customer city filter appears under More filters whenever the field is selected |
| Customer state | State or province from the customer's profile. A matching Customer state filter appears under More filters whenever the field is selected |
| Customer zip | ZIP or postal code from the customer's profile. A matching Customer zip filter appears under More filters whenever the field is selected |
| Customer country | Country from the customer's profile. No filter |
| Group name | Company group the purchase belongs to |
| Source | Where the purchase originated (public booking site, internal booking, etc.) |
| Medium | The marketing channel from the link the customer used for the parent transaction (for example Cpc, Email or Social). Blank when the link had none. A matching Medium filter appears under More filters whenever the field is selected; it uses partial match and treats underscores as spaces |
| Campaign | The campaign name from the link the customer used (for example Spring sale). A matching Campaign filter appears whenever the field is selected; typing "spring sale" also finds spring_sale |
| Referrer | The website the customer came from, shown as the site name only (for example facebook.com). Blank when no referring site was recorded. The Referrer filter matches the full address, so you can search for part of a page path too |
| Traffic attribution | Source, medium and campaign combined into one label, such as "Facebook / Cpc / Spring sale", the same label the traffic attribution breakdown uses on dashboards. Untagged booking-site orders show "Booking site", staff-created orders show "Internal", and orders with nothing recorded show "Untracked". Group a summary report by this field to compare campaigns side by side. A matching Traffic attribution filter appears whenever the field is selected |
| Tax | Tax on this line |
| Tax names | Names of every tax applied to this line, listed together (e.g., "TPS/GST, TVQ/QST"). Gift card lines show "-" because gift cards aren't taxed. A matching Tax names filter on the generated report uses partial match. Included in the CSV export |
| Fee | Fee on this line |
| Discount | Discount on this line |
| Promo codes | Promo codes affecting this line |
| Tips | Tips assigned to this line |
| Tip assignees | Staff receiving tips on this line |
| Status | Line-item status |
| Transaction has due amount | Whether the parent transaction still has an outstanding balance |
Payments (21 fields)
| Field | Description |
|---|---|
| Transaction id | The transaction the payment applies to |
| First name | Cardholder first name (or payer name for non-card methods) |
| Last name | Cardholder last name |
| Customer email | Email address of the customer on the linked transaction. Also available as a filter under More filters on the generated report |
| Customer phone | Phone number of the customer on the linked transaction. Also available as a filter under More filters on the generated report |
| Customer address | Street address of the customer on the linked transaction, from their profile for your company (address line 1 and line 2 together). Blank when the customer has no address on file. A matching Customer address filter appears under More filters whenever the field is selected; it uses partial match. Included in the CSV export |
| Customer city | City from the linked customer's profile. A matching Customer city filter appears under More filters whenever the field is selected |
| Customer state | State or province from the linked customer's profile. A matching Customer state filter appears under More filters whenever the field is selected |
| Customer zip | ZIP or postal code from the linked customer's profile. A matching Customer zip filter appears under More filters whenever the field is selected |
| Customer country | Country from the linked customer's profile. No filter |
| Payment method | How the payment was made (card, cash, check, external) |
| Card type | Card brand (Visa, Mastercard, Amex, etc.) when applicable |
| Last four | Last four digits of the card |
| Expiry | Card expiration date |
| Purchase time | When the payment was recorded |
| Paid | Amount paid in this payment |
| Refunded | Amount refunded from this payment |
| Payment gateway transaction id | Gateway-side reference (for card payments) |
| Payment collected by | Staff member who recorded the payment |
| Group name | Company group the payment belongs to |
| Purchases in transaction | Summary of items on the parent transaction |
On the generated Payments report, the default filter chips shown up front are now First name, Last name, Payment method, Card type, and Collected by — the most common filters for finding a specific payment. Customer email and Customer phone are available under More filters but aren't default chips.
Promo codes (12 fields)
| Field | Description |
|---|---|
| Promo code name | The internal name for the code |
| Description | What the code does |
| Value type | Percentage or fixed amount |
| Value amount | Discount amount (percentage or currency) |
| Quantity | Maximum number of uses (when limited) |
| Number of times used | Current redemption count |
| Redemption type | Redemption rules (per-customer, per-booking, global, etc.) |
| Can be combined | Whether the code stacks with other promo codes |
| Internal only | Whether the code is restricted to staff-created bookings |
| Applicable to miscellaneous items | Whether the code applies to non-event items (merchandise, add-ons) |
| Events | Events the code applies to |
| Group name | Company group the code belongs to |
Custom fields (12 fields)
| Field | Description |
|---|---|
| Custom field | The field label from your custom fields library |
| Custom field type | Checkbox, Input field, or Dropdown |
| Response | The customer's answer |
| Response time | When the response was submitted |
| Source | Where the answer came from: waiver, transaction (booking-site cart), or internal_booking |
| Waiver id | For waiver-source answers, the id of the waiver the response was attached to. Lets you trace an answer back to a specific signed waiver. Empty for transaction and internal_booking rows |
| Transaction id | For transaction-source answers, the transaction the response is associated with. Shows "-" for waiver-source rows in both the on-screen table and the CSV export |
| Customer first name | Customer's first name |
| Customer last name | Customer's last name |
| Customer email | Customer's email |
| Customer phone | Customer's phone number |
| Group name | Company group the response belongs to |
Resources (13 fields)
| Field | Description |
|---|---|
| Resource name | The staff member, room, or equipment name |
| Resource group | The company group the resource lives in |
| Resource type | Staff or Resource (room, equipment, etc.) |
| Category | Resource category from your resource categories library |
| Capacity | How many concurrent bookings the resource can handle (1 for staff; can be higher for rooms or equipment) |
| Availability start date | Start date of this availability slot |
| Availability end date | End date of this availability slot |
| Availability start time | Daily start time of the window |
| Availability end time | Daily end time of the window. Overnight windows (e.g., 7pm–1am) are supported |
| Available hours | Length of the daily window × number of days covered, trimmed to the report's date range. The denominator of utilization |
| Booked hours | Total time of bookings actually assigned to the resource (including pre- and post-event buffer time). Only confirmed and completed bookings are counted |
| Idle hours | Available − Booked |
| Utilization | Booked ÷ Available, shown as a percentage |
| Bookings assigned | Count of bookings assigned to the resource within the date range |
A totals row at the bottom of the generated report sums Available, Booked, and Idle hours and computes utilization as the summed booked over the summed available — so larger and smaller resources are weighted fairly.
Staff (11 fields)
One row per staff member per event they were involved in.
| Field | Description |
|---|---|
| Staff name | The staff member's name |
| Staff email | The staff member's email |
| Staff nickname | The staff member's nickname, if set |
| Staff role | The staff member's role |
| Event name | The event they were involved in |
| Event date | The date of the event |
| Event time | The start time of the event |
| Group | The company group the event belongs to |
| Order number | The order number of the event's transaction |
| Involvement | How the staff member was connected to the event (see below). Combines when more than one applies, e.g. "Assigned, hosted" |
| Tips collected | The tips assigned to that staff member on the event's order, in your company group's currency |
Involvement values:
| Value | Meaning |
|---|---|
| Assigned | Directly assigned to the event |
| Hosted | Ran the event as the host |
| Via resource | Covered the event through a resource they're attached to |
| Received tip | A tip on the event's order was assigned to them, even if they weren't staffed on it |
Someone who was both assigned and hosted the same event shows as one row (e.g. "Assigned, hosted"), not two. Tips are attributed exactly: a tip counts for a staff member only when it was assigned to that person directly, and tips are never split or estimated across staff.
Waivers (26 fields)
One row per signed waiver record. An adult and each minor they signed for are separate rows.
| Field | Description |
|---|---|
| First name | The signer's first name as written on the waiver |
| Last name | The signer's last name as written on the waiver |
| The signer's email. Minor records have no email | |
| Phone | The phone number captured on the waiver |
| Birthday | The signer's birthday as entered on the waiver. Each row shows its own birthday, so an adult's row shows the adult's and a minor's row shows the minor's |
| Is minor | Yes when the record is a minor signed for by an adult, otherwise No |
| Guardian name | For a minor record, the adult who signed for them. Blank on adult rows |
| Guardian email | For a minor record, the email the guardian signed in with. Blank on adult rows |
| Guardian phone | For a minor record, the guardian's phone. Uses the phone the guardian entered on their own waiver for that visit, then the phone on their customer profile, then the phone on their saved record. Blank on adult rows |
| Event name | The event the waiver was signed for. Blank on walk-in waivers |
| Event date | The date of the booked event |
| Event time | The start time of the booked event |
| Group | The company group the waiver belongs to |
| Waiver type | Booked when the waiver is tied to an event, Walk-in when it was signed through the generic waiver with no reservation |
| Signed date | The date and time the waiver was signed, in the group's timezone |
| Signature on file | Yes when a signature image was captured. Minor records show No because the adult signs on their behalf |
| Referral source | The "how did you hear about us" answer, when the waiver asks for it |
| Player experience level | The experience level answer, when the waiver asks for it |
| City | The city captured on the waiver |
| State | The state captured on the waiver |
| Zip | The zip or postal code captured on the waiver |
| Photo opt out | Yes when the signer opted out of photos |
| Email opt out | Yes when the signer opted out of emails |
| Not participating | Yes when the guardian signed but is not joining the activity |
| Order number | The order number of the booking the waiver is attached to |
| Created internally | Yes when a staff member created the waiver record from the console rather than the customer signing it |
Every Waivers column has a matching filter on the run page, shown only while that column is on the report: text search on the name, contact, guardian contact, and location columns, a date range on Birthday and Signed date, multiselect on Event and Group, a Booked or Walk-in choice on Waiver type, and Yes or No choices on Is minor, Signature on file, Photo opt out, Email opt out, Not participating, and Created internally.
Checklist runs (25 fields)
One row per checklist run, with everything recorded on the run rolled up. Use it to see how hosts perform on resets, opening, and closing without opening each run.
| Field | Description |
|---|---|
| Checklist name | The checklist that was run. Archived checklists still appear |
| Group name | The group the checklist belongs to |
| Event name | The event linked to the run, or the checklist's event when no session was picked |
| Event date | The linked event session's date |
| Event time | The linked event session's start time |
| Event host | The staff member assigned to the linked event session |
| Completed by | The person who started the run |
| Started at | When the run was started |
| Completed at | When the run was completed. Blank while in progress |
| Duration minutes | Minutes from start to completion. Blank while in progress |
| Steps total | Number of steps on the run |
| Steps done | Steps ticked or answered |
| Percent complete | Steps done as a share of steps total |
| Issues flagged | Steps where an issue was flagged |
| Steps with notes | Steps that carry a note |
| Steps with photos | Steps with at least one photo |
| Tickets created | Steps turned into a project ticket |
| Run status | In progress, Completed, Awaiting approval, Approved, or Rejected |
| Requires approval | Yes when the checklist requires approval |
| Reviewed by | Who approved, rejected, or sent the run back |
| Reviewed at | When that review happened |
| Review note | The reviewer's note |
| Tags | Every tag on the run or on any of its steps, comma separated |
| Run id | The run's number. Use it to pull the same run in the Checklist steps report |
| Checklist archived | Yes when the checklist has since been archived |
Checklist steps (27 fields)
One row per step of a run, with the run's details carried on every row. Use it to read what happened on each step, which steps get flagged most, and the answers recorded on typed steps.
| Field | Description |
|---|---|
| Checklist name | The checklist that was run |
| Group name | The group the checklist belongs to |
| Event name | The event linked to the run |
| Event date | The linked event session's date |
| Event time | The linked event session's start time |
| Event host | The staff member assigned to the linked event session |
| Completed by | The person who started the run |
| Started at | When the run was started |
| Completed at | When the run was completed. Blank while in progress |
| Run status | The run's status |
| Run tags | Tags on the run itself |
| Step number | The step's position in the checklist |
| Step name | The step |
| Step required | Yes for required steps |
| Response type | Basic, Dropdown, Multi-select, Text, or Number |
| Step done | Yes when the step was ticked or answered |
| Done by | Who did the step |
| Done at | When the step was done |
| Minutes from start | Minutes between the run's start and the step being done |
| Step response | The answer recorded on a typed step |
| Step note | The note on the step |
| Issue flagged | Yes when an issue was flagged |
| Issue description | What was wrong |
| Photo count | Photos taken on the step |
| Ticket key | The project ticket created from the step, such as PROJ-22 |
| Step tags | Tags on the step itself |
| Run id | The run's number. Group a summary by it to see one row per run, or filter on it to read a single run's steps |
Time range options
When Show results for a given date range is enabled, the dropdown shows the same 18 options used across the platform:
| Group | Options |
|---|---|
| Rolling windows | Today, Yesterday, Last 24 hours, Last 7 days, Last 30 days, Last 365 days |
| Completed period | Last week, Last month, Last quarter, Last year |
| Current period | This week, This month, This quarter, This year |
| Period-to-date | Month to date, Quarter to date, Year to date |
| Custom | Custom range, which shows Start date and End date pickers |
Yesterday vs Last 24 hours: Yesterday is one complete calendar day from midnight to midnight in your group's local timezone, so it always reflects a finished day. Last 24 hours rolls back from the current moment and spans into today, cutting off part of yesterday. For "what happened yesterday" reviews, pick Yesterday.
What the date range filters by depends on the report type:
| Report type | Date range filters by |
|---|---|
| Customers | First interaction date with your company |
| Events | Event session submission date |
| Transactions | Transaction creation date |
| Purchases | Purchase date |
| Payments | Payment date |
| Promo codes | Configured event date range on the promo code |
| Custom fields | Response submission date |
| Staff | Event date |
| Waivers | Signed date |
| Checklist runs | Completion date. Runs still in progress use their start date |
| Checklist steps | The run's completion date, so a run's steps stay together |
Access and permissions
| Setting | Description |
|---|---|
| Accessible to everyone | Anyone with global report permissions can run and edit this report |
| Viewers | Specific users who can run (but not edit) the report |
| Editors | Specific users who can run and modify the report |
A user can be added to both Viewers and Editors; editor access implies viewer access.
Generated report (the Run view)
When you click Run report, the generated-report page opens. Key elements:
| Element | Purpose |
|---|---|
| Report title | The report's name |
| Filter popovers | One per field that supports filtering; open, enter a value, click Update to re-query. Reset clears a single filter |
| Refresh icon | Re-runs the query with current filters |
| Total results count | Shows the row count |
| Download icon | Downloads the current filter result as CSV (requires download_data permission) |
| Per-page selector | Changes page size and re-queries |
| Results table | All selected fields, with special formatting for dates, currency, phone, and status. Click a column header to sort (caret shows direction); sorting is server-side across all pages |
| View switch | Detail or Summary, sits under the filters. Summary shows extra grouped by and (for date groups) per dropdowns to regroup on the spot |
| Save filtered view chip | Appears at the end of the filter chip row only when you have edit access on the report and your current filters differ from the saved view. Click to save the current filters onto the template |
| Downloading progress bar | Appears during CSV export with a Cancel download button |
Report mode fields (editor)
| Field | Notes |
|---|---|
| Report mode | Segmented toggle: Plain report (default, one row per record) or Summary report (grouped totals). A hint describes what a summary collapses for the current report type |
| Group results by | Shown for summary reports. Dropdown of the fields you've checked; pick the one to group on. Required to save a summary report |
| Group dates by | Shown when the group field is a date. Day, Week, Month, Quarter, or Year |
Good to know
- Reports are saved configurations, not one-time exports. Run them repeatedly to get fresh data.
- Customer reports are scoped to their group. A Customers report returns the customers who have visited the report's group, plus customers with no recorded visit anywhere yet. A customer who has visited multiple groups appears on each of those groups' customer reports. Running a report requires being assigned to its group.
- Summary reports total only money and number fields. The group value and record count always show; alongside them you get a total for each numeric or currency field you checked. Text fields aren't totaled, and there are no averages, only counts and sums.
- Check the field before you can group by it. The Group results by dropdown only lists fields you've selected, so if a field you want to group on is missing, check it in the Fields list first. Grouping is single level: one field (optionally bucketed by day/week/month/quarter/year for dates), not nested groups.
- Detail and Summary are just views of the same report. Every report can be flipped between them on the run page without editing it. Saving as a summary only sets which view opens first. Filters, sorting, pagination, and CSV export all behave the same in both.
- Summary reports work for every report type, including Customers, Events, Transactions, Purchases, Payments, Promo codes, Custom fields, Project tickets, Time tracking, Resources, and Staff.
- Column sorting is server-side. Clicking a header sorts across every page of results, not just the rows on screen. This is available on both plain and summary reports.
- Field order matters. Drag fields in the editor to match the column order you want in both the table and the CSV.
- Each report type exposes a different set of fields. Switching the report type clears your field selection and reloads the available fields.
- The Last generated by column on the list shows who last ran the report and when, which is useful for teammates to know how fresh the displayed snapshot is.
- The Source field on Transactions and Purchases tells you where the record originated (public booking site, internal booking, etc.).
- Filters on the generated-report page are per-field popovers. Some filters accept free text (customer name), some multi-select (events, groups), some ranges (numeric, date).
- The Transaction has due amount field on Purchases is a boolean flag useful for isolating unpaid line items.
- Running large reports (e.g., all-time transactions) can take time. The page shows a spinner while loading; don't navigate away until the table renders.
- Tax names lists which taxes applied to a row, not how much each contributed. The dollar figure stays on the Tax field as a single combined total — split-by-tax dollars aren't broken out in the report itself. For per-tax dollar amounts, file the row's taxes back to your accounting system using the tax names as the key.
- The Tax names filter uses partial match, like Promo code and Transaction notes. Typing "QST" matches any tax whose name contains those letters; you don't need the exact full string.
- The Tags field on the Customers report pulls from your whole account. A customer tagged in two groups shows the combined tag list on one row. The Tag filter matches partially, so typing part of a tag name is enough. Grouping a summary by Tags groups by each customer's full tag combination, not by each individual tag, so a customer with two tags counts under their combined set rather than under both tags separately.
- The Resources report is the staffing-efficiency lens. One row per availability slot per resource, so a staff member with three shift windows shows as three rows. Use Available, Booked, Idle, and Utilization columns to spot where you're paying for time that isn't earning. Pair with the Resources dashboard widget for a live view on the same data.
- The Resources totals row sums hours then divides so big and small resources are weighted fairly — it isn't an average of per-row utilization percentages.
- Multi-capacity resources can go over 100% utilization in the Resources report. A room with capacity 4 holding 6 concurrent bookings shows above 100%, and Idle hours can go negative. Staff (capacity 1) can never go over 100%. This is expected — the report shows actual booked hours against the slot's calendar time, not against capacity-adjusted hours.
- Only confirmed and completed bookings count toward Booked hours. Cancelled or no-show bookings don't accrue, so the report shows real utilization not optimistic utilization.
- Resources filters only appear when the matching column is on the report. Add Booked hours to the column list and the Booked hours range filter shows up; remove it and the filter disappears.
- Customer address fields come from the customer's profile for your company. On the Transactions, Purchases, and Payments reports, Customer address, city, state, zip, and country show whatever is on the customer's record under Customers. Booking pages that collect an address save it there, so these columns fill in for customers who entered one. The matching Customer address, Customer city, Customer state, and Customer zip filters appear under More filters only while their field is on the report.
- Empty values show a dash on screen and a blank cell in the CSV. Every report follows the same rule: on the generated-report page an empty value displays as "-", and the CSV download leaves that cell empty so the file sorts and imports cleanly in a spreadsheet.
- Saved filtered views are shared, not personal. Saving a filtered view changes what everyone sees when they open that report, including runner-only viewers. If different teammates need different filters on the same data, create separate report templates.
- Only editors can save a filtered view; everyone receives it. The Save filtered view chip only appears for users with edit access on the report. Viewers still get the preset applied when they run the report; they just can't change it.
- The Filtered: line on the list shows filter names, not values. It tells you a report is narrowed and on which filters (e.g., due amount, status); open the report to see the actual values in the chips.
- Date ranges never save into a filtered view. The template's date range setting remains the single source of truth for dates, so a saved view can't silently pin a report to a stale window.
- The Staff report is one row per staff member per event. A single event with two staff members produces two rows, and a staff member who worked five events produces five. Filter by involvement to isolate, say, only the events someone hosted.
- A tip needs to be assigned to a person to show on the Staff report. Tips are attributed exactly, never split or estimated. A tip on an order with no booked event (gift card or merchandise only) doesn't appear here at all, since every row is tied to an event; those tips stay on the Transactions and Purchases reports.
- Received tip is its own involvement type. Someone who was tipped on an event's order but wasn't staffed on it still gets a row, marked Received tip, so no assigned tips go unaccounted.
- Reports only include the groups your user has access to. Every report type returns rows from the groups you are assigned to. When that is fewer than the company's active groups, a notice above the filters on the run page says how many groups are included, for example "Your account has access to 16 of 23 groups". The Group and Event filters list only your groups. Ask an administrator to add you to a group under Settings > User management if you need its data.
- The Waivers report matches the waiver history page. With no date range and no filters, the report's row count equals the total on Waivers > Waiver history added up across your groups. Every signed record is a row, including walk-in waivers.
- Minors are their own rows on the Waivers report. An adult who signed for two children produces three rows: the adult with Is minor No, and each child with Is minor Yes, their own birthday, and the adult's name under Guardian name, with the adult's contact details under Guardian email and Guardian phone. Minor rows have no email and no signature of their own.
- A Waivers report with no date range returns every waiver. Adding a date range limits rows by Signed date. To narrow by when the event happened instead, leave the report unranged and use the Event date filter on the run page.
FAQ
Q: How do I get revenue (or any total) grouped by month?
A: Build the report as a Summary report. In the editor's Report mode section, choose Summary report, check the money field you want totaled (and the date field you want to group on), then set Group results by to that date field and Group dates by to Month. Running it gives one row per month with a record count and the total. You can also flip any existing report to Summary on the run page using the View switch, then set the grouped-by field and period there.
Q: How do I see which marketing campaigns bring in the most revenue?
A: Create a Transactions report with Traffic attribution and Total (or Paid) checked, run it, and switch the View to Summary grouped by Traffic attribution. You get one row per source, medium and campaign combination with the number of transactions and their totals. Group by Campaign or Medium instead for a broader view.

Only fields checked on the report appear in the grouped by list, so edit the report and check Traffic attribution first if it's missing. The values come from the tags on your booking links, so see UTM source tracking to set those up.
Q: Can I switch a report between the row-by-row view and the grouped totals without editing it?
A: Yes. On the run page, use the View switch (Detail or Summary) under the filters. In Summary you can change the grouped-by field and, for dates, the period on the spot. None of this changes the saved report; it just changes what you're looking at. A report saved as a summary simply opens on the Summary view.
Q: My summary report isn't totaling a column I care about. Why?
A: Summaries total only money and number fields, and only ones you checked in the Fields list. Text fields (names, statuses) aren't summed; they can be the group-by field but not a total. There are no averages, only counts and sums.
Q: How do I see which staff worked which events and the tips they collected?
A: Create a Staff report. Pick the columns you want (staff name, email, nickname, role, event name, date, time, group, order number, involvement, tips collected), set a date range, and run it. You get one row per staff member per event, with an Involvement column showing how each person was connected (Assigned, Hosted, Via resource, Received tip) and a Tips collected column with the tips assigned to them. Filter by involvement, staff member, event, or tips-collected range as needed.
Q: A staff member's tips look low on the Staff report. Why?
A: The Staff report only counts tips that were assigned to that person directly, and only tips on orders that include a booked event. Tips left unassigned, split conceptually across a team, or on gift-card / merchandise-only orders won't appear. Cross-check the Transactions and Purchases reports for tips that aren't tied to an event.
Q: Why is a completed-looking event missing from my Staff report?
A: Only real customer events produce rows: those that are booked, checked in, or completed. Empty, phone-only, autoblocked, and cancelled slots never appear. If an event you expect is missing, confirm it falls into one of those three states and that the staff member was actually connected to it (assigned, hosted, via a resource, or tipped).
Q: How do I make a report that only shows customers with outstanding balances?
A: Create (or open) a Transactions report that includes the Due field, run it, and filter to transactions with a due amount. Then click the Save filtered view chip at the end of the chip row. From then on the report opens already narrowed to outstanding balances for everyone it's shared with. On the Purchases type, the Transaction has due amount flag serves the same purpose at line-item level.
Q: I changed filters while reading a report. Did I just change what my teammates see?
A: No. Mid-run filter changes are temporary and only affect your current view. The shared saved view changes only when someone with edit access clicks Save filtered view.
Q: How do I remove a saved filtered view from a report?
A: Open the report, clear all filters, and click Save filtered view. The preset is removed and the report goes back to opening unfiltered.
Q: Can I schedule reports to run automatically?
A: Reports are currently run on demand. Click Run report whenever you need fresh data.
Q: What format is the report output?
A: The generated-report page shows data in a filterable table. Click the download icon for a CSV export that reflects your current filters.
Q: Can I create a report that combines multiple types (e.g., customers and transactions)?
A: Each report covers one type. Create separate reports for each type and combine the data externally if needed. The Transactions report includes customer first/last name, email, and phone, and the Purchases report pulls in similar customer fields, so cross-referencing is possible within a single report for many common use cases.
Q: Can the date range be different per run?
A: The date range is saved on the report. To change it, edit the report. Filters on the generated-report page work on the already-queried result set; the date range is part of the underlying query.
Q: Why does a field not appear in the filter list on the generated report?
A: The generated-report page shows filter popovers for fields commonly filtered. Uncommon fields may not have a filter popover. If you need to filter on a specific field not exposed, download the CSV and filter in a spreadsheet.
Q: What's the difference between Transactions and Purchases?
A: A transaction is the order as a whole (total, customer, payment status). Purchases are the line items within transactions (individual tickets, merchandise, or gift cards). Use Transactions for order-level analysis, Purchases for SKU-level detail.
Q: Why can't I download the CSV?
A: Your role may not have the download_data permission. The download icon is hidden without it. Ask an admin to add the permission in Settings > User management.
Q: How is the Custom fields report different from the others?
A: The Custom fields report returns one row per customer response to a custom field. Use it to audit answers across bookings, waivers, and internal bookings — especially for fields marked "interaction required" or "alert on booking calendar" in your custom fields library. Filter on the Source column to focus on a single channel (waiver, transaction, or internal_booking), and use Waiver id to trace any waiver-source answer back to the specific signed waiver.
Q: How do I see customer addresses or zip codes on a transaction report?
A: Edit (or create) a Transactions report and check Customer address, Customer city, Customer state, Customer zip, or Customer country under Fields. Run the report; the values come from each customer's profile for your company. To narrow by area, open More filters and use the Customer zip, Customer city, or Customer state filter. The same fields are available on the Purchases and Payments report types.
Q: How do I get a list of all customers with a specific tag?
A: Edit (or create) a Customers report and check the Tags field. Run the report, open More filters, and type all or part of the tag name into the Tag filter. The report narrows to customers carrying a matching tag, and the CSV download reflects the same filtered list. Click Save filtered view to make the report open pre-filtered to that tag every time.
Q: Why doesn't the Tag filter show on my customer report?
A: The Tag filter only appears when the Tags field is selected on the report, the same way the other filters follow their fields. Edit the report, check Tags in the Fields list, save, and run it again.
Q: How do I see which taxes applied to which revenue?
A: Edit a Transactions or Purchases report, add the Tax names field, and run it. Each row shows the names of every tax that applied (e.g., "TPS/GST, TVQ/QST"). To focus on a single tax, open the Tax names filter on the generated report and type part of its name — the filter uses partial match. The Tax names column is included in the CSV export.
Q: Why do some rows in the Tax names column show a dash?
A: Gift card rows show "-" because gift cards aren't taxed. Any line with no applied taxes will also show "-".
Q: Does Tax names show me how much each tax contributed?
A: No. The column lists which taxes applied; the Tax column keeps a single combined total per row. The split-by-tax dollar amounts aren't broken out in the report. For audits that need per-tax dollars, group rows in a spreadsheet by Tax names and apply your own rate math.
Q: I added Tax names to a report I created months ago. Do I need to reprocess anything?
A: No. Existing transactions populate the Tax names column immediately. Just run the report.
Q: How do I see how much of my paid staff time is actually earning revenue?
A: Build a Resources report with Resource name, Available hours, Booked hours, Idle hours, and Utilization columns. Filter Resource type to Staff if you only want staff (rooms and equipment use the same calculation but include them or not depending on what you want to see). Set a date range to scope the figures (last week / last month works well for staffing reviews). The totals row at the bottom shows the overall ratio across everything in the filtered view, so you can see at a glance how much of your paid availability is actually booked.
Q: My Resources report shows a room above 100% utilization. Is that a bug?
A: No, expected. Multi-capacity resources (rooms, equipment) can hold more than one booking at a time, so the booked hours can exceed the slot's calendar hours. Anything above 100% means the resource is doing more than it would if every booking ran consecutively. Staff (capacity 1) can never exceed 100% in this report.
Q: Why does my staff member show as three rows in the Resources report?
A: Each row is one availability slot — a single window of time the resource is scheduled for. A staff member scheduled across three shifts on different days (or with different start/end times across the date range) appears as three rows. Sum or filter as needed; the totals row already does the math for you.
Q: Does the Resources report include unconfirmed bookings?
A: No. Only confirmed and completed bookings count toward Booked hours. Cancelled bookings, no-shows, and unconfirmed reservations don't accrue, so you see real utilization not optimistic utilization.
Q: How do I export every signed waiver with birthdates and a minor flag?
A: Create a Waivers report, check the columns you need (at minimum First name, Last name, Birthday, Is minor, Guardian name, Guardian email, Guardian phone, Event name, Event date, and Signed date), and run it. Adults and minors are separate rows, each with their own birthday. Click the download icon to export the filtered result as CSV.
Q: How do I list only minors, or only walk-in waivers?
A: On the run page, filters follow their columns. With Is minor on the report, choose Yes in the Is minor filter. With Waiver type on the report, choose Walk-in in the Waiver type filter. Click Save filtered view to make the report open that way for everyone.
Q: Why does a notice say my report shows a subset of the company's data?
A: Reports include only the groups your user is assigned to. The notice appears when the company has active groups you are not assigned to, and it states the count, for example 16 of 23. Rows, the Group filter, and the Event filter are all limited to your groups. An administrator can add you to more groups under Settings > User management.
Q: How do I search Payments by customer email or phone?
A: Add Customer email and Customer phone to the report's field list, save, and run it. On the generated report, open More filters and use the email or phone filter to narrow the results. Both fields also appear as columns in the on-screen report and in the CSV export. Values come from the customer on the transaction linked to each payment.