Reports let you build custom data exports across seven report types: customers, events, transactions, purchases, payments, promo codes, and custom fields. 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.
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) Set a date range (see the next section)
- (Optional) Configure access
- Click Create
The report appears on the list and can be run immediately.
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.
Download CSV from a generated report
- 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 |
| Type | Badge with the report type (Customers, Events, Transactions, Purchases, Payments, Promo codes, Custom fields) |
| 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 |
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 |
| 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 |
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 (18 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 |
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 (23 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.) |
| 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 transaction belongs to |
| Price | Pre-tax subtotal |
| Tax | Total tax collected |
| 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 (22 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 |
| Group name | Company group the purchase belongs to |
| Source | Where the purchase originated (public booking site, internal booking, etc.) |
| Tax | Tax on this line |
| 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 (14 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 |
| 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 |
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 |
Time range options
When Show results for a given date range is enabled, the dropdown shows the same 17 options used across the platform:
| Group | Options |
|---|---|
| Rolling windows | Today, 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 |
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 |
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 |
| Downloading progress bar | Appears during CSV export with a Cancel download button |
Good to know
- Reports are saved configurations, not one-time exports. Run them repeatedly to get fresh data.
- 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.
FAQ
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.