Skip to main content
icewright

Help

Everything on one page — use your browser's find (Ctrl/Cmd-F) or jump straight to a section:

Dashboard & Today Set up a rink Enter depth readings Maintenance log & reminders Supplies Read your topograph Reports & alerts Bookings & billing Leagues & teams Competitions Members Sales, customers & waivers Self-service sign-ups Google Calendar Owner & team roles Painting reference Community & Grand Prix Concussion Glossary FAQ User Manual (PDF) Front-Desk Cheat Sheet (1-page PDF) ▶ How-to: set up a rink (45-sec narrated video) ▶ How-to: phone capture (30-sec narrated video) ▶ How-to: taking a payment (20-sec narrated video) Email the site administrator

The Dashboard & Today

The Dashboard is one card that answers "what's happening at my rinks right now?" Each rink you own or share appears as a single block: its name and management actions (Open, Duplicate, Archive, Delete) on the header line, then the Today row beneath.

The chips are the at-a-glance state, and every one links to where you act: the latest ice check (green when clean, red with the thin-spot count when not), overdue maintenance ("Resurface 3d overdue"), low supplies ("2 supplies low"), pending sign-ups awaiting your approval (ice requests, registrations, entries), and the day's front-desk take. Below the chips, today's ice schedule shows as color-coded rows with three badges: ON THE ICE for the slot happening right now, unpaid when the group on the ice owes money, and no waiver when tonight's private rental has nobody signed on file.

Facilities — one building, several sheets. If your building has more than one sheet of ice, group those rinks into a facility: create one at the bottom of the Dashboard (name it after the building), then pick it in each rink's Facility dropdown. Grouped sheets appear together under the building's header, which also carries the side-by-side schedule — every sheet's bookings for a day in parallel columns, the whole building on one screen. And plan limits count facilities, not sheets: a 6-sheet complex counts once, exactly like a single-sheet rink. Ungrouping never touches rink data.

The live Today strip (chips and schedule) is part of Pro, alongside the operations suite it reads from; the rink grid and management actions are free for everyone. With more than four rinks a search box appears; archived rinks tuck into a fold at the bottom, and Add new rink lives at the end of the card. Times are your local day — the schedule and the till both follow the clock on your wall, not the server's.

Set up a rink

From the Dashboard, use Add new rink: name it and pick the drill-point layout your facility uses — SZ-29, FMC-27, ORFA-25, or Custom (click your own points onto the rink, up to 500). On the rink page you can then set the sheet size (NHL, IIHF, or custom dimensions), place the resurfacer door (12 standard spots or click the boards for a custom position), and drag on your logos — they appear in every topograph and video. Everything scales to your true dimensions.

Forty-five seconds from Create to first drill check, narrated.

Changed your measurement scheme mid-season? No problem — each date column remembers the layout it was measured with (the app calls these layout eras), and old columns keep rendering correctly.

Finding your way around a rink. Every rink page has one header with seven buttons. Three switch views in place — Maintenance (depth readings, the maintenance log and reminders, base profile, and topograph — the default view), Design (sheet size, door, logos, measurement points, painting reference), and Team (invite your crew). Four open that rink's operations pages: Bookings, Leagues, Competitions, and Sales. The same header rides along on every page, so you're never more than one click from any part of the rink.

Enter depth readings

Depth readings live in the rink's Maintenance view, right at the top. Three ways to enter them, all interchangeable:

At a desk — the Depth readings grid: one column per date, one row per point. Hit + Add date column and pick which measurement-points layout that column uses (so you can mix schemes in the same grid — say, your usual SZ-29 alongside an occasional custom-point survey — each column just has as many rows filled in as its own layout needs), then type and Save data. Every column header shows the layout it was measured with, plus an optional time of day for readings taken more than once a day. Or fill the Excel/CSV template and use Import spreadsheet.

On the ice (Basic) — Mobile Phone Capture opens a phone-sized page: big keypad, one point at a time, the current point pulsing on the rink map. Progress is kept on the phone even if you lose signal or battery — and the page now works offline: add it to your phone's home screen and it opens like an app even in a dead zone out on the ice. (The Concussion App works offline the same way.)

30 seconds of the real flow, narrated.

With a Bluetooth caliper (Basic) — Upload Bluetooth readings adds a column dated today and fills it point by point. Pair the caliper (iGaging EZ-Data and similar) as a Bluetooth keyboard and press its send button at each point — works on laptops, iPads, and iPhones. Chrome and Edge can also connect BLE calipers directly.

The caliper types, the app steps point to point.

Depths display in inches or millimetres — set once under Profile → Units. Your stored data never changes, only the display. Grid entry and spreadsheet import are free for everyone; the on-ice capture modes (phone and Bluetooth caliper) are part of Basic.

Maintenance log & reminders

Below the depth grid in the Maintenance view, the maintenance log records the rest of the ice work: resurfaces, edging, paint and lines, deep cleans, ice builds, and equipment service — each with an optional water temp, a 1–5 ice-condition rating, and notes. The activity log keeps the season's history; everyone on the rink's Team shares one log.

Reminders keep you honest: set how often a task should happen ("Resurface every 3 days") and the app computes the next due date from your log — overdue items are flagged red, and each reminder has a GCal link to drop the due date onto your Google Calendar. The Depth check row is pinned at the top of the same list — it's the rink's drill-check cadence, and it's the one that also drives the Dashboard banner and email nudges (the owner sets it right there).

Resurfacer log — the "Resurfacer Blade Change and Grease Log" off the Zamboni-room wall, digitized. Add each machine by name ("Olympia", "Zamboni 552"); every entry records who, when, and the machine columns — Blade and Grease checkboxes by default, and the owner can Edit fields per machine: rename them, remove them, or add checkbox/text columns (oil check, hours reading). Renaming a field keeps all its old entries. Import rows from a paper sheet takes lines pasted straight off the old clipboard (Name | Date | Time | Blade | Grease — dates like 11/13/25, checks as Yes/No or ✓), and Print blank sheet makes a fresh 24-row wall copy with the machine's current columns, because the clipboard isn't going away.

Ice Plant Log (compressor room) — refrigeration rounds: temps, pressures, and which compressors are running. A rink can log multiple plants (a CO2 rack, a Freon chiller, an ammonia system), and every plant's columns are fully customizable — number fields for readings, checkboxes for running/OK flags, text for notes; add, delete, and rename to match your instrumentation (owner-only, like all configuration). The default template is a real CO2 six-compressor sheet: Ice Temp Average, Cold Glycol Supply/Return, Drop Leg Temp/Press, Rec Press, Comp 1–6 Running, Sub Floor Temp, and CHW Sup/Ret. It has the same paper-sheet import (columns Date | Time | Staff | readings…) and a printable blank sheet that comes out landscape, because plant logs are wide.

The Maintenance view is long on purpose — everything about the ice in one place. The sticky Jump to strip (Readings · Log · Reminders · Resurfacer · Ice plant · Supplies · Base profile · Topograph) gets you to any section in one click.

Choosing Depth measurement as the activity points you to the depth grid above (or Mobile Phone Capture) — readings flow into the rink's data and ice check automatically, so depth is never typed twice. Seasonal work lives in the Ice-In / Ice-Out checklists.

Supplies

Below the maintenance log, the Supplies card tracks the consumables a rink runs on — ice paint, Zamboni blades, janitorial stock, HVAC filters, first-aid kit contents. Each item has an on-hand count (adjust with the −/+ buttons as things get used or restocked) and a par level; anything below par flips to a red LOW chip and shows up on the Dashboard's Today row.

When it's time to buy, Print order list makes a clean checklist of everything below par — on-hand, par, the quantity to get back to par, and your vendor note, with a checkbox per line — and Order CSV exports the same for email or a spreadsheet.

Tracking only, by design: the app tells you what's low before it runs out; you buy however your rink buys today. No vendors, purchase orders, or ordering accounts to manage.

Read your topograph

Generate MP4 renders your dates as an animated topograph: readings are interpolated across the whole sheet and drawn as contour lines (every 0.10" / 2.5 mm), with color from shallow (light) to deep (dark). The video opens on your clean rink art, then morphs date to date so you can watch the sheet change through the season. The Depth values style skips contours and prints the raw numbers at each point — handy for ice techs who want the actual readings, not just the shape. Topograph + values draws both at once: the contours plus the raw number at every drill spot.

Forty seconds on colors, contours, and thin spots, narrated.

Every render also produces static PNGs (one per date) and a GIF — find them all under Render history, along with older renders.

Sand-base rink? (Basic) Thickness and surface shape aren't the same thing when the floor underneath isn't flat. Record your base profile on the rink page — enter it by hand, or derive it from a drill check taken right after a self-leveling flood (water finds its own level, so that column maps your base, inverted). With a base profile saved, the ice check adds a surface check line and Generate MP4 gains a Surface elevation style showing where the skating surface truly runs high (cut) and low (flood). Thin-spot alerts always use raw thickness — thin ice over a sand hump is still thin ice.

Reports & thin-spot alerts

The ice check strip at the top of Depth readings analyzes your most recent date: mean/min/max, the trend vs the previous measurement, and every point below your alert threshold (set it right on the strip — per rink, in your units). Thin spots come with a plain-language recommendation.

Ice Depth Report (PDF) packages the same analysis with the topograph on one page — sized for a board packet or council report. ⬇ Export CSV gives you the raw log, and Profile has a full-account export — your data is never locked in.

Set a reminder cadence on any rink and the dashboard flags overdue drill checks (email too, when the server is configured to send mail).

Bookings & billing

Each rink's Bookings page is a week-view ice calendar: league slots, practices, public skates, figure skating, and private rentals, color-coded by type. Add a booking with a date, times, and a flat or hourly rate — Repeat weekly until turns one slot into a season's worth.

Clashes are impossible. The server rejects overlapping bookings outright, and it enforces your resurfacing gap (set it in the settings row, default 15 min) between back-to-back slots — the Zamboni always gets its window. A recurring series that hits an already-booked week skips that week and tells you, rather than double-booking.

Billing tracks, you collect. Every priced booking lands in the Billing panel: unpaid totals by customer, one-click paid/unpaid toggles, and a full ledger CSV export for invoicing. The app never holds the money itself — but it can hand your customers a way to pay:

Pay online. In the Payments box (owner-only, on this page) save either a payment link — a Square checkout link, PayPal.me, or Venmo (those two get the amount appended automatically) — or a restricted Stripe API key from your own Stripe account. Every unpaid booking and membership charge then offers Pay online: a link, a QR code for the front desk, and a copyable request message. With a payment link you still mark items paid when the money arrives; with your own Stripe key the button creates a real card checkout (card / Apple Pay / Google Pay) for the exact amount, and the app marks it paid automatically the next time the page loads. Money always settles to your account — the platform never touches funds. In Stripe, create the key under Developers → API keys → Create restricted key, granting only Checkout Sessions: Write.

Twenty seconds, start to paid, narrated.

Ice requests let customers ask for slots themselves: share the public request link (see Self-service sign-ups) and requests land in the inbox on this page — set the rate, approve or decline, and approvals become real bookings.

Set the rink's open/close hours and the resurfacing gap in the settings row — those are owner-only. Deleted a booking by mistake? An Undo button appears for ten seconds and restores it, paid status included. On a phone, the week grid becomes a day-by-day agenda list — tap any row for details.

Leagues & teams

Create a league (with a season label), add teams and their player rosters, then hit Generate schedule: the app builds a fair round-robin — every team plays every other team once (or twice), stacked as a weekly league night from your first-game time, with your chosen gap between games.

League created, teams added, and a season's ice reserved — in fifty seconds.

Leave "also reserve the ice" checked and every game becomes a booking on the rink calendar — conflict-checked with the resurfacing gap like everything else. If a slot is already taken, the game is still created (the round-robin stays intact) but flagged "ice not reserved" so you can resolve it.

Enter scores as games are played and the standings table updates live: W/L/T, points (2 for a win, 1 for a tie), goals for/against, and differential. Each game row has a GCal link; deleting a game or league releases its ice.

Per-player statistics: every game has a Stats button opening its stat sheet — goals, assists, and penalty minutes per player on both rosters. Saving replaces the sheet (zero rows are dropped), and the league's Scoring leaders table aggregates automatically: GP, G, A, PTS, PIM, ranked by points then goals.

Player registrations: share the league's sign-up link and players register on their phones with a preferred team — you place them from the inbox. Regenerating a schedule never stacks a second one on top: it asks first, and replacing (which deletes games and scores) is owner-only.

Competitions

Five sports, one workflow. Create a competition with a date and ice window — it can reserve the rink on the Bookings calendar automatically (a clash is reported, never forced) — and pick the sport: figure skating, hockey (tournaments), curling, broomball, or speed skating. Every competition keeps an officials pool and prints sport-specific sheets from the browser.

Figure skating (ISI-style): events ("Freestyle 1", "Pairs Bronze"…), skater entries with clubs, judges assigned per event with checkboxes. Entries split alphabetically into warm-up groups, and the printable judging sheets give one page per group with blank score/place boxes and signature lines.

Results & placements: after skating, each judge's ordinal card goes in through Enter ordinals — every skater placed 1 through N, no ties on one card. Final placements compute by the classic 6.0 majority-of-ordinals system (lowest majority ordinal, then majority size, then totals as tie-breaks), recomputing live as cards arrive; only complete cards count. The printable sheets gain a Final Results page per event with the placement order and every judge's ordinals.

Curling: teams with skips, optional divisions ("A Event", "B Event"), and a schedule generated round-robin or as a seeded knockout bracket — games are packed into timed draws across however many sheets your ice is divided into (A, B, C…). Enter scores as games finish: round-robins build W-L-T standings; knockouts advance winners into the next round automatically. Printables: the draw schedule plus a blank end-by-end scorecard per game.

Hockey & broomball: tournament play — teams, divisions, round-robin or bracket, live standings, and period-based printable scoresheets. (Hockey league season play, with rosters and ice-reserving schedules, lives in the Leagues tab.)

Speed skating: events are distances ("500m Girls 12–14"), each with a lanes-per-heat setting; entries split into heats in entry order with lane assignments. Type finish times (45.32 or 1:23.45) and results rank by time instantly. Heat sheets print with lanes, time boxes, and results so far.

Entry requests: for figure skating and speed skating, share the competition's entry link and skaters pick their events online — approve from the inbox and the entries flow straight into groupings, heats, and sheets. Team sports take entries at the desk (add teams directly).

Sales, customers & waivers

The Sales tab is a front-desk register: build your item catalog (skate rentals, admission, concessions, pro shop), tap items into a cart, and Record sale with the payment method — cash, card on your own terminal, or comp. The today strip shows the day's take split by method, and the whole history exports as a Sales CSV. Prices are locked in at sale time, so editing an item never rewrites old sales.

Ring a sale, void a mistake, read the till strip.

Voids are soft. Anyone on the team can void a mistake — the sale drops out of the totals but stays on the books, struck through, so the till always reconciles. Only the owner can un-void, and the CSV marks voided sales rather than hiding them.

Customers are a light customer list (a "CRM"): contact details, notes, front-desk spend, and — pulled from the Bookings ledger automatically — any unpaid ice time under their name, so the front desk sees the whole picture at a glance. Attach a customer to a sale from the register.

Digital waivers: paste your waiver text once, click Get signable link, and share the link (text, email, QR, your website). Skaters read and sign on their phones before they arrive; signatures land in your customer list — deduped by email — with a timestamp. The customer table flags who's signed and who hasn't.

The waiver is a simple e-signature record (typed name, time, and network address) — have your own counsel approve the waiver wording itself. Editing the waiver text is owner-only.

Void PIN (shared counters). The rink owner can set a 4-8 digit PIN under Manage items — once set, voiding a sale asks for it, so a shared front-desk login can't quietly void takings. Owners can clear or change it anytime; un-voiding stays owner-only.

Memberships & recurring fees

The Members tab handles membership plans and dues. The owner defines plans — a name, a price, and a billing period (monthly, quarterly, or yearly). Anyone on the team then enrolls customers: pick an existing customer (the same person records the Sales tab uses, so waiver status carries over) or type a new name to create one on the spot.

Dues post themselves. Each active membership carries a next due date; when it arrives, a charge for the period is added to the dues ledger automatically and the date advances — a membership billed on the 31st renews Jan 31 → Feb 28 → Mar 31 the way you'd expect. Mark charges paid as money comes in (this is fee tracking, like Bookings billing — you collect by cash, check, or your own card terminal), and members with unpaid dues are flagged overdue. The whole ledger exports as a Dues CSV. Each unpaid charge also carries a button — a payment link or your-own-Stripe card checkout, if the owner has set up the Payments box on the Bookings page (Stripe checkouts mark themselves paid automatically).

Lifecycle: Pause stops dues (an injury, a season away); Resume restarts billing from today rather than back-billing the gap. Cancel keeps the dues history; reinstating a cancelled membership is owner-only, as are plan changes (archiving a plan blocks new enrollment without touching existing members) and deleting a charge from the ledger. The summary strip shows active members, the monthly-equivalent value of all active plans, and dues outstanding.

Reports (Pro)

The rink header's Reports tab answers month-end questions live, with nothing to configure: ice utilization (booked hours vs. your open hours, by week, with a booking-type breakdown), revenue for the last six months (bookings, front-desk sales, and dues — billed vs. collected), top customers across all three, and dues aging (outstanding member charges bucketed current / 30 / 60 / 90+ days). External calendar events count as ice use in utilization but never as revenue.

Self-service sign-ups

Three public links let customers come to you — each is generated from the matching page, shared however you like (text, email, QR, your website), and safe to hand out: they're signed links that only show a form, and nothing is confirmed until you approve it.

Both sides of a request — the customer's phone and your inbox.

Ice requests (Bookings → Get public request link): renters pick a date, time, and type on their phone. A time that clashes with your calendar — resurfacing gap included — is refused on the spot, without revealing your schedule.

Player registrations (Leagues → Get sign-up link, per league): players register with a preferred team and jersey number; you pick the final team when approving.

Entry requests (Competitions → Get entry link, per competition): skaters check off events and name their club; approvals create the entries.

Every submission lands in a pending inbox on the matching page with approve/decline buttons, and the requester is emailed the outcome automatically when the server sends mail. No payments anywhere — set the fee at approval and collect the way your rink collects today.

Google Calendar

Everything dated connects to Google Calendar, both directions.

One paste links an outside calendar into the grid.

One event at a time: look for the GCal ↗ / Add to Google Calendar links — on any booking's detail panel, every league game, the selected competition, each maintenance reminder's due date, and the Community page's industry training events. One click opens Google Calendar with the event prefilled.

The whole rink, live: on the Bookings page, Subscribe (live feed) gives you a private URL — in Google Calendar choose Settings → Add calendar → From URL and paste it. Bookings, league games, competitions, and maintenance due-dates all appear and stay updated as they change (Google refreshes every few hours). Prefer a one-time snapshot? Download .ics and import it.

The other direction: export a calendar from Google (Settings → Import & export) and use Import .ics on the Bookings page — timed events become bookings, conflict-checked with the resurfacing gap and deduplicated, so importing twice never doubles anything. All-day events are listed for you to book manually.

The subscribe URL works without a login so Google's servers can read it — anyone holding the link can view that rink's calendar, so share it like you'd share a private link.

Owner & team roles

Everyone you invite under Team works from the same shared rink: they enter depth readings, log maintenance, adjust supplies, book ice, run the register, enter scores, and approve sign-ups — the day-to-day is wide open, because that's what a crew is for.

A short list of actions is owner-only, because they're destructive or money-shaped: changing the rink's open/close hours and resurfacing gap, editing the waiver text, deleting a league or competition, replacing an existing league schedule (it wipes games and scores), un-voiding a sale, and setting the drill-check cadence. Members simply don't see those controls; if one is attempted anyway, the server refuses with a plain explanation.

Rink setup (dimensions, logos, point layouts) has always been the owner's; deleting the rink itself is too.

Rink Painting Reference

Dimensioned painting guides for a regulation sheet — line positions, widths, face-off geometry, and PMS paint colors — to the USA Hockey 2025–29 official markings (NHL size) and the IIHF metric standard. All dimensions sit outside the boards so the sheet itself stays clean. Paid accounts can overlay their saved rink logos onto the guide to plan sponsor placement. The page also has a Paint Calculator (gallons of white and color for your sheet size) and the Ice-In / Ice-Out checklists for the season's two big weeks.

Community Sharing & the Rink Grand Prix

Share any render from Render history — it gets a public link with a preview, appears in Community Sharing, and can be revoked anytime with the ⊘ button. Members can comment, vote, and subscribe; all community features are free.

The Rink Grand Prix is the community arcade: race a resurfacer 7 laps clockwise (Pro and Novice steering post to separate leaderboards) or clean the whole sheet in Resurface Challenge. Watch for fog, lights-out, pucks in the auger, and the occasional hydraulic leak.

The Live chat box on the Community page is the same conversation as our Discord server — type here or over there and everyone sees it either way. Log in to post; reading doesn't require an account.

Concussion App

The Concussion button in the header opens the Concussion App right inside this site — your header and menu stay on top. It's a sport-concussion screening aid that helps parents, coaches, and clinicians recognize when a head injury needs care. It is not a diagnosis and never replaces a professional evaluation; in an emergency, call 911.

Free for everyone: the Sideline Appraisal — a quick, about-one-minute check for a parent or coach that points you to the right next step — and the Clinical Assessment, a full scored battery for a medical professional.

Pro tools (included with Basic and Pro): the Neurocognitive Evaluation (reaction time, memory, balance, and an oculomotor screen), Athlete records with baseline-vs-injury comparison, and the Team dashboard. The Concussion App labels this same membership “Pro.”

Roster import (new): signed-in members can pull a league team or competition entry list from their rink straight into the Team dashboard — names, jersey numbers, and birth years, one tap, with a Refresh button for mid-season additions. The link is strictly one-way: rosters flow down to your device; assessments, baselines, and recovery records never flow back to the rink or to our servers. Two players with the same name? Give them numbers or birth years on the league roster and each keeps their own records.

Your privacy: unlike your rink data, everything in the Concussion App is stored on your own device — no accounts on our side, nothing uploaded or collected, and you can delete any record anytime.

Glossary — app terms ↔ trade terms

In the app What it means at the rink
Layout (SZ-29, FMC-27, ORFA-25, custom-N) Your drill-point scheme — where and how many depth checks you take. Named for the common published schemes; the number is the point count.
Layout era A stretch of the season measured under one scheme. Switch schemes and old columns stay tied to the scheme they were measured with.
Topograph A contour map of ice depth — like an elevation map, but for your sheet.
Static topograph The single-date PNG snapshot (the MP4 is the animated version).
Render history Past MP4s/PNGs/GIFs for a rink — your plan sets how many are kept.
Base profile The shape of the floor under your ice (sand bases especially). Lets the app tell ice thickness apart from true surface shape.
Alert threshold The minimum acceptable depth; points below it are flagged as thin spots.
Resurfacer door The zam gate — drawn on the boards in your images and used as the start point in Driving Patterns.
Visiting Driver The computer opponent / demo driver in the Grand Prix.
Resurfacing gap The buffer the booking calendar enforces between back-to-back slots so the Zamboni always has its window. Set per rink on the Bookings page.
Ledger The billing view of your bookings — who owes what, paid/unpaid, exportable as CSV.
Warm-up group A flight of skaters who take the ice together in a competition event; entries split into groups automatically by your group size.
Signable link The public waiver URL from the Sales tab — skaters sign on their phones and land in your customer list.
Calendar feed The subscribe URL that keeps a rink's schedule live inside Google Calendar.
Par level The supply count you never want to drop below — anything under par goes LOW and lands on the order list.
Void Striking a front-desk sale from the totals without deleting it — the books stay complete, and the owner can un-void.
Today row The chips and schedule under each rink on the Dashboard — ice check, overdue work, low supplies, pending sign-ups, the till, and who's on the ice.

FAQ

Can I use millimetres? Yes — Profile → Units. Applies to entry, imports, capture, topograph labels, reports, and dimensions. Stored data is unaffected.

Who can see my rink data? Only you (and site admins for support). Nothing is public unless you explicitly Share a render — and you can revoke a share anytime.

What do the paid plans add? The free plan is measure & see: your rink, depth grids, and the static topograph, plus community and the free concussion checks. Basic ($9.99/mo or $99/yr) is the technician's toolkit: thin-ice alerts & ice-check analytics, the printable Ice Depth Report, the topograph animation video, Mobile Phone & Bluetooth-caliper capture, the maintenance log & reminders, the resurfacer and ice-plant logs, supplies tracking, the sand-base surface tools, 3 facilities (sheets unlimited), downloads, and the Concussion App's Pro tools. Pro ($99/mo or $999/yr prepaid) adds the full operations suite — Bookings & billing (with linked calendars, self-service requests, and Pay online), Leagues & teams with player stats, Competitions in all five sports, the Sales register with customers & waivers, Memberships with recurring dues, the live Today dashboard, and the Reports tab (utilization, revenue, top customers, dues aging) — plus 10 facilities (sheets unlimited). Plans and prices are on the Pricing page.

What's the Concussion button? It opens the built-in Concussion App — a sport-concussion screening aid. See the Concussion App section above for what's free and what's Pro.

How do I unlock the Concussion Pro tools? They're included with Basic and Pro. Upgrade from your Profile page — or inside the Concussion App — and the Neurocognitive Evaluation, Athlete records, and Team dashboard unlock in both. If you're already Pro and they still look locked, open the Concussion App's upgrade screen and tap Refresh Pro status.

Is the concussion screening a diagnosis? No. It's a screening aid that helps you decide when to seek care. Only a licensed clinician can diagnose a concussion or make return-to-play recommendations. In an emergency, call 911.

Does the app charge credit cards? No — by design. The Sales register and the booking ledger record sales and fees; you take payment on your own terminal or cash box exactly as you do today. That keeps your card handling with your payment provider, where it belongs.

Who can manage my rink's bookings, leagues, and sales? The same people who can see the rink: you, plus anyone you've invited under Team. Everyone shares one calendar, one maintenance log, and one register per rink — with a short list of owner-only actions (see Owner & team roles).

I deleted or voided something by mistake. A deleted booking shows an Undo button for ten seconds — click it and the booking comes back, paid status included. A voided sale is never gone: it stays struck-through on the books and the owner can un-void it. League and competition deletions are permanent, which is why they're owner-only and confirm loudly first.

Why won't a booking save? It clashes with another slot — or sits closer to one than your resurfacing gap allows. The error names the conflicting booking; move one of them or shorten the gap in the Bookings settings row.

My Google Calendar feed hasn't updated. Google refreshes subscribed feeds on its own schedule, typically every few hours — that's Google's cadence, not the app's. The feed URL itself is always current: re-download the .ics if you need an instant snapshot.

Why is my render queued? Renders are heavy; a couple run at once and the rest wait their turn. The progress bar picks up as soon as yours starts.

My custom points don't match my grid. Each date column uses whichever measurement-points layout you picked for it when you added it (shown at the top of that column) — make sure you saved your custom layout's points (Design tab) before adding a column with that scheme.

Something else? Email FrenchysIceRinkApp@gmail.com — include your rink name and what you expected to happen.