Browse articles

Build a custom report

Answer a real business question with a saved table: pick an entity, add calculation columns, invent your own with formulas, group for subtotals, and sort, then save it so the answer is one click away next time.

What you'll achieve

Turn a business question into a saved, reusable table grouped and sorted exactly how you need it.

You'll end up with: A saved Project Profitability report with an expenses column added, grouped by status with subtotals and sorted by margin.

The dashboard answers a general question, a report answers your question

The dashboard tells you the firm's health in broad strokes. What it can't do is tell you which specific projects are actually making money and what stage they're at, that's a narrower question, and it needs a table built to answer exactly it. The good news is that every report in Monument, no matter how specific the question, is built from the same five decisions in the same order. Learn that shape once and you can build any report there is.

Every principal at Meridian Studio eventually asks how are the commissions actually performing. This tutorial builds the answer as a Project Profitability report, revenue against expenses, grouped by status, worst margins surfaced first, then saves it so nobody has to rebuild it next month.

Five decisions, made in order, every single time

  1. Entity: what are the rows? Projects, invoices, time entries, expenses, contacts. This is the first and biggest choice, because it decides what one row of the table even means.
  2. Columns: what do you want to see about each row? A new report starts with sensible columns already in place, you add what your question needs and hide the rest.
  3. Filters: which rows actually belong? Narrow by a row's properties, status, client, dates, total revenue, total hours.
  4. Grouping: how should rows bundle together? Grouping collapses rows into bands and gives each one a subtotal, arguably the single most useful thing a report does.
  5. Sort: what order matters? So the rows you actually care about sit at the top instead of buried in the middle.

Nail these five and the table answers the question by itself. Everything past this point is refinement.

Pick the entity first, because it decides everything downstream

  1. 1

    On the reports list, click New to start a fresh report.

  2. 2

    Choose Projects as the entity. Each row is now one of Meridian Studio's commissions, Olive Street Apartments among them, with Profit and Margin already showing.

    Step 2

A projects report doesn't actually open empty. Profit, revenue minus cost, and Margin, profit as a percentage of revenue, are template columns that show up automatically the moment you pick Projects. You're not adding them, they're simply the starting point Monument assumes you'll want.

The Add Column menu is really four different kinds of number

Our question wants spending made explicit, so add a Total Expenses column. The menu it comes from is organized into four groups, and understanding them is understanding what a report can show at all:

  • Calculations: ready-made aggregations over the entity's own data, Total Expenses among them. One click, no formula required.
  • Time Series: a figure spread across periods, one column per month, quarter, or year, its own topic entirely: see Time-series columns and exporting.
  • Properties: the entity's plain fields, status, client, dates.
  • Custom Columns: formula columns anyone in the studio has already created.
  1. 1

    Open the Add Column menu and pick Total Expenses from the Calculations group.

  2. 2

    The table now reads project, status, revenue, expenses, profit, margin, everything this question needs sitting on one row.

When the number you need isn't in any menu, write it

New Custom Column lets you build a formula that references other columns by name in curly braces, something like {Total Revenue} - {Total Expenses}, and the result becomes a real column: sortable and recalculating live like the other calculated columns on the table.

The editor is built to keep you from guessing wrong. Live validation flags a mistyped column reference the moment you type it, not after you've saved and moved on. Format inference figures out that dividing a currency by a currency should probably be a percentage, without you telling it so. A Progress output type turns a numerator-and-denominator formula into an actual progress bar per row, ideal for something like how much of the budget is spent. And because a custom column isn't trapped in the report that created it, once built it shows up in the Custom Columns group for every report on that entity, so the studio defines its version of margin exactly once instead of arguing about six almost-matching spreadsheets.

Grouping is where the story actually shows up

A flat list of projects is useful. A grouped one tells you something. Group by Status and the report bundles projects into bands, on hold, in progress, complete, and gives each band its own subtotal, so you can see immediately whether the thin margins are concentrated somewhere you can still fix them (in progress) or already locked in (complete).

  1. 1

    Group the report by the Status column.

  2. 2

    Read the subtotal on each status band: revenue, expenses, and profit now add up per group, not just per project.

    Step 2

Sort, then save it so the answer sticks around

  1. 1

    Sort by Margin so the tightest jobs lead each group.

  2. 2

    Save the report as Project Profitability, choosing Organization visibility so the whole studio shares it.

  3. 3

    It's now a tab on the reports screen. Set it as the default for projects if it's the view you want first, and it recalculates against live data every time it opens.

Saving surfaces one decision worth pausing on: Visibility. Organization turns the report into a shared tab everyone in the studio can see; Private keeps it just yours. Either way, a saved report becomes a tab across the top of the reports area, and you can mark any one as the default for its entity, the view that opens first whenever anyone looks at projects.

Troubleshooting

  • The entity decides everything downstream, so get it right first. You can't add a column the entity doesn't have. If a figure you want isn't offered anywhere in the menu, you likely picked the wrong rows, time entries instead of projects, say.
  • Don't go hunting the Add Column menu for Profit and Margin. On a projects report they're already template columns sitting in the table the moment it opens. The menu is only for what isn't there yet.
  • A formula column can't be filtered on. Filters work against a project's actual properties, status, client, dates, total revenue, total hours, never against a calculated column like Margin. To surface the loss-makers instead, sort by Margin, worst-first reads the same and needs no filter at all.
  • A custom formula references columns by exact name. {Total Revenue} has to match the column it's pointing at exactly; trust the live validation message and red field border the instant it appears rather than saving first and debugging later.
  • A saved report is the question, not a snapshot of an answer. Reopen it next month and it re-runs against whatever the current numbers are, so last month's profitability report will show this month's figures. That's the point, not a bug to work around.
  • When a report is grouped, read the subtotals, not the individual rows. The band subtotal is the headline number; scanning row by row misses the story the grouping was built to tell.

Where this fits next

You can now answer a point-in-time question about the whole portfolio. To watch a number actually move over time instead, revenue spread across months, quarters, or years, see Time-series columns and exporting. To understand where Profit and Margin actually come from underneath all this, read the financial model overview.