How-to · managers and directors

Building reports

Cards, filters, exports and sharing

Prepared for
Anyone who needs a number out of CaseLoop
Prepared by
Eric Norman
Reading time
9 min

Overview

A report is a page of cards. Each card is one question asked of one connected system — how many, how long, how often — and the builder writes the query for you.

3 shapes
A single number, a bar chart, or a table
Any source
Every system you have connected is available
0 rows
Shared with a colleague — the recipe travels, not the data

Before you start

  • At least one connected practice system. See Connect your practice systems.
  • A question worth asking. The builder is fast; deciding what you actually want to know is the slow part.

The Dashboard uses the same builder. A card made on either screen works identically on the other, so the difference is only where you want it to live.

Building a card

Six choices and a live preview.

01

Add a card

On a report, Add Module. A new report starts empty and says No modules yet — that is the button you want.

02

Choose the source and what to show

Show me picks the thing you are counting — clients, sessions, referrals, whatever the systems you have connected provide. The list is built from what is actually installed, so it grows when you connect something new rather than being a fixed menu.

03

Choose the measure

Count or measure decides the arithmetic: a total count, or a calculation over a field — an average, a sum, a gap between two dates.

04

Set the time period

Time period bounds it, with a from-and-to for an exact window. Dates are rendered in the source system’s own timezone rather than your computer’s, so a report does not quietly shift when somebody opens it while travelling.

05

Narrow it

Add conditions — a status, a region, a code, a text match. Fields with a fixed set of values offer that set rather than a text box, with All on / All off for the long ones.

06

Pick a shape and save

Single Metric for one number. Bar Chart when you want it broken down — Group bars by picks the breakdown. Table when the rows themselves are the answer.

The preview loads as you go, so you see the real answer before you commit. Save Changes puts the card on the page.

A preview reading “ran successfully but returned 0 results” is a real answer: the query worked and nothing matched. Widen the period or drop a condition.

Reports

Pages, not one-offs.

A report holds as many cards as you want and remembers its arrangement. Name it something a colleague would recognise — it is the name they will see when you share it.

  • Cards refresh when the report is opened, so a saved report is a live question and not a snapshot.
  • Each card can be refreshed on its own if you have just run a sync.
  • The list shows when each report was created and last updated.

Getting data out

Export and share.

CSV

Any table exports to CSV, which is the answer whenever the question ends in a spreadsheet. Nothing is locked in.

Sharing

Share Report sends it to colleagues by email address — several reports to several people at once if you want. They accept it from their Dashboard.

Sharing sends the recipe, not the rows

What travels is the report’s name, description and the definition of each card. The results are stripped out first, and the recipient’s own machine runs the report against the data it already has.

Two people sharing a report never exchange a client record — which is also why a colleague who has not connected the same system will see an empty card rather than your data.

Advanced query

When the builder isn’t enough.

Advanced query lets you write the query yourself against any connected source, for the question the builder’s options cannot express. View SQL on a built card shows what the builder wrote, which is the easiest way to start.

This reads your real data. A query that is wrong produces a number that looks right, which is worse than an error — check a hand-written query against a known figure before anyone makes a decision on it.

Troubleshooting

If something doesn't look quite right.

What you seeWhat to do
No data available on a card that used to work.Usually the underlying sync has not run, or an integration was removed. Check Settings → Data Integrations for when that system last imported.
The source you want is not in the list.The list comes from what is installed on this machine. Connect that system first and it appears.
A colleague opened your shared report and it is empty.Expected if they have not connected the same system. Sharing sends the question; their machine answers it from their own data.
Two people get different numbers from the same report.Their machines have synced to different points. Compare the last import time for that integration on both before assuming the report is wrong.
A date-bounded report includes something you expected it to exclude.Check which timezone the source uses. Periods are evaluated in the source system’s timezone, which may not be yours — usually the explanation for a single stray row at a boundary.
A bar chart has one enormous bar labelled with a blank.You are grouping on a field that is empty for most rows. Group on something else, or add a condition excluding the blanks.
You want a report to run automatically and email itself.Not available today. Reports are live when opened, and shared reports arrive for the recipient to open. If scheduled delivery matters to you, tell us — it helps to know.

Start with one card.

The reports people actually use are usually three cards long. If you want something more specific, the reports that ship with CaseLoop may already answer it.

Questions
eric@caseloop.co
Prepared by
Eric Norman
CaseLoop · Building reports Verified against 2.3.8 · 2026-09-21
CaseLoop · Building reportscaseloop.co/guides