Documentation

Report Builder

Requires.

  • Reports with View to open the builder in read-only mode.
  • Reports with Modify to save changes.
  • Reports with Create for the + Create Report button on the Reports Index.

The Report Builder is where administrators and power users define and edit reports — deciding which data goes into the report (the report object), which columns show up in the results, which filters users can apply when running it, and which bulk actions are available on the results.

The builder is point-and-click. You don't write SQL. Instead, you pick columns and filters from a list of what's available on the underlying report object. (SecurityTrax ships with 19 built-in report objects — see Report objects below.)

Getting here

Two paths:

  • Edit an existing report: from the Report Detail page, click the pencil (Edit) icon next to the report name. This takes you to the builder for that report.
  • Create a new report: from the Reports Index, click + Create Report (top-right; only visible if you have the create permission). Fill in the create modal (name, description, category, report object), and SecurityTrax creates an empty report and drops you in the builder.

Direct URL: https://portal.securitytrax.com/{your-company}/reports/{reportId}/builder/edit.

Two styles of reports

Not every report is editable here. SecurityTrax has two styles:

  • Object-oriented reports — built on one of the 19 report objects. Editable in this builder. These are the reports you'll normally create and modify.
  • SQL-oriented reports — legacy reports backed by hand-written SQL. Edited via back-end tools only. If you click Edit on one of these, the builder won't know what to do with it. Creating new SQL reports through the UI isn't supported today.

Unless noted otherwise, this page is about object-oriented reports.

Report objects: the 19 report types

A report object is the underlying data shape of a report. It determines which columns and filters are available. Every report is built on exactly one object. You pick the object when you create the report; you can't change it later (create a new report if you need a different shape).

The 19 objects ship with SecurityTrax:

Report Object Category Good for
Customers Customer Reports Customer lists, sale/install date analysis, status breakdowns
Notes & Tickets Notes & Tickets Reports Open ticket queues, due-date tracking, note activity by user
Customer Payables Payables Reports Commissions/bonuses tied to customers
Customer Equipment Equipment Reports Equipment-installed lists, warranty tracking
Lead Customer Transactions Leads Lead-to-customer conversion history
Customer Payments Accounting Reports Payment receipts, aging payment history
Customer Communications Customer Reports Communication logs (email/SMS history)
Tech Reschedules Calendar Events Reports Appointment reschedule audit
Customers At Risk Customer Reports At-risk entries across customers
Leads Lead Reports Lead lists by status, source, callback date
Payment Gateway Transaction Accounting Reports Raw payment-processor transaction records
Invoices Quotes Accounting Reports Invoice/quote lists, aging, status
Pending Equipment Equipment Reports POs, PRs, and spillage reports
Users User Reports User/tech lists with role, location, status
Licenses User Reports License records per user or company
Fundings Funding Reports Funding event lists by funder, status, outcome
Funding Transactions Funding Reports Per-transaction funding detail
Work Orders Work Orders Reports Work order lists with assignment, due date, status
Customer Tasks Tasks Reports Task records across customers
Calendar Events Calendar Events Reports Appointment lists by tech, date, type

The builder layout — four tabs

Opening the builder shows the report's name and ID at the top, a View Report button (eye icon) to jump to the run page, and a Save button (check icon) to commit your changes. Below is a tabbed interface:

Tab 1 — Details

Basic metadata.

Field Required? Type Notes
Report name Yes Text Up to 255 characters. Appears on the Reports Index.
Description No Text Up to 255 characters. Appears beside the name in the index.
Outer loop (admin only) No Dropdown Picks a grouping method for the results. The report is rendered in sections, one per outer-loop value. Options are defined per report object.
Show empty outer loop results (admin only) No Checkbox When on, sections with no rows are still shown (with "No results"). When off, empty sections are hidden.

Tab 2 — Columns

Two side-by-side panels.

Left panel: Available Columns

  • Heading: "Available Columns ({count})".
  • Search box: filters by column name or description, case-insensitive.
  • List of every column the report object exposes. For each: its name, a short description, and a + button to add it to the report.

Right panel: Selected Columns

  • Heading: "Selected Columns ({count})".
  • List of columns you've added, in display order. For each:
    • Order number (1, 2, 3, …) — the position in the results table.
    • Column name.
    • Editable checkbox (only if the column supports inline editing) — toggle whether users can edit this column's cells on the run page (allow_update).
    • Summable checkbox (only if the column is numeric) — toggle whether the column shows a Total row on the run page (allow_sum).
    • Up / Down arrows to reorder.
    • X button to remove.

The order of the Selected Columns panel determines the left-to-right column order on the run page.

Tab 3 — Filters

A table of every filter the report object supports. For each filter:

Column Meaning
Instances A dropdown 0–5. 0 = this filter isn't on the report. 1 = appears once. 2+ = multiple instances allowed (useful for filters that support independent combinations — e.g. two independent date ranges).
Name The filter's display label.
Description Short explanation of what the filter does.

If the report object has no filters configured, you see: "No filters available for this report object."

Heads up. Running a report requires at least one filter to be set by the user. If your report has zero filters defined here, users won't be able to run it — they'll get the "Please select at least one filter before running the report" error with no way to satisfy it. Always add at least one filter.

Tab 4 — Bulk Updates

A list of checkboxes — one per bulk update method the report object supports. Check the boxes for methods you want users to have available on the run page.

Bulk updates (aka bulk edits) let users select multiple rows on a report's results and change a common field across all of them in one action — e.g. reassign 50 tickets to a different user, or set 100 payables to APPROVED at once. Which bulk methods are available depends on the report object.

If none are available, the tab shows: "No bulk update methods available for this report object."

Saving

Click Save at the top-right. SecurityTrax:

  1. Validates the Details tab fields.
  2. Updates the report record (name, description, outer-loop settings).
  3. Rewrites the column set (ReportToReportObjectMethod), preserving the new order.
  4. Adjusts filter counts (ReportToReportObjectFilter), adding or removing filter instances to match the new count.
  5. Rewrites the bulk-update methods (ReportToMassEditMethod).
  6. Shows a success flash: "Report saved successfully."
  7. Redirects you to the Report Detail page so you can immediately run what you just built.

Step-by-step: building a basic Customer List report

Let's build a simple customer list that shows who, where, and their status — filterable by location and created-date range.

  1. From the Reports Index, click + Create Report.
  2. In the create modal:
    • Name: "Customer List — by Location"
    • Description: "Customers filtered by location and created-date range."
    • Category: Customer Reports
    • Report Object: Customers
  3. Click Save. The builder opens on the Details tab. You'll see the name you just typed.
  4. Click the Columns tab.
  5. In the Available Columns search box, type id. Click + next to ID.
  6. Clear the search. Search for name, add Full Name (or whatever the object's name column is called).
  7. Add, in order: Account Number, Address (or City/State), Sales Rep, Status, Sale Date, Created Date.
  8. Confirm the Selected Columns panel shows these seven columns in the intended order. Use the Up/Down arrows to reorder if needed.
  9. Click the Filters tab.
  10. Set Locations to 1 instance. Set Created Date Range to 1 instance. Leave others at 0.
  11. Click the Bulk Updates tab. Leave everything unchecked (this report is read-only; no bulk edits needed).
  12. Click Save at the top-right.
  13. You land on the run page. Filter to Locations: Dallas and Created Date: From 2026-01-01, click Display Report, and confirm the data looks right.

You now have a reusable customer-list report. Anyone with report-view permission can run it; admins can tweak it here anytime.

Step-by-step: building a Payment History report with a Sum

A numeric report: show payments in a date range, with customer and amount, with a total at the bottom.

  1. + Create Report from the index.
  2. Name: "Payment History — by Date". Category: Accounting Reports. Report Object: Customer Payments.
  3. In Columns, add: Payment Date, Customer, Payment Type, Amount, Processing Status, Cleared.
  4. On the Amount row in the Selected Columns panel, tick the Summable checkbox. This causes the run page to show a Total row with the sum of all Amount values.
  5. In Filters, set Payment Date Range to 1, Locations to 1, Processing Status to 1. Save.
  6. On the run page, filter Payment Date to a week, Processing Status to Complete, and click Display Report.
  7. The results show a table of payments. At the bottom, a Total row sums the Amount column.

Step-by-step: building a Bulk-Editable Ticket Queue

A ticket-focused report that lets managers reassign tickets inline without clicking through each one.

  1. + Create Report from the index.
  2. Name: "Unassigned Tickets Queue". Category: Notes & Tickets Reports. Report Object: Notes & Tickets.
  3. In Columns, add: ID, Subject, Customer, Note Type, Assigned To, Due Date, Priority, Created Date.
  4. On the Assigned To row, tick Editable. (This only appears if the Assigned To column supports inline editing on this object.)
  5. Optionally tick Editable on Due Date as well, so managers can reschedule at the same time.
  6. In Filters, set these to 1 each: Status (so they can filter to Open), Assigned To (so they can filter to Unassigned or a specific user), Created Date Range, Location.
  7. In Bulk Updates, tick whichever bulk methods the object offers — commonly "Reassign To User" and "Set Status".
  8. Save and open the report.
  9. On the run page, filter to Status: Open and Assigned To: (none). Click Display Report.
  10. Check the rows you want to reassign, click a bulk action at the top of the results, pick the new user, and save.

Managers now have a one-page workflow for "find unassigned tickets, reassign in bulk."

Step-by-step: building a Funding Status report for a specific funder

A filtered report for your funding team — what's in flight with a specific funder.

  1. + Create Report from the index.
  2. Name: "Funding — In Flight". Category: Funding Reports. Report Object: Fundings.
  3. In Columns, add: ID, Created Date, Customer, Amount Expected, Expected Date, Status, Outcome.
  4. Mark Amount Expected as Summable so the total is visible.
  5. In Filters, set these to 1 each: Funders, Statuses, Outcomes, Created Date Range, Expected Date Range.
  6. Save. Open the report.
  7. On the run page, pre-filter Funders to the funder you want to review and Statuses: SUBMITTED, REVIEW (not yet complete). Click Display Report.
  8. You see every matching deal still in flight, with the total expected payout in the footer.
  9. Click Save to Favorites, name it "Funding Queue", and run it every morning.

Non-obvious behaviors and limitations

  • No GROUP BY or COUNT/AVG/MIN/MAX. The builder only supports SUM (on numeric columns marked Summable). If you need a "count of customers by sales rep" report, the underlying report object has to expose a pre-counted column for you to sum — you can't add an aggregation in the builder.
  • Report object is fixed after creation. Once a report is created on an object, you can't change its object. Create a new report instead.
  • The create-report flow only builds OO reports. SQL-oriented reports aren't creatable via the UI.
  • Filters are required at run time. If you forget to add filters in the builder, no one can run your report. Always define at least one.
  • Outer loop is admin-only. The grouping/sectioning feature only appears in the builder for users with admin access.
  • Editing columns doesn't affect existing favorites. If a user saved a favorite against this report, your column changes appear; the favorite's filter values stay the same.
  • Deleting a column removes it from the results but doesn't alter the underlying data — columns are just "views" on the report object's method set. Safe to remove and re-add.

Related

  • Reports Index — where your built report appears after saving.
  • Report Detail — the run page you jump to after saving.
  • Favorites — users can save filter presets on top of any report you build.