Scoreboard Event Customizer
1. Overview
The Scoreboard Event Customizer pushes a custom event title to one or more Equipe scoreboards in a single operation. Instead of editing each scoreboard manually from the Equipe interface, the operator enters the event title once, selects the target scoreboards, and the tool writes the intro headers for every competition of the show at once.
The intro headers are what the audience sees on the LED wall or arena screen between rounds: the event branding on line 1, the competition name on line 2, and the sponsor or subtitle on line 3.
2. What it does
For each qualifying competition in the show, the tool builds a three-line intro block:
| Line | Field | Source |
|---|---|---|
| 1 | $event_intro_header_1 |
The custom title typed by the operator |
| 2 | $event_intro_header_2 |
oeverskr1, falling back to klass (competition name) |
| 3 | $event_intro_header_3 |
oeverskr2, falling back to sponsor |
The complete set of blocks is then written to every selected scoreboard through a single PATCH request per scoreboard.
3. Access and authentication
The tool is launched from Equipe as an extension and receives a JWT token in the query string.
scoreboard_customizer.php?token=<JWT>
- Signing algorithm: HS256
- Leeway: 60 seconds (tolerates minor clock drift between servers)
- Payload fields used:
meeting_url,style_url,target, andapi_key
The page renders only when payload.target is modal or browser. Any other target value produces no output — this is intentional and prevents the form from being rendered in unsupported contexts.
The Equipe API key extracted from the token is used for every subsequent call. It is never typed by the user.
4. Interface
Header
Dark blue banner with the tool name and an information box explaining the workflow.
Event Customization
A single text field for the event title. This value is applied identically to line 1 of every competition block.
Example:
Winter Tour 2026 — Week 3
Scoreboard Selection
Scoreboards are fetched from /scoreboards.json and grouped by arena. Each arena appears as its own labelled block containing a responsive grid of checkboxes.
Scoreboards with no arena assigned are grouped under Untitled.
Selection is free-form: any combination of scoreboards across any arenas can be updated in one run.
Submit
The Update Selected Scoreboards button validates that at least one scoreboard is checked, disables itself, and shows a spinner while the request runs.
5. Data flow
1. GET <meeting_url>/competitions.json → list of competitions
2. Build $eventData from qualifying entries
3. For each selected scoreboard:
PATCH <meeting_url>/scoreboards/<id>.json → write custom_data
4. Return a per-scoreboard success/error map
Competition filter
A competition is included only if all of the following are true:
oeverskr1andoeverskr2keys are present in the recordz == "H"(it is a real competition, not a list or a placeholder)klass != "Do not compete"
Records that fail any of these checks are skipped silently.
ID generation
Each block receives a unique numeric ID derived from the current Unix timestamp in milliseconds, incremented by 2 seconds per competition. This guarantees ordered, collision-free IDs within a single run.
7. Feedback and error handling
Results are reported per scoreboard, not globally. Each scoreboard gets its own alert:
- Green — HTTP 2xx, update confirmed
- Red — non-2xx response, showing the status code and the API message when available
Alerts auto-dismiss after 4 seconds. The submit button is re-enabled in the complete handler, so it recovers whether the request succeeded or failed.
Client-side validation blocks submission when no scoreboard is selected, with an inline red alert rather than a browser dialog.
9. Troubleshooting
No scoreboards listed
The /scoreboards.json call returned empty or failed. Verify the API key is valid and the meeting has at least one scoreboard configured in Equipe.
Blank page
payload.target is neither modal nor browser. Check how the extension is registered in Equipe.
JWT decode failure Either the token expired beyond the 60-second leeway or the signing secret no longer matches. Tokens are single-use and short-lived; reopen the tool from Equipe rather than reusing a stale URL.
Update reports success but the screen doesn't change The scoreboard engine caches its layout. Reload the scoreboard display or restart the scoreboard client.
Some competitions missing from the rotation
They were filtered out — most often because oeverskr1/oeverskr2 are absent from the record, or klass is set to Do not compete.
10. Operational notes
- The tool overwrites
custom_dataon every selected scoreboard. Any previously configured intro blocks on those scoreboards are replaced, not merged. - Run it again after adding or renaming competitions — the block list is rebuilt from scratch each time.
- Running the tool on a live scoreboard is safe but takes effect immediately. Prefer running it between classes.