Read the analytics dashboard
One screen, a filter bar, and eight panels below it. Four panels show live data, two are structurally empty, one draws from a different module than its heading suggests, and one prints zeroes over data it cannot read correctly.
Set the filters first
The bar across the top carries four controls, and two of them work as labelled.
| Control | What it does |
|---|---|
| Date range | 7 days, 30 days, 90 days, YTD, or a custom range. The first three and Custom pass through as chosen |
| Location | Narrows the member, staff, trend, demographic, compliance and funding panels to one site |
| Compare to previous period | A switch |
| Download Report | Produces the executive summary as a document |
Choosing YTD sends no window at all, and an unset window falls through to the same 90-day default every trend chart already uses. Nothing in PTRS computes a true year-to-date figure.
Compare to previous period reveals a line under each KPI showing what the prior period was. That figure is worked out from a percentage change that is fixed at zero everywhere, so the previous period always equals the current one. The switch changes what the screen shows and tells you nothing new.
The download always covers the whole organisation over a fixed 30-day window, whatever date range or location is chosen on the same bar. There is no way to change either from this screen.
Panel by panel
The KPI strip: believe four of six
| Tile | Trust it? |
|---|---|
| Total Members | Yes |
| Active Members | Yes, members who are both marked active and carry an active status |
| Total Staff | Yes, active staff, narrowed by the selected location |
| Open Incidents | Yes, incidents that are neither resolved nor closed |
| Avg Daily Attendance | No. Always zero |
| Compliance Score | No. Always zero |
Ignore every trend arrow beside these tiles. All six read a flat "no change" figure against the caption "versus the prior period": the comparison is a fixed value, not something PTRS actually computes. The Open Incidents tile goes further: it shows a red rising arrow whenever the count is above zero at all, which looks like a rising trend and means nothing more than "greater than zero".
Attendance Trends: always empty
Reads the daily summary table that nothing in PTRS ever writes to. The chart renders its axes and no line, at every date range and every location.
Program Enrollment: real, from a different module
This panel does not use this module's own enrolment figures at all. It reads live program records from the Programs module instead, so its bars are trustworthy even though its neighbours often are not.
Attendance Heatmap: a grid of zeroes over real data
The underlying data behind this panel is real and current. The panel itself reads the response using field names PTRS's own attendance count does not use, so every cell comes up empty and prints a zero under the caption "30-day weekday averages".
Do not read this panel as evidence of anything, in either direction. A grid of zero cells does not mean attendance collapsed; it means the panel cannot read what PTRS sent it. The one truthful empty state is the message saying there is no heatmap data at all, which genuinely means no check-ins landed in the window. The full explanation is in why analytics figures read zero.
Funding Breakdown: real
Grant totals grouped by funder type, with each type's share of the whole. The arithmetic is correct, and it counts only the funders kept in this module, so any grant recorded in the Programs module is invisible to it. See manage funders.
Demographics: real
Age band, gender and ethnicity counts over active members, narrowed to the selected location. The age worked out here is exact and differs from the one the statistical report uses. See the figure reference.
Compliance Trend: always empty
Reads the same snapshot table that cannot be written outside a development copy of PTRS.
Incident Trends: real, over three different windows
This panel actually draws three separate reads, and they do not share a window.
| Sub-panel | Window |
|---|---|
| The trend line | The date range you selected, 90 days by default |
| The incident heatmap | Fixed at 90 days, regardless of the date range |
| Incidents by type and location | All time, with no date filter at all |
All three read live incident records, so each is honest about its own window. None of them is labelled with that window on screen. Both heatmaps group by the day in universal time, so an incident recorded after roughly 8 pm Delaware time lands on the following day's cell.
AI Pattern Analysis
The bottom panel is the Incidents module's own pattern component, shown inline here. It is a set of numeric thresholds and two database reads, not a call to an outside AI service. See Incidents.
What to do with the page
Use it for member counts, staff counts, open incidents, demographics, funding mix and incident trend. Do not use it for attendance or compliance, and do not quote a percentage from it: the only real percentages on the page are the funding shares. Every trend arrow beside a KPI tile is fixed and means nothing.
Related
Checked against PTRS on 7 September 2026.