Dynamic Overlay placeholder reference
Every template replacement, its output format, binding and source.
Text nodes replace every {{key}} when rendered. Whitespace inside braces is allowed. Values use the node's fixed or inherited team/player/map/action binding. Index fields are zero-based; number fields are one-based. Scores include thousands separators, percentages are numeric text without a % unless explicitly stated, booleans become true/false, and unavailable values normally become an empty string. Add % in the template where desired.
Live score values come from TournamentAssistant or synchronized replay-compositor score timelines. The native compositor's authoritative playback time drives song progress. song… result fields use persisted official BeatKhana match results; Lightshow values come from the active showcase; donation values come from the public donation socket.
| Placeholder | Replacement and source |
|---|
{{tournamentName}} | Tournament public name; fallback BeatKhana Invitational. |
{{tournamentImage}} | Tournament image URL; fallback cover when absent. |
{{tournamentBackground}} | Tournament banner URL. |
{{tournamentStatus}} | Tournament status, underscores changed to spaces and uppercased. |
{{tournamentDescription}} | Public tournament description. |
{{tournamentWebsite}} | Public tournament website link. |
{{tournamentTwitch}} | Tournament Twitch channel name. |
{{tournamentStartDate}} | Stored public start-date value. |
{{tournamentEndDate}} | Stored public end-date value. |
| Placeholder | Replacement and source |
|---|
{{matchType}} | Selected match type/round; fallback Grand Finals. |
{{matchNumber}} | Selected match number; fallback 1. |
{{matchStatus}} | Match status, normalized and uppercased. |
{{matchBestOf}} | Series length calculated as maxScore × 2 − 1. |
{{matchCoordinators}} | Comma-separated assigned coordinator names. |
{{matchReferees}} | Comma-separated assigned referee names. |
{{matchCasters}} | Comma-separated assigned caster names. |
{{matchStreamHosts}} | Comma-separated assigned stream-host names. |
{{divisionName}} | Match bracket division name; fallback node division then Open Division. |
{{bracketName}} | Match bracket name; fallback node bracket then Playoffs. |
{{bracketMatchCount}} | Number of matches in the selected bracket. |
{{previousMatchType}} | Previous bracket match type. |
{{previousMatchNumber}} | Previous bracket match number. |
{{previousMatchStatus}} | Previous match status, normalized and uppercased. |
{{previousMatchTeams}} | Previous match team names joined with vs. |
{{previousMatchScore}} | Previous official team scores formatted A — B. |
{{nextMatchType}} | Next bracket match type. |
{{nextMatchNumber}} | Next bracket match number. |
{{nextMatchStatus}} | Next match status, normalized and uppercased. |
{{nextMatchTeams}} | Next match team names joined with vs. |
{{nextMatchScheduledTime}} | Stored scheduled-time value of the next match. |
| Placeholder | Replacement and source |
|---|
{{teamName}} | Bound BeatKhana team name; preview fallback Country N. |
{{teamNameOpponent}} | Opposing team name (team 1 for bound team 0, otherwise team 0). |
{{teamImage}} | Bound team image URL or fallback cover. |
{{teamSeed}} | Team seed, otherwise one-based bound-team position. |
{{teamIndex}} | Zero-based bound team index. |
{{teamPlayerCount}} | Full registered roster size. |
{{teamActivePlayerCount}} | Current active/TA player-slot count. |
{{teamPoints}} | Current official series/map points for the team. |
{{teamReplays}} | Remaining team replays from link/match results. |
{{teamReplaysUsed}} | Count of distinct replay calls by this team. |
{{teamReplaysTotal}} | Remaining plus used replay calls. |
{{teamScore}} | Sum of current live player raw scores. |
{{teamModifiedScore}} | Sum of current live modifier-adjusted scores. |
{{teamMaxScore}} | Sum of current live maximum scores. |
{{teamAccuracy}} | Current team aggregate accuracy as percent-number text. |
{{teamAccuracyDiff}} | Bound-team accuracy minus opponent accuracy, signed percent-number text. |
{{teamMisses}} | Sum of current live missed notes. |
{{teamBadCuts}} | Sum of current live bad cuts. |
{{teamBombs}} | Sum of current live bomb hits. |
{{teamWalls}} | Sum of current live wall hits. |
{{teamCombo}} | Sum of current live combos. |
{{teamMaxCombo}} | Sum of current live maximum combos. |
{{teamErrorsTotal}} | Misses + bad cuts + bomb hits + wall hits across the team. |
| Placeholder | Replacement and source |
|---|
{{playerName}} | Preferred name, username or TA name; preview fallback Player N. |
{{playerIndex}} | Zero-based player index inside the bound team. |
{{playerNumber}} | One-based player number. |
{{playerAvatar}} | BeatKhana avatar, then TA Discord avatar, then fallback cover URL. |
{{playerCountry}} | BeatLeader country code, then ScoreSaber code, fallback XX. |
{{playerFlag}} | Flag emoji derived from the resolved player country code. |
{{playerPronouns}} | Stored pronouns; missing/not/given becomes they/them. |
{{playerTwitch}} | Twitch channel; stored none becomes empty. |
{{playerScore}} | Current raw score from TA or synchronized replay timeline. |
{{playerModifiedScore}} | Modifier-adjusted score, falling back to raw score. |
{{playerMaxScore}} | Current attainable/maximum score. |
{{playerAccuracy}} | Score/max-score accuracy as percent-number text. |
{{playerMisses}} | Current missed-note count. |
{{playerBadCuts}} | Current bad-cut count. |
{{playerBombs}} | Current bomb-hit count. |
{{playerWalls}} | Current wall-hit count. |
{{playerErrorsTotal}} | Misses + bad cuts + bombs + walls. |
{{playerCombo}} | Current combo. |
{{playerMaxCombo}} | Maximum combo reached. |
{{playerHealth}} | Player health as percent-number text. |
| Placeholder | Replacement and source |
|---|
{{songName}} | Resolved map song name. |
{{songIndex}} | Zero-based pool/repeater map index. |
{{songNumber}} | One-based map number. |
{{songArtist}} | Song artist. |
{{songMapper}} | Beatmap author. |
{{songDifficulty}} | Display difficulty. |
{{songCharacteristic}} | Characteristic such as Standard/Lawless. |
{{songCover}} | Cover URL. |
{{songDuration}} | Formatted duration string. |
{{songDurationSeconds}} | Numeric duration in seconds. |
{{songProgress}} | Authoritative playback progress as percent-number text with one decimal. |
{{songBpm}} | BPM, at most two decimals. |
{{songNjs}} | Note jump speed, at most two decimals. |
{{songNps}} | Notes per second, at most two decimals. |
{{songKey}} | Uppercase BeatSaver key. |
{{songHash}} | Normalized level hash. |
{{songFlair}} | Tournament-defined map flair name. |
{{songFlairIcon}} | Tournament-defined flair icon value. |
{{songFlairColor}} | Tournament-defined flair color. |
{{songState}} | Derived available, picked, next, replay, played, banned, tiebreaker or current state. |
{{songPlayed}} | true when an official result exists, otherwise false. |
{{songCurrent}} | true when this is the current TA/compositor map. |
{{songNext}} | true when this is the next playable/replay-pending map. |
| Placeholder | Replacement and source |
|---|
{{songWinnerName}} | Official winning team name. |
{{songWinnerImage}} | Official winning team image URL. |
{{songWinnerTeamIndex}} | Winner's zero-based team index. |
{{songWinningScore}} | Highest official team score. |
{{songScoreDifference}} | Bound team score minus strongest opponent score. |
{{songTeamScore}} | Bound team's official total across submitted player rows. |
{{songTeamAccuracy}} | Bound team's average official accuracy as percent-number text. |
{{songTeamMisses}} | Bound team's official missed-note total. |
{{songTeamBadCuts}} | Bound team's official bad-cut total. |
{{songTeamPlayerCount}} | Number of official player rows for the bound team. |
{{songOpponentScore}} | Strongest opponent's official total. |
{{songPlayerScore}} | Bound player's official persisted score. Templates using songPlayer… can address persisted player rows even without a live TA roster. |
{{songPlayerAccuracy}} | Bound persisted player's official accuracy. |
{{songPlayerMisses}} | Bound persisted player's official misses. |
{{songPlayerBadCuts}} | Bound persisted player's official bad cuts. |
{{songReplayCount}} | Number of recorded replay attempts for this map. |
{{songReplayPending}} | true while a requested replay still needs completion. |
{{songLastReplayRound}} | Latest replay round number. |
{{songReplayCallerTeamName}} | Latest replay-calling team's name. |
{{songReplayCallerTeamImage}} | Latest replay-calling team's image URL. |
{{songScoreToBeat}} | Score retained from the prior official attempt. |
{{songScoreToBeatAccuracy}} | Its accuracy as percent-number text, without %. |
{{songAccuracyToBeat}} | The same target accuracy with % already appended. |
| Placeholder | Replacement and source |
|---|
{{previewPlayingSong}} | Active showcase song name; fallback No Song Playing.... |
{{previewPlayingSongArtist}} | Active showcase artist. |
{{previewPlayingSongMapper}} | Active showcase mapper. |
{{previewPlayingSongCover}} | Active showcase cover URL. |
{{previewPlayingSongDifficulty}} | Active showcase difficulty label/value. |
{{previewPlayingSongCharacteristic}} | Active showcase characteristic. |
{{previewPlayingSongKey}} | Active showcase BeatSaver key. |
{{previewPlayingSongHash}} | Active showcase map hash. |
| Placeholder | Replacement and source |
|---|
{{actionType}} | Normalized current/inherited action type. |
{{actionNumber}} | Stored flow order, otherwise one-based action index. |
{{actionTeamName}} | Actioning team/player display name. |
{{actionerName}} | Alias of the resolved actioning identity name. |
{{actionerAvatar}} | Resolved actioning identity image URL or fallback cover. |
| Placeholder | Replacement and source |
|---|
{{donationTotal}} | Public donation total, formatted to two decimals. |
{{donationGoal}} | Public donation goal, formatted to two decimals. |
{{donationPercent}} | Total/goal percent-number text; 0.00 without a goal. |
{{donationCurrency}} | Public donation/tournament currency. |
{{donationLabel}} | Public donation campaign label. |
If a key is not in the tables, the renderer safely traverses these roots: overlay, tournament, match, team, teamLink, player, memberLink, taUser, score, map, mapData, mapResult, action, donations and runtime. For example, {{match.scheduledTime}} reads the selected match field and {{score.maxScore}} reads the bound live score. Arrays become comma-separated text; objects become JSON. __proto__, prototype and constructor traversal is blocked.