Monthly Pool Client Report for HOA Boards and Hotels
Build a one-page monthly pool report for HOA boards and hotels: exceptions first, then water replacement, chemistry and flow trends, closures and repairs.
Keep it to one page and open with exceptions: the days a reading was out of range, the closures, the incidents and the outages. Below that go the trends the client can act on, which are water replacement, chemical use, flow, saturation index and open repairs. Almost every line should come from a record the MAHC already expects you to keep (6.4.1); chemical use is the exception and comes from your own counts.
Which records feed the report?
Build the report from records, not recollection. If a line has no source record, drop the line.
| Report section | Source record | MAHC reference | Owner |
|---|---|---|---|
| Out-of-range days | pH, residual, combined chlorine entries | 6.4.1.6 items 1 to 3 | Pool operator |
| Outages over 1 hour | Equipment failure or power outage entry | 6.4.1.6 item 14 | Pool operator |
| Closures | Closure entries, cause, times | 6.6.3.1, 6.6.3.2 | Supervisor |
| Attendance | Daily attendance or sign-in book | 6.4.1.6 item 15 | Lead guard |
| Flow and pressure | Pump and filter pressures or flow, backwash times | 6.4.1.6 items 4, 9 | Pool operator |
| Saturation index | Monthly calculation | 5.7.5.8, 6.4.1.6 item 12 | Pool operator |
| Daily inspection failures | Preventive maintenance inspection log | 6.4.1.3.1 | Lead guard |
| Incidents | Illness and injury reports; bodily-fluids log | 6.4.1.4, 6.4.1.8 | Supervisor |
| Equipment and interlock dates | Challenge test and calibration dates | 6.4.1.6 items 6, 7 | Pool operator |
| Training | In-service records | 6.3.3.4 | Supervisor |
| Chemical use | Deliveries and counts (not the inventory log) | 6.4.1.5 for the chemical list | Account manager |
The last row matters. The MAHC chemical inventory log lists chemicals used in the water and on the deck, plus reagent expiration dates (6.4.1.5, 6.4.1.5.1). It does not require quantities, so chemical use has to come from your own delivery and stock counts.
How do you lay out the exceptions?
Count a day as out of range if any logged reading that day was outside the limit. Report days and also readings, for example "pH: 1 day, 2 of 155 readings", because a board reads days and an operator reads readings.
Use limits that you can cite:
- Free chlorine minimum 1.0 ppm without CYA, 2.0 ppm with CYA (5.7.3.1.1.2.1, 5.7.3.1.1.2.2).
- pH 7.0 to 7.8 (5.7.3.4.1).
- Combined chlorine above 0.4 ppm requires action (5.7.4.4.2). The action is the line the client should see: what was done and when.
- Closures: list cause, start, end and duration. If the cause is on the MAHC imminent-hazard list (6.6.3.1), say so and give the item. Owners and operators must close for those (6.6.3.2). Free chlorine under the minimum is item 2 and pH under 6.5 or over 8.0 are items 5 and 6, so those chemistry exceptions must also appear as closures. If they do not, the report has found a bigger problem.
CDC's inspection form is a good model for how an outside reader sees a pool: it scores the daily checklist and chemical records, and it asks for evidence that appropriate steps were taken after an out-of-range reading (items 43 to 46).
What trends are worth putting on the page?
Water replacement. MAHC 5.6.7.4.2 asks for at least 4 gallons per bather per day per venue to be discharged from the system or treated by an alternate system and reused. Backwash water may count (5.6.7.4.2.1). The formula is required gallons = bathers x 4. "Bather" in the MAHC glossary includes staff who contact the water, so sign-in counts and bather counts can differ. A monthly total is a screen. The text is per day, so also check your busiest day.
Chemical use. Use per 10,000 gallons = product used / (pool gallons / 10,000). Compare it to use per 1,000 bathers, so the board sees whether a rise came from attendance.
Flow and pressure. MAHC 5.7.2.2.4 says to backwash at a differential pressure increase over the clean-filter pressure, as the filter manufacturer recommends, unless the system can no longer reach design flow. Report backwash count, days between backwashes, and flow at the same valve settings month to month.
Saturation index. The MAHC requires a monthly check (5.7.5.8). The Annex uses LSI = pH + TF + CF + AF - TDSF with its own factor table, and says the index should fall between -0.3 and +0.3 (Annex 5.7.4.6). For an outdoor pool with stabilized chlorine, the Annex recommends deducting 30 percent of the CYA reading from the alkalinity before looking up the factor (for the alkalinity test itself, Annex 5.7.4.4.1 says divide CYA by 3 instead).
What does a worked month look like?
Example: an HOA client of a company that runs 20 pools. One 60,000-gallon outdoor pool using stabilized chlorine, open all 31 days.
Water replacement:
- Attendance for the month: 2,150 bathers.
- Required: 2,150 x 4 = 8,600 gallons.
- Recorded discharge: 8 backwashes. Say the filter bed is 12 square feet and the backwash rate is 15 gpm per square foot, the MAHC minimum for granular media filters (5.7.2.2.2) used here as an assumed figure. That is 12 x 15 = 180 gpm, and at an assumed 5 minutes each, 180 x 5 = 900 gallons per backwash. 8 x 900 = 7,200 gallons. Add a logged partial drain of 2,000 gallons: 9,200 gallons.
- Margin: 9,200 - 8,600 = 600 gallons, 7 percent over the requirement.
If only 5 backwashes had been logged, the discharge would be 5 x 900 + 2,000 = 6,500 gallons, a shortfall of 2,100 gallons that the report should state, with the action: a scheduled drain.
Chemical use (62 gallons of liquid product this month; last month 54 gallons and 1,800 bathers):
- This month: 62 / 6 = 10.3 gallons per 10,000 gallons, and 62 / 2.15 = 28.8 gallons per 1,000 bathers.
- Last month: 54 / 6 = 9.0, and 54 / 1.8 = 30.0.
- Total use rose and per-bather use fell, which suggests attendance drove the change.
Saturation index with pH 7.5, 84 F (TF 0.7), calcium hardness 300 (CF 2.1), total alkalinity 120 and CYA 60, TDS above 1,000 (factor 12.2). Alkalinity input: 120 - 0.30 x 60 = 102, nearest table row 100 (AF 2.0). LSI = 7.5 + 0.7 + 2.1 + 2.0 - 12.2 = +0.1.
The page, in order:
| Section | Example content |
|---|---|
| Exceptions: chemistry | Free chlorine below 2.0: 2 days (both closed, see next row). pH outside 7.0 to 7.8: 1 day (7.9, 2 readings). Combined chlorine above 0.4: 3 days, action recorded 3 of 3 |
| Exceptions: closures | 3 closures. 2 for free chlorine below the minimum (6.6.3.1 item 2), closed 1 h 10 min and 45 min until restored. 1 for a circulation pump motor failure, circulation interrupted 6 h 40 min (6.4.1.6 item 14, 6.6.3.1 item 7), closed during repair, reopened after restart and testing |
| Incidents | 0 injury reports, 1 bodily-fluids log entry with all 13 fields (6.4.1.8.3) |
| Trends | Attendance 2,150. Water replacement 9,200 gal vs 8,600 required. Chemical use 10.3 gal per 10,000. Backwashes 8 (3.9 days apart; 6 last month, 5.0 days apart). LSI +0.1 |
| Equipment and training | Interlock challenge test done on the 12th. One in-service session recorded |
| Open repairs | Two items, each with owner, age in days and expected date |
What should the report not claim?
- Write what was recorded: "free chlorine was below 2.0 ppm on 2 days". Do not write that the pool is compliant. Compliance is a finding the AHJ makes against the code that applies locally, and the report cannot predict an inspection result.
- Put the limit and its source beside each number, and add a "local code" column where your health department differs from the MAHC.
- Say what you do not have. If a record is missing, show it as missing instead of leaving the line out.
- Keep explanations to one sentence per exception. A closure needs cause, duration and what was done. Opinions about whose fault it was do not belong on the page.
How do you produce this for 40 clients?
Keep one template and one section order. Change only the cover page (client, pools, period, local code references) and the limits column. Pull exceptions with a filter on the log data, not by reading entries, then write the one-sentence explanation by hand.
Poolean builds daily or monthly logs from staffing, readings, visits, closures and reports for each pool, and you can print them, save a PDF or download a CSV, so the exception filter runs on records your team already entered. Property managers and boards get a read-only view of the pools they own, with today's status, logs, closures and inspection readiness. To see how that works for your clients, book a 30-minute call.
For the board's read-only view, see the property manager view. For cost lines, see comparing pool operating costs and pool chemical usage forecasting.
The short version
- Lead with exceptions: out-of-range days by parameter, closures with cause and duration, incidents, outages over 1 hour.
- Check water replacement as bathers x 4 gallons (MAHC 5.6.7.4.2) against logged discharge, and say when it falls short.
- Chemical quantities come from your delivery and stock counts. The MAHC inventory log lists chemicals but not amounts.
- Report what was recorded against stated limits. Do not state compliance, and note where local code differs from the MAHC.
- One template, a per-client cover, and exceptions filtered from the logs.
Questions people ask
What should a monthly pool report for an HOA board include?
Put exceptions first: days out of range by parameter, closures with cause and duration, incidents and outages over 1 hour. Then add attendance, water replacement, chemical use, flow trend, saturation index, in-service dates and open repairs. Every line should come from a record you already keep.
How do you check water replacement against the MAHC?
Multiply bathers by 4 gallons. MAHC 5.6.7.4.2 asks for at least 4 gallons per bather per day per venue to be discharged or treated and reused, and backwash water may count (5.6.7.4.2.1). Compare that figure to metered or calculated discharge.
Should the report say the pool is compliant?
No. Report what was recorded against the stated limits. Compliance is a finding the AHJ makes, against the code your state actually adopted.
How do you produce reports for many clients without many formats?
Use one template with a per-client cover page and the same section order. Filter exceptions from the log data, then add one paragraph of explanation per exception.
More in For operators
- For operatorsBreakpoint Chlorination Math for Commercial Pools
- For operatorsCYA to Free Chlorine Ratio: Working the 45:1 Math
- For operatorsChemical Feeder Interlock: Monthly Challenge Test and Records
- For operatorsHyperchlorination Math: CT Values and the CYA Drain Table
- For operatorsLangelier Saturation Index Worksheet for Commercial Pools
Sources
- CDC: 2024 Model Aquatic Health Code, Code (5.6.7.4.2, 5.7.2.2.2, 5.7.2.2.4, 5.7.3.1.1.2, 5.7.3.4.1, 5.7.4.4.2, 5.7.5.8, 6.3.3.4, 6.4.1, 6.6.3.1, 6.6.3.2, glossary "Bather")
- CDC: 2024 Model Aquatic Health Code, Annex (5.7.4.4.1, 5.7.4.6 water balance and Langelier factor table)
- CDC: MAHC Aquatic Facility Inspection Form