Product Updates

What's new in OnDeck

Everything we've shipped recently, what's being built right now, and what's next.

In progress & roadmap

Roadmap last updated September 14, 2026.

Cost & usage dashboards In progress

Per-organization visibility into seat, API, email, and storage usage, with nightly snapshots so spend is easier to see coming.

Phone-friendly record tables Planned

Turn the highest-traffic tables — submission history, certification overview, staff directory — into clean card layouts on phones so there's no sideways swiping.

AI incident summaries Planned

Auto-draft a plain-language summary for each incident report so directors can triage their queue faster. Held until a zero-data-retention review is complete before any real incident data is processed.

Recently shipped

Customer-facing changes. Internal refactors and dependency bumps are omitted.

Unreleased

Added
  • Evaluations save as you go (build 30). An evaluation in progress is kept as a draft you can leave and come back to, on the iPad or the web; unfinished ones are listed on the New tab. Cancel asks whether to keep the draft. Signatures aren't kept in a draft — you sign when you finish.
  • Printed names at the evaluation signatures (build 30), filled in with the staff member's and the evaluator's names and still editable. Evaluation signatures and names are now saved with the record.
  • Injector Site Cleaning in the Maintenance Log (build 30), with chlorine and pH logged separately. A shift report task can link to it, or to an evaluation type: the report offers the log or the evaluation (already set to that type) and shows what was filed that shift beside the task. It never ticks the task for you.
  • A Source on documents (build 30) — MAHC, YUSA Aquatic Safety Guidelines, state or local code and more — and an Edit screen for a document already filed.
  • A turnover-rate calculator (build 30), and the LSI calculator fills in from the pool's latest reading.
  • Your organization's own water-chemistry ranges (build 30). Where an organization has set its own range for a reading, the app checks against it instead of the MAHC table.
  • Verifying a certification asks how it was checked (build 30), as the web does.
  • The Terms of Service are recorded (build 30). The app asks you to agree to the current Terms once, and records it.
  • Tap a notification to open what it's about (build 29). A shift report opens that report; an out-of-range reading opens that flag on the Dashboard, expanded and in view; a follow-up opens the follow-up list at that item; and "checklist due today" opens the checklist itself. Scheduling, training, inventory and shout-out notifications open the right tab. Until now a tap only brought the app forward wherever you had left it. The server half is already live, so 1.3.0 lands on the right screen and 1.3.1 opens the item.
  • Widgets, on the Home Screen and the Lock Screen (build 28). Five of them: whether a water reading is overdue, your next shift, certifications expiring across the organization, certifications that lapse before a published shift their holder has already been told to turn up for, and open flags — broken down, because "6 open" is a number and "4 out-of-range, 2 failed checklist" is a morning. The chemistry one refreshes the moment the answer changes rather than on a timer, since the minute a reading goes overdue can be calculated in advance. The shift widget shows only your own shift: a Lock Screen is read by whoever picks the phone up, and it uses the device's time zone rather than the branch's for the same reason.
  • Controls (build 28) — put "log a water reading" in Control Centre, on the Lock Screen, or on the Action button, and start one from a locked phone without hunting for the app.
  • A four-hour water-testing alarm (build 28). The MAHC testing interval now exists in one place that the apps, the web and the server all read, so "when is the next test due" gets the same answer everywhere — it had been written separately in two places with nothing to check either against.
  • Ask Siri, and search in Spotlight (build 28). "Log a water reading for the lap pool" opens the right pool by name. "Who's on now?" is answered out loud without opening the app at all. Your pools and the checklists you can run are in Spotlight search. ⚠️ A Spotlight index has no idea who is holding the phone, so only checklists you may run are indexed — and the screen checks again when you arrive, because an index outlives the session that built it. A change of role, of branch, or another person signing in on a shared deck iPad all leave entries behind that are no longer yours.
  • Tag a colleague for follow-up on a shift report (build 28). Name someone in a report and the follow-up is theirs, instead of an item in a document nobody owns.
Changed
  • The evaluation form is easier to use on an iPad (build 30). The rating buttons fill the row and are larger, the rubric link sits beside each criterion instead of under the first button, a below-passing result asks once before it's submitted, the comment boxes behave like every other text box, and the time is picked instead of typed.
  • The yearly BLS/CPRO refresh starts collapsed on the Certifications screen (build 30), with a count of who is due.
  • Inventory requests are decided by someone above the requester (build 30). Approve, Deny and Issue only appear where you can use them.
  • Wording that claimed more than OnDeck knows is gone (build 30). The dashboard no longer labels its checklists as meeting the MAHC, and a few statements that weren't accurate were corrected. OnDeck records what you do; an inspector decides compliance.
  • The apps count a certification that covers another (build 29). A Lifeguarding Instructor Trainer card fills the Lifeguarding Instructor row, and a lifeguarding card fills CPR and First Aid — as the web and the scheduler already did. A lapsed card no longer raises an alert, on the Dashboard or the Lock Screen widget, when current cards that expire later cover everything it proves.
  • Training hours count the same way on every screen (build 29): approved in-service training only, in the app, the Dashboard tile and the compliance packet, matching the web and the monthly totals.
  • Certifications are named in full (build 29), without abbreviations in parentheses.
  • Nobody under 14 can be given a shift, and no override clears it (build 28). This is the first block in OnDeck that a supervisor cannot type a note past. It needed to be: a 13-year-old was the one person the minor rules never touched — youth labour bands start at 14, so anyone younger fell through every cap and was read as an adult. The age was on file, calculated correctly, and nothing looked at it.
  • The youth employment rules you configure are now the ones enforced (build 28). The admin panel and the scheduling engine had been writing and reading two different settings, with nothing joining them — so rules could be set, saved, shown back to you, and enforce nothing, while the setting that actually governed shifts could only be changed in the database by hand.
  • Signing in no longer lasts a week (build 28). Sessions had no idle timeout and their expiry slid forward every time the app was opened, so on a shared supervisor desktop one night's supervisor was still signed in when the next night's arrived. A session now ends after four hours idle. Working through a shift will not interrupt you, and the app no longer offers to resume a session that has gone stale.
  • Inviting somebody from the app no longer asks which role to put them on (after 1.2.1). The web stopped asking on 14 September, and the app kept showing the sheet — a menu about permissions in the way of a one-tap action. It was also throwing the answer away: accepting an invitation has never changed the role already on somebody's staff record. Invite is one tap now. You set a role on the staff member's own screen, which asks before removing a permission and won't leave you without an administrator. The bulk invite screen keeps its role menu — that one is for inviting a whole new intake at once, where nobody has a role yet — and it now says so, instead of implying it would move people who already have one.
  • The Mac app now needs an Apple silicon Mac (build 28). This is separate from the macOS 26 requirement below and cuts differently: a 2019 or 2020 Intel Mac can run macOS 26, and will no longer receive OnDeck updates even though its system software qualifies. The same rule as below applies — the copy you have keeps working, it just stops changing. Said plainly here because the previous release shipped for both chips and nothing would otherwise tell you this one does not.
  • The apps now require iOS 26, iPadOS 26, macOS 26 or tvOS 26. A device that can't run this year's system software keeps the copy of OnDeck it already has and won't receive this update or the ones after it — nothing stops working, it just stops changing. Two reasons for the move: Apple requires apps submitted from April 2027 to be built against these versions, and building against them is what lets the apps use this year's system features instead of working around their absence.
  • The staff import no longer asks for an access level. Both the web and the apps put a role dropdown on every row of a CSV import preview, and neither one ever did anything: whatever you chose, the imported staff member came in the same way. Everyone is imported as a Lifeguard, both screens now say so, and giving somebody a different role is done from their own screen — where it asks before removing a permission and won't leave you without an administrator.
  • Setting someone's role in the app offers your organization's roles (after 1.2.1), by the names you gave them, instead of six fixed tiers — so a facility with a Head Guard and a Lead Guard can assign either, and one with neither is not offered them. The app asks before a role change removes a permission, and refuses to leave the organization without an administrator, the same way the web does.
  • The staff list shows what each person's role is called (after 1.2.1). It had been showing the "position" field, which is blank for most people, so most of the roster carried no role at all on screen. The job title is still there on the staff member's own screen, as a separate line — it is a different thing from the role, and they no longer get collapsed into one.
  • Editing a staff member no longer overwrites their job title (after 1.2.1). Saving from the app used to write the access-level choice into the "position" field, replacing anything typed there — so "Aquatics Supervisor" became "supervisor". The role is stored as a role now and the title is left alone.
Fixed
  • Dosing amounts corrected (next build). The same fixes as the web's 2 October entry: the Dosing Recommendations card doses at your configured bleach strength with the calculators' math, the pH calculator works from total alkalinity and stabilizer, calcium chloride asks flake or pellets, shock dosing counts the free chlorine already in the water, and the saturation index no longer reads 0.4 high.
  • The selected item in the iPad sidebar was hard to read (after build 30). It showed dark text on the dark teal highlight. The selected item now takes the system's own text colour for the highlight, so it reads clearly whether the highlight is teal or grey.
  • Water Clarity on the chemistry form read "Range: 0–0" (after build 30). Clarity is picked from a list, not measured, so it never had a number range. It now reads "Visual assessment of water clarity", as it does on the web, in the app and in Kiosk Mode.
  • Signatures drawn in dark mode saved almost invisible (build 30). The pad now stays dark ink on white in dark mode, and so does the saved signature.
  • Evaluation alerts couldn't be marked read (build 30), and tapping the alert banner marked everything read and replaced the page with an error. Alerts now say why they were raised.
  • Errors show the server's own explanation (build 30) instead of "Request failed (HTTP 4xx)."
  • Approving your own training (build 30) is held back as it is on the web, with the option to ask another approver.
  • An in-service logged from the app reached approval in pieces (build 29). The app stamped each attendee separately, so a big session logged from a phone arrived in the approval queue as several sessions. It now arrives as one, as it does from the web.
  • Three optional modules had no switch in the app (build 29). Shout-Outs, Member Pool Schedule and Heat Monitoring could only be turned on from the web; App Configuration on iPhone, iPad and Mac now lists them.
  • Shift report history read "undefined, Invalid Date" (build 28). Every past report in the list rendered as that, for everyone. The visible half was cosmetic; the quiet half was not, because the same misreading fed the day-of-week a report is filed under.
  • A shift report email named a branch id instead of your site (build 28). A director's evening summary read "Branch br_…", an internal id, where it should have named the site. The id was correct and completely useless — naming the site is the one job that heading has.
  • Signing out of the web app was failing (build 28). Every sign-out had been rejected before it ran, every time, on every browser. Signing out now signs you out.

October 2, 2026 — Dosing amounts corrected

Fixed
  • The Dosing Recommendations card suggested far too little. On the water-chemistry form it gave about a sixteenth of the liquid chlorine needed and a thirtieth of the pH chemical, and always assumed 12.5% bleach. It now uses the calculators' math at your configured bleach strength, and asks for total alkalinity before giving a pH amount.
  • The dosing calculators. pH now works from total alkalinity and stabilizer: the old fixed rule ran about 1.7× high for acid and 2.4× low for soda ash at typical alkalinity. Calcium chloride asks whether yours is flake or pellets — pellets need about a fifth less. Shock dosing counts the free chlorine already in the water, as the CPO handbook does. The saturation index read 0.4 high, so balanced water showed as scale-forming. The calculators inside Water Chemistry now use your configured bleach strength too, and changing an input clears the old result.

October 1, 2026 — Supervisors can record a water reading again

Fixed
  • The printed binders showed internal ids instead of names. The MAHC Compliance Binder's chemistry table named each pool by its internal id rather than "Lap Pool", and its certifications table read lifeguarding or lg_management instead of "Lifeguarding" and "Lifeguard Management". The Insurance Renewal Binder's chemistry table had the same pool problem. Both now print the names you see in the app.
  • Supervisors, managers and directors couldn't save a chemistry reading. They filled in the whole form and got "Your role isn't set up to log this" at the end. Supervisor, Assistant Manager, Manager and Director never included the deck tasks. People used to get them from a second Lifeguard role, and now that each person holds one role, choosing Supervisor dropped them. All four roles now include recording water chemistry, filing incident reports and completing checklists. Your existing roles were updated today, so nobody needs to be reassigned. If your organization had deliberately switched one of these off for a role, it was left off.
  • The warning when a role change removes permissions now says what they are. It used to list internal names like log_chemistry. It now reads "Log chemistry", so it's clear what the person will lose before you confirm.
  • Report dates could start on tomorrow. Opened in the evening, the MAHC Compliance Binder, the Insurance Renewal Binder and the Compliance Packet filled in their dates from the world clock (UTC) rather than your own, so after about 8pm Eastern the range ended on a day that hadn't happened yet. They now start on your own today.

September 27, 2026 — What you told us, the second batch

Added
  • Choose which checklists your facility uses. App Configuration → Units, Branding & Alerts → Checklists. Switch off the inspections you have no use for (a waterslide inspection with no waterslide, say), and they leave the dashboard for everyone in your organization. The Waterslide and Whirlpool inspections are now offered to every organization.
  • See whose shift you picked up. A shift you took over now says who you're covering for, and the whole chain when it changed hands more than once, so an instructor knows whose lessons they are teaching. Managers see the same on the shift. Names only; never why someone gave it up.
Changed
  • A new organization's supervisor report starts generic. It opens with a short list every pool shares, and says it is OnDeck's starter form so a director knows to add their own facility's tasks. Organizations that have saved their own form keep it.
  • The recognition lanyard carries your logo. The tag shows your organization's uploaded logo, or OnDeck's if you haven't added one, and no longer says "Safety First!".
  • The dashboard no longer claims MAHC compliance. Whether a facility is compliant is an inspector's call. The MAHC section references beside individual items stay.
  • The contamination-response venue is typed in. On the Formed Stool / Vomit Response, say which pool, the same way the Diarrheal response always has.
Fixed
  • "Open response checklists" opens one. Mentioning a code brown in a shift report offers the response checklists. Choosing one opened an empty page; it now asks formed stool / vomit or diarrheal, opens that checklist, and brings you back to your report with what you had written.
  • Dosing calculators only offer your own pools. With no pools set up yet, they showed another facility's venues and volumes. They now say where to add yours.

September 22, 2026 — Certifications, gear requests, and when a reading was taken

Added
  • The issuing organization fills itself in. Pick a certification type and the organization that awards it is already there — Lifeguarding gives American Red Cross, CPO gives Pool & Hot Tub Alliance. It is a picker over the bodies your organization has turned on rather than a free-text box, so the spelling that reaches a health inspector's copy is the same every time. Set it by hand and it stays set, even if you then change the type.
  • The staff member's email, on their certification card. Verifying a Red Cross card means looking somebody up by the address they trained under, and that address was three screens away in the Staff Directory. It now sits under their name with one click to copy. It only says "Copied" when the clipboard actually took it — otherwise it hands you the address to copy yourself, rather than quietly leaving you to paste the wrong thing.
  • File a gear request for somebody else. A supervisor can now raise an inventory request on behalf of a guard who has no account yet, or who is not the person who noticed. The request records who it is for as well as who filed it, and lands against the right branch.
  • Bold, italics and bullet points in shift-report notes. The three Notes boxes take light formatting now, because a handover that reads as one paragraph is a handover nobody reads. Tagging a colleague still works inside formatted text.
  • Attach a screenshot to a bug report. The feedback form takes images — a picture of the screen that is wrong is worth more than a description of it — and they arrive alongside the report.
  • Say that a venue is not lifeguarded. A whirlpool or a splash pad that nobody guards no longer appears in the zone-map picker as though it were waiting to be set up. Venues nobody has answered for are unchanged.
Fixed
  • *A water chemistry reading now records when it was taken, not when it reached us. Readings logged on a deck tablet that was offline were stamped with the moment the tablet next found signal — sometimes hours later. The filed shift report prints a time per reading from that stamp, so a morning's readings could print as five entries four minutes apart in the afternoon, with nothing at all against the morning. We checked your records: nothing needs correcting* — no reading in any organization is off by more than a few seconds, because the offline case has not yet happened in production.
  • Water chemistry history was listed in whatever order it arrived in. The page is sorted newest-first now, on both the web and the iPhone app, which is what it always appeared to be doing.
  • "Copy calendar link" could crash instead of telling you it had failed. On a connection the browser treats as insecure, the button that copies your shift calendar link threw an error rather than showing the "couldn't copy" message that was written for exactly that case. It now falls back to handing you the link.

September 21, 2026 — What you told us, and three things we found underneath

Fixed
  • Date fields were committing a day nobody typed. Editing an existing date on a staff member refused the second digit: type 31 and you got the 3rd, type December and it stayed January. Every day from the 10th to the 31st was unreachable that way, and it saved without an error, into hire dates and last days worked. We checked your records and found nothing wrong — no impossible dates, and the two patterns this bug would leave behind both point the other way. Dates of birth were separately rendering blank for anyone who had one, where a single keystroke could clear the date and switch off that person's under-14 scheduling limits. Both are fixed.
  • An ordinary edit could change when something happened. Correcting a typo in a chlorine reading could silently move when that reading was taken to the moment of the edit — and the same applied to when an incident was flagged, when an evaluation happened and when an award was granted. Nothing announced it and nothing recorded it. Eight kinds of record were affected. Editing a water chemistry reading now also requires the same permission as logging one, which it did not before.
  • A policy stored as a PDF said "No policy text recorded." It said that while the document sat underneath it as a small link. It now shows the document on the page.
  • The certifications page named a branch it was not counting. The tile said "All staff at branch" even with All Branches selected. It now says what it is actually counting, and names the branch when you have one selected — which it never did before.
  • A training session scheduled in advance could never be opened. You could post one, staff could sign up, and then nobody could be checked in against it — the only way forward was starting a second, unrelated session, which left the sign-ups stranded. There is now an Open check-in button on the session you announced. A scheduled session can also be cancelled without opening it first.
Added
  • Look up one person's whole history. The Staff Directory row menu now has View profile, which opens their certifications, evaluations, training and onboarding in one place — including every month of training, not just the current one.
  • Find certifications for people who are away. The certifications page has an Include inactive staff tick box, off by default, so a guard away at college whose card expires before they return can still be found.
  • Sign out when you file a shift report. Filing now offers it on the confirmation, which matters on a deck iPad several supervisors share.
Changed
  • Peer benchmark figures now say when they were worked out. They were shown with no date, so old numbers read as current ones.
  • Availability that has run out is no longer counted as current. A week with an end date that has passed now reads as expired rather than as set, which is a different thing from someone deliberately clearing theirs.

September 17, 2026 — Water Chemistry opens again

Fixed
  • Water Chemistry showed an error box instead of the page. From the evening of 16 September until the following morning, opening Water Chemistry gave "Something went wrong in Water Chemistry" to everyone, on every device — a change released that afternoon, part of the ongoing work to let you name your own roles, altered how the page checks whether you may use the dosing calculators and stopped the page loading at all. No readings were lost and nothing else was affected: everything already logged stayed exactly as it was, and every other section kept working normally, which is what the per-section error box is there for. What you could not do, for those hours, was open the section to log a new reading or look at the history. A check now runs before anything reaches you that catches this specific class of mistake — it had caused the same failure in Certifications three days earlier.

September 16, 2026 — The apps catch up (iOS & macOS 1.2.1)

Added
  • Documents on iPhone, iPad and Mac. The facility document store that opened on the web on 14 September — the operations manual, Safety Data Sheets, permits, training documentation, agreements — with its retention period, legal hold and recorded destruction, is in the apps. Under Pool & Deck → Documents. Policies with an attached document now show it too.
  • Send feedback from the app. Report a problem or suggest something from Account → About (⌘, on the Mac). Your version and device go with it; if you're on a flaky connection on the deck it waits and sends later rather than getting lost.
  • Return to service, in the app. Set the rule that staff back from a long absence must complete a return-to-service in-service before their first shift, preview who it would affect before switching it on, and see who still owes one under Certifications → Readiness.
  • The members' pool schedule, in the app. Guards on the deck can check lane times, aqua class times and closures without leaving OnDeck — which matters on a poolside iPad locked to one app, where there is no way to reach a browser. It shows your own scheduling website, so what a guard reads is exactly what a member reads, cancellations included, and it moves itself to the current week rather than sitting on whatever week it was set up on. Only the schedule is reachable: links out to the rest of the site are refused, so a shared iPad stays on the schedule rather than a signup or payment page. Turn it on under Settings → App Configuration → Member Pool Schedule, then paste each branch's schedule address.
  • Scheduling on iPhone, iPad and Mac, matching the web schedule released on 1 August. Your shifts, your availability, time off, and open shifts you can claim — and if you build the schedule, the whole authoring side travels with you: periods, templates applied across several days, publishing, call-outs, and telling someone their shift moved. You can also say you're running late from the phone in your pocket, which is where you'll be when you are.
  • Incident Reports on iPhone, iPad and Mac, rebuilt to match the web release on 2 August. Aquatic emergencies carry their MAHC §6.4.1.4 record, injuries are coded so they can be counted rather than read one by one, and conduct, security, property and child-safety reports each ask only what applies to them.
  • Archive a former staff member, and bring them back. Somebody who leaves no longer has to be deleted to get out of your way — archiving keeps their certifications, training and records intact for your audit trail, and a returning seasonal hire is restored rather than re-entered.
  • Certifications from different certifying bodies now count as what they are. An American Red Cross lifeguarding certificate and its equivalent from another body satisfy the same requirement, instead of one of them quietly reading as missing. Your organization picks which bodies it recognises under Settings → App Configuration. New certifications reach the app without waiting for an App Store update.
  • Choose your Home Screen icon on iPhone and iPad — follow your device's light/dark appearance, or pin the icon to one. Under Account → Appearance → App icon.
  • Your app version, on screen. Account → About shows the exact version and build, with a "Copy version details" button that puts the version, device and OS on your clipboard for a bug report.
  • Swim Test Log on iPhone, iPad and Mac. Look up a swimmer, record a test and hand out a wristband from the deck — the same module that went live on the web on 26 July.
  • Conditioning per discipline on iPhone, iPad and Mac, matching the web behaviour released on 17 July.
  • Your lanyard on iPhone, iPad and Mac, doing whatever it started doing on the web on 30 July. Still worth a poke.
  • Training approvals on iPhone, iPad and Mac, matching the web behaviour released on 28 July. An "Awaiting Approval" list at the top of Training, and your own entries marked Pending approval until they're signed off. Until this reaches you, the app still counts training the web is already holding back — the compliance reports and packets already hold it back either way.
Changed
  • "Compliance roles" are now "credential tracks" in the apps too, matching the web, and the track that requires ARC Lifeguard Management is called that rather than "Supervisor" — it was never the same thing as the Supervisor role, and the old name read as a contradiction for every senior guard who holds the credential without supervising anyone.
  • The Mac app now behaves like a Mac app. Forms, view switchers and list rows use native controls; closing the main window no longer strands you (it reopens from the Dock or the menu bar); and the dashboard, certifications filters and long help text were rebuilt for a pointer and a large screen.
  • The Mac app is substantially faster on large rosters. Training, growth track and analytics are now evaluated once per update instead of repeatedly while scrolling.
  • The Growth Track now scores six categories, with recognition alongside them rather than inside the average. Bead awards and commendations still show — they have their own card — but they no longer pull the score itself up or down, so the aggregate reflects the things a person is assessed on.
  • The onboarding checklist asks for the certificate, not a tick. The three "certification collected and verified" lines are retired: the record now requires the position's certifications to be uploaded and verified, which is a fuller record than a checked box. Creating the staff member's SGA account and issuing their membership access tag are now steps in their own right.
Fixed
  • Turning off Scheduled Checklists now turns it off everywhere. The module switch under Settings → App Configuration was respected on the web but not in the app, so an organization that doesn't run scheduled checklists still saw the item on iPhone, iPad and Mac.
  • Opening an incident in its own window works again on Mac. Right-click a report in Incidents and choose "Open in New Window" to put two side by side — the way you'd read a pattern across a season rather than one report at a time. The rebuilt incident screen arrived without it, so 1.2.0 still has the gap and the build behind it puts the window back.
  • A category your organization has never used no longer counts against your staff. The apps scored every category, so one your organization simply doesn't run — in-service sessions, say, or professional development — was scored as a row of zeros against everyone. Where two such categories carried a large share of the weight, nobody could reach a reasonable score no matter what they did. A category with no records anywhere in your organization is now left out of the average. This is an organization-level rule only: someone who skipped an in-service their colleagues attended still scores zero for it, because they've earned it.

September 16, 2026 — Your roles, by name

Fixed
  • Inviting someone as a Head Guard now makes them a Head Guard. The invite dialog has always asked which role the new person should have, and the answer was recorded but not applied — everyone arrived on a tier worked out from a fixed six-level scale instead, so a role your organization named itself could not be granted by invitation at all. The role you pick is the role they get. If it is deleted before they accept, they arrive the old way rather than with nothing.
  • Out-of-range chemistry alerts are delivered more reliably. When a reading outside its range is flagged — whether a guard logs it on the deck or the overnight scan spots a trend building over days — OnDeck sends a message to your Slack or Teams channel and a push notification to managers and up. Those alerts were being started but could be dropped before they were actually delivered, most likely at the busiest moments, and nothing anywhere indicated that one had gone missing. The flag itself was always recorded and always visible in the app — only the outgoing notification was affected.
Changed
  • The support banner names your role the way your organization does. When OnDeck support is looking at your facility to help with something, a banner across the top says whose view they're seeing. It described people by a fixed tier — so a Head Guard was announced as a "Supervisor", and a swim instructor as a "Lifeguard". It uses your own role names now.
  • "View as" now offers your organization's own roles. The picker used to list six fixed tiers — Lifeguard, Swim Instructor, Supervisor, Manager, Director, Administrator — whatever your facility actually calls its roles. It now lists the roles you set up, by the names you gave them, so a facility with a Head Guard and a Lead Guard sees both and a facility with neither sees neither. You are offered the roles you are senior to, and previewing one shows you what that role can see, resolved from its real permissions rather than from a generic tier that resembles it.
  • The role badge in the top bar shows your role's real name. It had been showing whichever of the six tiers your role sat closest to, so a Head Guard read "Supervisor" and a Summer Staff read "Manager". It now shows what your organization calls your role, and turns blue while you are previewing somebody else's view — which is the fastest way to notice that a "missing" page is missing because View-as is still on.

August 2, 2026 — Incident reports, rebuilt

Added
  • Incident reports now know what kind of incident they are. Reporting was one long form that asked a drowning and a stolen bag the same questions. It is now built around the record each type actually has to produce: an aquatic emergency carries its MAHC §6.4.1.4 rescue record and its AHJ notification deadline, injuries are coded by body part and type so a year of them can be counted rather than read one by one, and conduct, security, property and child-safety reports each ask only what applies to them.
  • Incidents you can total up. Because injuries and causes are now recorded as coded fields rather than prose, the incident view can show you what actually happens at your facility over a season — the kind of summary an insurer or a health department may ask for, which was hard to produce before.
Fixed
  • The staff certification PDF said "Branch: br_4f12aa88bc0e…". The export was handed the branch's internal id where it wanted the name, so the header printed an identifier — or "all" for the all-branches view. It now prints the branch name, and the saved file identifies the organization, the scope, any status filter you had applied, and the date.

August 1, 2026 — Settings that remember you

Added
  • Staff scheduling, rebuilt. Scheduling has been rebuilt from scratch and is no longer the version that shipped in June. Schedule periods can now be a whole season rather than a single week, and you can step week by week inside one; a template can be applied across several days at once; publishing announces itself to the people on it; and someone whose shift moves is told it moved. Staff can call out, say they're running late, and subscribe Apple or Google Calendar to their own shifts.
  • Scheduling now checks what it can, and says what it can't. It catches certifications that lapse partway through a period you're scheduling into, shows you who else is on with you, marks holidays before the schedule goes out, and applies youth employment rules for Massachusetts and Tennessee. Where a youth rule can't actually be checked from what OnDeck knows, it now tells you that rather than implying it passed.
  • Light or dark now follows you, not your browser. Your appearance choice is saved to your account, so setting dark mode at the office desk also sets it on your phone and the deck iPad. On a shared front-desk computer, signing out no longer leaves your theme behind for the next person.
  • Your branch stays put. If you can switch branches, the one you pick is remembered per organization — no more landing on whichever branch happens to sort first after every page load.
  • Administrators can now turn any module on or off. Settings → App Configuration → Modules lists everything, not just the optional add-ons. If your organization doesn't run a conditioning program or logs incidents somewhere else, you can take those out of the navigation yourself. Turning a module off only hides it — nothing is deleted, and switching it back on brings your data with it.
Changed
  • A new look for signing in. The sign-in, signup, email-link and choose-your-organization screens now use the OnDeck wordmark, colours and type instead of a generic blue — arriving from the website, signing in, opening the link in your inbox and landing in your organization now all look like the same product rather than three different ones.
  • Fresh app icons. The browser-tab icon is now the squircle app mark on both the main app and the platform admin console, which previously had no icon at all.
Fixed
  • Signing in with an org picker you didn't need. If you belong to more than one organization, you were shown the picker on every single sign-in even when your session already knew which one you were in. It now takes you straight through.
  • Email addresses are tidied before we look them up, so a stray space from a paste or a capital letter from a phone keyboard no longer gets in the way of signing in.
  • The signup page was wrong about its own link. It said your sign-in link expired in 10 minutes; it's actually good for 3 days. It now says so.
  • "Send a new one" on the signup screen now actually sends one instead of just returning you to the form.
  • Visiting the sign-in page while already signed in now offers to take you back into OnDeck rather than showing an empty sign-in form.

July 31, 2026 — Your season, on paper

Added
  • Your season, in numbers. Growth Track now shows what you actually did over the last twelve months — water tests logged, swimmers passed into deep water, checklists closed, training hours. Nobody knows they tested the water four hundred times until something counts it. If you're new, it shows your firsts instead: first shift signed off, first water test, first training.
  • The team's year, for directors. The same figures for a whole branch or the whole association, with the line that makes them mean something — "that's a water test about one every two hours". Team totals only: OnDeck does not rank your staff against each other, and this will not either.
  • Your achievement PDF now says something that's only true of you. A "Worth Noting" line at the bottom — most days it's the water tests or the swimmers, but if you went in this year, that's what it says.
  • Print the Recognition Beads card. The chart the bead list was built from, handed back as a deck-ready poster, with your criteria on it if you've edited them. Under Awards, beside the bead legend.
  • Print the month's shout-outs for the staff room, and a "Deck Clear" certificate for a branch that closed a calendar month with no flags raised. The certificate prints the numbers it's based on, so it states only what the record shows — and a month where nothing was logged doesn't qualify.
  • The Knowledge Base knows more than it lets on. Not everything worth asking is a help topic. Ask anyway — one or two questions have answers that aren't in the contents. And if you're the sort of person who opens the developer tools, there's a hello waiting for you there.
  • The dashboard notices things. Every so often it will remark on something about your pools that nobody typed in. It won't happen often — that's rather the point.
Changed
  • Empty screens now tell you something. Every "No records found" in the app was rewritten to say what's actually absent and what to do about it. Screens that report on safety — chemistry, incidents, interlock tests, expiring certifications — were deliberately left plain.

July 30, 2026 — Something on your lanyard

Added
  • There's something hidden on your lanyard. Your beads on the Recognition screen aren't quite as fixed in place as they look. Have a poke around.

July 28, 2026 — Logged training now waits for approval

Added
  • Training you log is reviewed before it counts. Recording an in-service signs off someone's monthly compliance, so it now waits in an Approvals list on the Training screen until a manager decides on it. A whole session is one decision — approve a forty-person in-service once, not forty times, with the attendee list one tap away so you can see exactly whose compliance you're signing off.
  • You can see why your hours don't add up. Your own entries show Pending approval until someone signs them off, and Rejected with the reason if they don't. Rejecting requires a reason, so a training that needs fixing comes back with an explanation instead of quietly disappearing.
  • Who can log and who can approve is now yours to set, per role, under Settings → Roles & Permissions. Logging defaults to supervisors and above plus LGIs; approving defaults to managers and directors.
Changed
  • Nothing you've already recorded was affected. Every training logged before today counts exactly as it did, marked approved with its original date. Months already closed are untouched.

July 27, 2026 — Tell us when something's wrong

Added
  • Report a bug or request a feature without leaving OnDeck. Help → Send Feedback, on the web app. It records which screen you were on and the exact version you're running, so a report no longer depends on anyone remembering which build they were using — or on describing their setup over the phone.
  • Every OnDeck surface now shows its version. The web app and the admin console display the running version, so a problem can be traced to an exact release.

July 26, 2026 — Swim testing

Added
  • Swim Test Log (Test · Mark · Protect). Record a swimmer's ability test, assign a wristband colour, and see who's been tested and when. Includes a pool-deck kiosk mode for running tests on an iPad at the water's edge, and a per-manager record count so supervisors can see testing volume at a glance. Live on the web now; the iPhone, iPad and Mac versions arrive with the next app release. Opt-in — ask us to enable it.
Fixed
  • Expired-certification alerts no longer count orphaned records. Deleting a staff member could leave certification rows behind, which kept appearing in the dashboard's expired count.

July 18, 2026 — Recovering from a deploy without losing your place

Fixed
  • A deploy no longer dead-ends the open app. If the app updated while you had it open, the next navigation could fail on a stale file and leave you stuck. It now recovers automatically — and returns you to the page you were heading to, rather than the dashboard.

July 17, 2026 — Conditioning by discipline

Added
  • Conditioning is tracked per discipline. A staff member logs one record per month per discipline (swim, run, brick), instead of a single combined monthly entry, so a lifeguard's swim conditioning is no longer hidden behind their running.

July 16, 2026 — Invitations, exemptions, and admin on a phone

Added
  • Sending someone their login is now a visible button on their profile, instead of a swipe action people never found. Includes a copyable link that works for 24 hours, and a bulk invite for a whole roster at once.
  • Standing training exemptions. Excuse a staff member from a requirement with a recorded reason, and the compliance view shows why someone is excused rather than silently passing them.
Fixed
  • Certification imports no longer split one person into two records. A labelled CSV email column (Jane Doe <jane@…>) was parsed as a second person.
  • Backups now cover the per-org tables that were missing. The known gaps are closed, and an omission now fails loudly instead of quietly shipping an incomplete backup.

July 15, 2026 — Training Report

Added
  • Monthly Training Report PDF for leadership — a printable summary of in-service training across a branch for the month.
Fixed
  • Compliance no longer counts removed staff, and new hires are prorated correctly for their first partial month.

July 13, 2026 — Long forms remember where you were

Added
  • Log Training autosaves as you go, on web, iPhone and iPad. Start a training log on your phone and finish it on the iPad. Drafts are cleared when you sign out.
Fixed
  • Roster imports and invitations no longer create duplicate staff records for someone already on the roster.

July 11, 2026 — OnDeck on Apple TV, names, and a Lock Screen widget

Added
  • OnDeck for Apple TV. Put a live board on the wall: who's on stand, current water chemistry with out-of-range readings called out, open flags, and certifications coming due. Two modes — an internal ops board for staff areas, and a public board for the lobby that shows members an all-clear rather than raw numbers.
  • First and last names are recorded separately, so names appear correctly on lanyards, rosters and reports instead of being split on the first space.
  • Certifications expiring soon, on your Lock Screen (iPhone and iPad).
  • Drop in a photo from your phone for inventory — HEIC images from an iPhone are converted in the browser, so an upload no longer fails on format.
Fixed
  • Editing a signed policy asks staff to re-acknowledge it. The version is bumped and the signed text is snapshotted, so each sign-off record shows the version that was signed.
  • A lanyard name tag never shows an email address, and compound first names ("Mary Beth") stay intact.
  • Accounts with a blank name no longer fall back to showing an email address in the interface.

July 10, 2026 — Shout-outs and service anniversaries

Added
  • Shout-outs. Peer recognition — staff can recognise each other, with a full moderation queue for directors. Opt-in per organization.
  • Service anniversaries and a rendered lanyard. See your lanyard (name tag, whistle and beads) and track milestones with "N Years of Service" beads as your team hits them.
  • Red Cross certificates fill themselves in. Drop the certificate PDF onto a certification record and the number, issuer and expiration date are read from it, on your device — the PDF isn't sent anywhere to do it.

June 29, 2026 — Demo sandbox & backup hardening

Added
  • Fully-seeded prospect demo sandbox. Every module — chemistry, compliance, inventory, training, scheduling, zones, and reporting — now comes pre-populated with realistic sample data spanning several months, so a prospect exploring a demo org sees the product working end-to-end (populated charts and all) instead of empty tables.
Fixed
  • Backups now include incident reports, roster shifts, and email-digest subscriptions. These live tables were missing from the backup set, so a restore could have lost user-submitted safety/incident reports; they're now captured.
  • Hid the "Sync from WhenToWork" staff-import button until the integration ships — it previously pointed at an endpoint that doesn't exist yet and would error.

June 28, 2026 — Native iOS / iPadOS app: full parity

Added
  • OnDeck for iPhone and iPad. A native iOS/iPadOS app with an adaptive split-view shell, covering the core of the OnDeck feature set: daily chemistry logging, MAHC interlock testing, incident reports, checklists, the staff directory and certifications, cert imports with fuzzy name matching, career reviews and evaluations, recognition beads, onboarding, zone management with a native drawing canvas and drill response-time stopwatch, compliance binders, the chemistry kiosk, and Settings. Sign in with a magic link or a passkey (including conditional-UI autofill), work offline with a write outbox that flushes on reconnect, capture photos and signatures, and export PDFs from the device.
  • Chemistry draft autosave so a half-entered reading survives a backgrounded app or a flaky pool-deck connection.
  • Printable letter-size safety-concern poster generated as a PDF directly on the device.
  • Push notifications for director flags and compliance events, humanized so they read as plain English rather than raw IDs.
  • Siri / App Intents shortcuts plus a full VoiceOver and Dynamic Type pass for accessibility.
Changed
  • Billing is web-only in the app. Plan management and trials live on the web; the iOS app focuses on day-to-day operations.

June 26, 2026 — Platform-admin command center

Added
  • Platform-admin dashboard overhaul. The admin app now opens on a usage homepage with at-a-glance health, plus dedicated troubleshooting and billing views. Per-tenant health metrics surface right on the org list.
Changed
  • Denser, more usable org list. Row actions collapse into a "Manage" button with an overflow menu, and the table now uses the full screen width without wrapping.

June 23, 2026 — Equipment & uniform inventory

Added
  • Equipment & Uniform Inventory module (opt-in). Maintain a catalog of uniforms and gear with per-item photos, track sizes by staff, log receiving and issuance, and pull summary and issued-items reports. Includes a full issuance history log. Available on web and iOS.

June 20, 2026 — Compliance history & audit trail

Added
  • Frozen historical compliance records. OnDeck now captures frozen monthly compliance snapshots and dates each staff member's standing as of any past point, so you can answer "what did the records show on this date?" with a record that doesn't shift under you.
  • Compliance change-log view — the read side of the audit trail — showing the history of writes to compliance records.
  • Append-only audit trail. Compliance-record writes are logged to an append-only audit log, with database-level protection against after-the-fact edits.
  • Excused / exempt handling. Mark staff as excused or exempt for leaves of absence, medical reasons, or new-hire proration, with explicit reasons that show in compliance views.
  • New-hire proration setting so recently-hired staff aren't counted out of compliance for requirements they haven't had time to meet yet.
  • Per-staff training transcript export for an individual's training record.
  • Facilitator credit in the training overview, with clearer denominators so the "X of Y trained" math is unambiguous.

June 19, 2026 — Training library, QR attendance, policies & minor labor law

Added
  • Training-Topic Library (opt-in). An in-service topic bank with an assemble-a-session workflow. Available on web and iOS.
  • QR-code training attendance (opt-in). Staff scan a rotating, signed QR code to mark themselves present at a training session. Available on web and iOS.
  • Aquatic policy-acknowledgment tracker (opt-in). Publish policy documents and track which staff have acknowledged them. Available on web and iOS.
  • Minor labor-law guardrails. Per-branch facility address with jurisdiction auto-fill drives DOB-based shift-limit guardrails for minor staff. Facility addresses also print on reports. Available on web and iOS.
  • Optional Modules toggle in Settings → App Configuration. Admins can enable or disable Inventory, Scheduling, and Training per org so the navigation only shows what a facility actually uses.
Changed
  • Monthly Training gains a top-row agenda upload, custom tags, and named facilitators.

June 15, 2026 — Launch readiness & billing

Added
  • Self-service 45-day trial signup is live, with live-mode Stripe billing behind it for paid plans.
  • One-tap magic-link invitations that greet the new staff member by name.
  • "No Action Required" state on the dashboard when nothing is flagged, with an explicit Action Required block surfaced for every branch.
Changed
  • Staff directory cleanup. Condensed actions, normalized branch labels, a sortable Growth Track column, and a layout pass that removes horizontal scrolling on the directory and edit forms.
Fixed
  • Dashboard cert alerts no longer double-count. Cert issues stop appearing twice in Action Required, and the Compliance Gaps denominator now matches the Cert Tracker.

June 13, 2026 — Staff scheduling, water-chemistry tools & certs

Added
  • WhenToWork-class staff scheduling (opt-in). Build availability, auto-fill shifts, materialize a scheduling period, and publish. Turn it on from onboarding or platform admin.
  • Water-chemistry calculator suite. CYA dosing and reduction, the FC:CYA ratio, salt dosing, and an LSI saturation gauge, with a units system applied consistently across dosing outputs and pool volumes.
  • Maintenance & Operations log for backwashing, water fills, chemical deliveries, basket cleaning, media changes, and equipment service.
  • DPD testing-technique animations that walk a guard through the reagent test steps.
  • Per-pool measured fill rate. A bucket test replaces the old pipe-diameter estimate for more accurate manual fill timing.
  • CDC contamination (fecal/vomit) response log with incident types and photo persistence.
  • Non-aquatics compliance role for land-side staff, plus friendly cert-type labels and a place to manage non-standard certs.
  • Scheduled (recurring) checklists — assignable opening, closing, and inspection checklists.
  • Dark mode across the web app, kept on-brand so the navy sidebar and brand colors survive the theme.
Fixed
  • Cert imports recover skipped staff via robust name matching, and cert exports (CSV and PDF) now respect the on-screen filters.
  • Cert PDFs render inline in Safari instead of blanking out.
  • The app auto-recovers from stale code chunks after a deploy instead of erroring on a half-loaded page.

June 8, 2026 — MAHC interlock testing & iOS foundation

Added
  • Monthly MAHC controller interlock testing. Log the required monthly interlock test per controller, in line with MAHC guidance.
  • Chemistry trends widget on the dashboard (Manager+), showing recent readings at a glance.
  • Bulk submission export and additional safety-concern filters.

May 14, 2026 — Phase 6 sweep

Added
  • White-label logo upload. Admins can now upload a PNG, SVG, or JPEG (up to 500 KB) under Settings → Branding. The uploaded logo replaces the OnDeck wordmark in the sidebar for every user in the org. Replace and Remove actions; SVG uploads are scanned for scriptable content before saving.
  • Live QR code on the Safety Concern poster. No more pasting in an externally-generated QR — the poster renders the QR client-side from your branch's report URL. Uses high error correction so a poster taped above a chlorine drum is more likely to still scan.
  • Insurance renewal binder. Same one-click export pattern as the MAHC binder, but defaulted to 12 months and reorganized for an insurer audience: incident summary on top, guard credentialing rollup, lifeguard:patron ratio history sampled from chemistry bather-load entries. Find it under Compliance & Reports → Insurance Renewal Binder.
  • Slack / Teams flag alerts. Cross-post director flags to a Slack or Teams channel via the customer's own incoming webhook. Settings → Integrations to wire it up. Includes a "send test message" button so you can verify the webhook before waiting for a real flag. Both vendors are free to use; OnDeck doesn't charge extra.
  • WhenToWork / Sling roster integration (scaffold). Configuration UI, nightly cron, storage, and read endpoints are all in place. The actual vendor API calls are stubbed and will go live once a customer is ready to test against a real account.

May 14, 2026 — Phase 5 sweep + Phase 3 closeout

Added
  • Pending-invite banner on the Dashboard. If you were invited to an organization but the auto-accept couldn't process it (your email isn't verified yet, or the invite is missing its staff-ID marker and needs an admin to reissue), the dashboard now tells you about it. Click "Accept invitation" to retry, or "Not now" to dismiss for the session.
  • Bulk archive / resolve / reopen for Contact Submissions in the platform-admin inbox. Select submissions with the new checkbox column (or use the select-all in the header), then use the floating action bar to transition all of them in one call. Archive / Resolve are always available; Reopen appears when viewing archived or resolved submissions. Capped at 200 per call.
Changed
  • Audit log explorer in platform admin now supports filtering by admin email (substring search), target ID, and time range, plus Prev/Next pagination with a total-count badge. Clicking a target ID in the table pivots the filter to "show me everything that touched this target." Page size is 50.
  • CertTracker and Director Flag history now paginate at 25 per page. CertTracker also resets to page 1 when filters change, and CSV exports still see the entire filtered set — only the rendered cards are clipped to a page.
  • CSV cert imports now parse off the main thread. Large certificate_details_full.csv files (5000+ rows) used to freeze the tab for several seconds during the parse; the tab stays fully responsive now while a small "Parsing CSV in the background…" banner shows progress.

April 27, 2026

Added
  • F1 — Public status page at status.ondeckaquatics.com. Live system state for API, Tenant App, Admin App, Auth, Database, Email, Storage, and Marketing components, plus 30-day uptime % and the last 30 days of incidents and scheduled maintenance.
  • F2 — Self-service trial signup. Visit app.ondeckaquatics.com/signup to start a 45-day free trial with no credit card required. Magic-link sign-in, then a one-screen org-creation form that drops you into the 6-step onboarding wizard.
  • F3 — Compliance gap email digests. Director+ users can subscribe in Settings → Email Digests to a daily/weekly/monthly recap of expired certs, expiring certs, unacknowledged flags, and recent out-of-range chemistry. Customizable thresholds and a built-in preview button.
  • F4 — Mobile-first chemistry kiosk at /kiosk/chemistry. Full-bleed pool-deck UI for a phone clamped to the wall — pick pool, log reading, done in three taps. Auto-rotates back to input after 30s.
  • F5 — Offline submission queue. Forms submitted while offline are saved locally and auto-sent when the connection comes back. Banner surfaces queued submissions with a manual retry button.
  • F6 — Anonymous safety reporting at /report-concern/<your-org-slug>. Public submission form for staff to flag near-misses, equipment issues, or workplace concerns with optional name and optional email. Director+ triage panel under Compliance & Reports.
  • F7 — Cross-facility anonymous benchmarking. Opted-in orgs see peer percentiles on the dashboard for chemistry means and flag acknowledgement times. Two-tier opt-in (org + branch) with a k-anonymity floor of 5 contributing branches per metric.
  • F8 — Auto-suggested corrective action. When a chemistry reading goes out of MAHC range, the "Corrective Action Taken" textarea pre-fills with the standard MAHC-aligned response. Editable — the playbook is a starting point, not a fill-in form.
  • F9 — Chemistry trend anomaly detection. Nightly background scan flags slow drifts (a slowly creeping combined chlorine, declining stabilizer) often before they cross a hard threshold. Pure stats — every flag carries the z-score and slope numbers so an inspector asking "why did you flag this?" gets a concrete answer.
Added
  • Lifeguard "My Day" widget on the dashboard with three tiles: today's chemistry status (4-hour MAHC §5.7.3.1.1 cadence), training hours this month, and submissions filed in the last 7 days.
  • MAHC compliance binder export under Compliance & Reports → Compliance Binder. One date range, one button, one print-ready PDF covering chemistry logs, lifeguard observations, every checklist submission, certifications, and active staff.
  • Printable safety-concern poster at /poster/safety-concern for printing the F6 submission link as a break-room poster.
  • Per-org branding. Settings → Branding lets admins override the default OnDeck navy + aqua palette with primary and accent hex colors.
  • 30-day uptime stat on the status page.
  • Platform-admin Status tab (admin app only) — post incidents, flip component state, and append updates from a form instead of curl.
Changed
  • /signin-v2 → /signin. Old URL still works.
  • App-wide mobile-friendliness pass: outer padding shrinks on phones, multi-column input grids reflow to a single column, in-app tables gain horizontal scroll wrappers.
  • Kiosk auto-pins to the configured branch on single-branch orgs; shows a one-time picker on multi-branch orgs.
  • App Configuration: branches, pools, pool volumes, chemicals, and controllers now persist server-side and sync across devices.
Fixed
  • Stopwatch DRT timing no longer flips a 9.95s pass into a 10.0s fail.
  • Dashboard overdue thresholds now read from compliance config instead of being hardcoded.
  • ManagerView bulk PDF export caps at 25 to avoid filling the user's filesystem with a flood of separate downloads.
  • Org-purge confirmation accepts NBSP-pasted org names (was strict- equality silent-fail).
  • Onboarding strips the invite-token URL parameter before redeem so a hung redeem doesn't leave the token replayable in browser history.
  • Admin "delete all staff" replaces window.prompt with a proper modal that doesn't block the page.
Security
  • Discount-code regex anchored explicitly (HTML5 pattern is implicitly anchored, but the ^…$ makes the intent obvious and matches the server-side regex).
  • Stripe customer + subscription IDs in the admin dashboard now render masked by default with a "reveal" button.
  • Crash + unhandled-error monitoring posts to a Worker route for observability (vendor-neutral; swap for Sentry if/when adopted).
  • Per-IP rate limits on invitation create/redeem and self-serve signup endpoints.
  • Tenant-side audit-attribution helper (getImpersonatingAdminUserId) available so every audit emitter can record the real admin during impersonation instead of the sentinel user.

Have a request or found a bug?

We build OnDeck around what aquatics teams actually need. Tell us what would help, or flag anything that's broken.