ScoreFlow Operator Manual
Gym basketball scoreboard for macOS
macOS · Apple Silicon & Intel
September 2026
01Setting up before a game
Five minutes, start to finish. Do this once at the beginning of the night.
- Connect the Mac to the court display and make sure macOS is set to extended desktop, not mirroring. Mirroring puts the operator's pane on the wall, which is not what anyone wants.
- Open ScoreFlow. The Control pane appears on the Mac's own screen.
- Put the board on the wall: press Open scoreboard in the toolbar, or ⌘ ⇧ S. The same button — it now reads Close scoreboard — and the same shortcut put it away again.
- If the board opened on the wrong screen, drag it across, then press F with the board focused to go full screen.
- Set the team names and colors by clicking them on each team card.
- Check the clock length and the game rules in Settings (⚙, top right) if this league differs from the last one.
ScoreFlow saves itself constantly. If the Mac restarts mid-game, reopen the app and the score, fouls, timeouts and rosters all come back exactly as they were. The game clock always comes back paused — it will never restart itself on the wall while nobody is looking.
02The two windows
ScoreFlow is two windows that always agree with each other. You drive one; the gym watches the other.
| Window | Where it goes | What it does |
|---|---|---|
| Control | The Mac at the scorer's table | Everything. Clock, score, fouls, timeouts, rosters, announcements. |
| Scoreboard | The wall display | Shows the game. It has no controls and cannot be typed into — there is nothing on it to press by accident. |
03Free version and Pro
ScoreFlow runs a full game for free, forever. Pro adds the things that turn a scoreboard into a record of the game.
Every download starts as Pro for 21 days so you can try the whole thing on a real game night. After that it settles onto the free version — nothing is removed from the app and nothing stops working mid-game. The scoreboard never stops.
| What | Free | Pro |
|---|---|---|
| Game clock, score, fouls, timeouts, possession | Yes | Yes |
| Shot clock | Yes | Yes |
| Horn, period and overtime, auto-advance | Yes | Yes |
| Announcements, including custom messages | Yes | Yes |
| Hide the score on the wall | Yes | Yes |
| Team rosters and per-player points and fouls | — | Yes |
| Player stats on the wall | — | Yes |
| Saved team library | — | Yes |
| Break timer | — | Yes |
| Export stats to a spreadsheet | — | Yes |
| Your own logo on the wall | — | Yes |
Anything Pro-only is marked PRO in this manual, and in the app itself it stays visible but greyed out with the same badge — so you can always see what is there rather than wondering what you are missing.
Email support@nesflow6.com. You will be sent a key to paste into Settings → Licence; it applies immediately, with no restart and no reinstall, and it works in the middle of a game. The free-version strip has a Copy upgrade request button that fills in the details for you.
Nothing is deleted. Your saved teams, your rosters and your logo all stay on the Mac; the app simply stops showing the Pro parts until a new key is pasted in. A lapse costs you the extras, never tonight's game.
04Running a game
Everything here is on the Control pane. Nothing in this section needs Pro except the break timer.
Clock
START runs it, the same button stops it, and Space does both with the Control window focused. ADJUST nudges the clock by a minute or a second in either direction without stopping it — for the times the horn went late or the operator was slow. RESET puts it back to the period length set in Settings.
The big green bar across the bottom is the same START button, made large enough to hit without looking. It is there because the one control you reach for under pressure should not need aiming.
Break timer PRO
A separate countdown for between quarters and before tip-off, sitting right under the game clock. It is independent of the game clock on purpose, so it never collides with auto-advance. Type a label (it shows BREAK if you leave it blank), pick 1:00, 2:00 or 5:00 to start it, and −:30 / +:30 to adjust on the fly.
It takes over the wall's centre stage in amber — unmistakably not the game clock — hides the shot clock while it runs, and horns once at zero. After that it holds at 0:00 for about three seconds, then the wall returns to the period and game clock on its own. Starting the game clock clears it immediately; CLEAR does the same by hand.
Shot clock
Switch it on with the toggle. 24 and 14 reset it; S and ⇧ S do the same from the keyboard. It only ever runs while the game clock runs — it cannot tick on during a dead ball, because it is tied to the game clock rather than running on its own.
Scoring
+1, +2 and +3 on each team card. −1 takes a point back and Undo reverses the last action outright — scoring, a foul, a timeout, a period change.
PRO With a roster loaded, tap a jersey number under SCORER first and the points go to that player as well as the team. Tap TEAM instead when you do not know who scored, or do not need to. The selection clears itself after each basket so the next one cannot land on the wrong player.
Fouls
FOUL adds a team foul and, with a scorer selected, a personal foul to that player. The BONUS badge lights when the team foul count reaches the threshold in Settings. The small − and + beside TEAM FOULS correct the count by hand.
Timeouts
TIMEOUT spends one and starts a countdown on the wall. The countdown lives in its own slot, so an announcement — a foul called during the timeout, say — covers it briefly and then reveals it again with the right time still on it. The − and + adjust the remaining count.
Period and overtime
− and + step the period. Halves and Quarters switch the format. + OT enters overtime, which resets timeouts and fouls the way a fresh period should — but deliberately leaves the clock alone, because overtime length is rarely the same as a regulation period and is your call.
Overtime is only ever entered by pressing that button. The app will not drop into OT on its own at the end of the fourth.
Auto-advance
Switched on in Settings. When the clock hits 0:00 the horn fires, the wall holds on 0:00 for a few seconds so the gym can see the zero, and then the period turns over. Any action you take during that hold — starting the clock, stepping the period, calling a timeout — cancels it. The operator always beats the automation.
Scoring and fouls deliberately do not cancel it: a buzzer-beater and a foul at the horn belong to the period that just ended.
Resetting between games
Reset scoreboard zeroes the score, fouls, timeouts and clock for the next game. It asks twice — press it, then press it again within four seconds — because it is the one button on the pane that cannot be undone by pressing something else.
PRO Reset clears the players' points and fouls too. If tonight's numbers matter to anyone, run Export Stats first — it takes three seconds.
05Announcements
The strip along the bottom of the wall. Free on every version, custom messages included.
With Auto-show on, scoring and fouls announce themselves — 2 POINTS — EAGLES, and the player's name when a scorer was selected. You do not have to do anything.
The four kind buttons — Score, Foul, Timeout, Custom — only change what you are composing. They never post on their own. Type your message and press Send → or Enter.
Holding a message on the wall
Pick Custom and the Send button becomes Hold →: your message goes up and stays up instead of fading after a few seconds. It is for the things that are not about the game — NEXT GAME 7:30, GYM CLOSES AT 9, a lost set of keys. Clear it with the Clear button, or by sending anything else.
06Hiding the score
For a game that has got away from both teams. Free on every version.
Some games run away. In a recreational league for small children, a score on the wall can stop being information and start being discouraging. Hide score, in the bar under the team cards, replaces both scores on the wall with a label of your choosing.
Only the wall changes. You keep scoring exactly as before, the announcement still names the player who scored, player points and fouls keep accumulating, and the exported spreadsheet is the true score with nothing in it to say the display was ever hidden. Turn it off and the real score is right there.
The label is yours: set it in Settings → Hide score. It shows -- unless you change it, and words like SCRIMMAGE or FRIENDLY work well because they explain the decision rather than looking like a fault. Change it while the score is hidden and the wall updates as soon as you press Save.
On the Control pane an amber WALL: chip appears beside the toggle, showing what the gym is seeing — your own pane always shows the real score, so without it there would be nothing to tell you the two disagree.
07Importing a roster PRO
A spreadsheet of numbers and names becomes a team in about ten seconds.
Pick the team first
The roster panel on the right has two tabs with the team names on them. Whichever one is highlighted is the team you are about to import into. This catches people out — check it before you import, because the file goes onto the highlighted team no matter what the file says.
Press Import Roster and choose a file. CSV, plain text, Excel (.xlsx, .xls) and Numbers files all work — ScoreFlow converts spreadsheets itself, so there is no need to export to CSV first.
Merge Rosters, or Replace Current Roster
If the team is empty, the file loads immediately with no questions. If the team already has players, ScoreFlow stops and asks:
Points and fouls go with the players who are removed, and they are gone once you confirm. If the game that just finished matters to anyone, run Export Stats first.
The file name becomes the team name
Import Eagles.csv onto a side and that side is called Eagles on the wall from then on. A file named Youth League - Eagles.csv gives you the team Eagles filed under the league Youth League. The separator is a space, a hyphen and a space.
Files with a Team column
A file that lists both teams — an export from a previous game, for instance — has a Team column. ScoreFlow matches rows against the team name from the file name; if nothing matches, it takes only the rows with no team on them. Capitalisation is ignored throughout. This is deliberate: it stops a two-team file being dumped onto one side under the wrong name.
08Saved teams PRO
A library of the teams you see regularly, so the second week is faster than the first.
There is nothing to switch on
Import a roster from a file and ScoreFlow files it away for you under the name it took from the file name. Next week, pick it from the Saved teams dropdown instead of finding the file again.
Loading a team back
Choose it from the dropdown. It sets the team name and the roster in one go. If the side already has players you get the same Merge or Replace question as an import.
When the name is already taken
ScoreFlow asks whether to overwrite the saved team or save this one under a different name. Cancelling still applies the import to tonight's game — it just does not write to the library.
Removing a team
Remove… opens a picker. Choose the team and it is gone from the library. This only touches the library — whatever is on the scoreboard right now is left exactly as it is, players, points and fouls included.
Limits
Forty teams. At the cap, importing a new one asks you to pick which saved team to drop first.
09Roster file formats
ScoreFlow is deliberately relaxed about this. If a human can read it as a list of numbers and names, it will probably load.
Just numbers and names, no header row
With a header row
Separate first and last name columns
A file ScoreFlow exported
An export has Team,Number,Name,PTS,PF. Loading one back works: the points and fouls columns are ignored on import, so you get the roster without last week's numbers.
Accepted column headings
| Meaning | Any of these |
|---|---|
| Jersey number | Number, No, No., #, Jersey |
| Full name | Name, Player, Player Name |
| Split name | First / Last, First Name / Last Name |
| Team | Team |
Limits and rules
- Jersey numbers 0–999, and each number appears once per team — a second row with the same number updates the first rather than adding a duplicate.
- A row with no name is skipped.
- Rosters are capped at a sensible number of players; a file larger than that is truncated rather than refused.
10Editing a roster PRO
A misspelled name or a wrong number is fixed where you see it. You never need to edit a spreadsheet and import it again.
Editing a player
Click the number, the name, the PTS or the PF in the roster table and type. It commits when you press Enter or click away; Esc abandons the edit. Changing a jersey number to one already in use is refused rather than allowed to create a duplicate.
Adding a player mid-game
Type the number and name in the row at the bottom of the panel and press Add. Latecomers are normal and this takes about four seconds.
Removing players
The × at the end of a row removes that player. Delete Roster clears the whole list for the highlighted team — the score, fouls and timeouts are left alone, because that clears the roster and not the game.
Saving your edits back to the library
Editing the table changes tonight's game only. To make the library agree — so the fix is still there next week — press Save Team.
It writes the numbers and names for the highlighted team. Points and fouls are never saved: the library is a roster, not a game, so saving in the middle of the third quarter does not bake tonight's stat line into the team you load next month. If the save would remove players from a team already in the library, ScoreFlow asks first and tells you both counts — adding a player or fixing a spelling just saves.
Selecting a scorer
The jersey numbers above the scoring buttons are the scorer picker. Tap one, then score. Tap TEAM to credit the team without a player. The selection clears after each basket.
11Exporting stats PRO
One file, both teams, three seconds.
Export Stats writes a CSV that opens in Excel, Numbers or Google Sheets. The suggested file name includes both teams and the date.
What is in the file
Team,Number,Name,PTS,PF, a row per player, both teams, plus a total row for each team. If the team score is higher than the players' points add up to — because some baskets were recorded to TEAM rather than a player — the difference appears as its own row, so the totals always reconcile.
Export before you erase
The two actions that destroy player numbers are Reset scoreboard and choosing Replace Current Roster on an import. Export first if anyone will ask.
Re-using an export as a roster
An exported file can be imported again as a roster. One wrinkle: the suggested name contains both team names, so rename it to just the team you want before importing, or ScoreFlow will not be able to tell which side the rows belong to.
12Keyboard shortcuts
These work when the Control window is focused. The scoreboard window ignores everything except F.
| Key | Does |
|---|---|
| Space | Start / stop the game clock |
| S | Reset the shot clock to 24 |
| ⇧ S | Reset the shot clock to 14 |
| H | Horn |
| P | Flip possession |
| ⌘ Z | Undo the last action |
| ⌘ ⇧ S | Open or close the scoreboard window |
| F | Full screen — press with the scoreboard window focused |
Shortcuts are suspended while a dialog is open or while you are typing in a field, so a message containing the letter S will never reset the shot clock.
13Settings reference
The gear at the top right. Everything applies together when you press Save, except the horn sound and the logo, which change the moment you pick them.
| Setting | What it does |
|---|---|
| Timeouts per team | How many each team starts a game with. |
| Bonus threshold | Team fouls at which the single and double bonus indicators light on the wall. |
| Personal foul-out | Personal fouls at which a player is highlighted as fouled out. |
| Timeout length | Seconds a called timeout counts down on the wall. |
| Default period length | What a new game, Reset scoreboard and each auto-advanced period start at. |
| Default shot clock | What the shot clock resets to. |
| Auto-advance period at 0:00 | Turn the period over automatically when the clock expires, after a short hold on 0:00. |
| Reset clock on period change | Whether an auto-advance also resets the game and shot clocks. |
| Reset timeouts / team fouls | Never, every period, or at half time. |
| Horn sound | The built-in horn, or an audio file of your own. Applies immediately. |
| Wall logo PRO | A PNG, WEBP or JPEG shown on the wall. Applies immediately. |
| Hide score | The word the wall shows in place of the scores. See section 06. |
| Updates | Whether ScoreFlow checks for a new version. See section 14. |
| Licence | Paste a key here, and read this computer's code when requesting one. |
Player stats, Hide score's switch, Auto-show and Reset scoreboard all live on the Control pane instead, because they are raised and lowered during a game and you should not have to open a dialog to reach them.
14Updates
ScoreFlow keeps itself current, and it will never interrupt a game to do it.
ScoreFlow checks nesflow6.com for a new version when it starts and every few hours after that. If there is one it downloads quietly in the background — never while the game clock is running, so it cannot compete with anything else the building is doing on the same connection — and installs it the next time you quit the app. There is nothing to press.
When an update is waiting, a line appears at the top of the Control pane saying so. A Restart now button sits beside it when the clock is stopped; it is optional, and it closes the scoreboard window, so most operators simply quit at the end of the night and get the new version next time.
Updates are free on every version, including the free one. A fix should reach everyone.
Settings → Updates. Switch it off and ScoreFlow makes no network connection at all. The check itself sends nothing about you, your games or your Mac — it asks whether a newer version exists and nothing else.
15Troubleshooting
| What you see | What to do |
|---|---|
| The scoreboard opened on the Mac's screen, not the wall | macOS is mirroring rather than extending. Fix it in System Settings → Displays, then drag the board across and press F. |
| The wall is blank or frozen | Close and reopen it with ⌘ ⇧ S. The board redraws from the Control pane, so nothing about the game is lost. |
| The import went onto the wrong team | Press ⌘ Z. Then check which tab is highlighted in the roster panel and import again. |
| A player is missing after an import | Usually a blank name, a jersey number outside 0–999, or a Team column whose value does not match the team name. Open the file and check that row. |
| The clock keeps stopping on its own | Auto-advance is reaching 0:00 and turning the period over. Switch it off in Settings if this league keeps time differently. |
| The horn does not sound | Check the Mac's output device and volume — ScoreFlow plays through whatever macOS is using. If you picked a custom sound, re-pick it in Settings. |
| The score on the wall is not changing | Check whether Hide score is on: there will be an amber WALL: chip beside the toggle. Scoring is still being recorded. |
| Roster and stats are greyed out with a PRO badge | The 21-day trial has finished, or a licence has lapsed. Nothing has been lost — see section 03. |
| A licence key will not apply | Keys are tied to one computer. Check that the code in Settings → Licence matches the one the key was issued against, and that the whole key was pasted. |
| Something else | Email support@nesflow6.com. Include what you were doing and what you expected — and the version number, from the ScoreFlow menu → About. |
ScoreFlow writes the game to disk on every change. Quitting by accident, a flat battery, a restart in the middle of the third quarter — reopen it and the game is where you left it, with the clock paused. There is no save button because there does not need to be one.