Skip to main content

Publish Unstructured Results

Unstructured results are plain-text listing output (as opposed to structured JSON, CSV, or XML) that RunScore uploads to Race Roster. Use this approach to post formatted awards, age-group results, or overall standings exactly as they appear in your listing output.

For structured JSON uploads during your event, see Publish Live Results.

Results are uploaded via the Race Roster API using the Upload Race Results text endpoint.


Required listing commands

The first RSM in the listing (the header file) must include all four of these commands:

CommandPurpose
Output Format txtTells RunScore to produce plain-text output
External Report To RaceRosterTargets Race Roster as the upload destination
Destination <filename>Creates/overwrites the upload file. Prefix the filename with ~ (e.g. ~awards-5k.txt) so the file is created in the race directory — see Recommendation
.Header / .End Of HeaderMust include the Race Roster results-race ID marker: ##NNNNNN##

All subsequent RSMs that add content to the same upload file need only:

CommandPurpose
Destination Append <filename>Appends output to the file already created by the first RSM. The filename must match exactly
Ordering rule

The header RSM with Destination (creates the file) must run first. All subsequent RSMs use Destination Append. If the header has not run yet, Destination Append has nothing to append to and the upload will be empty. Never use plain Destination in a subsequent RSM — it would overwrite the file and destroy all sections written before it.

Optional commands

CommandPurpose
records/page <N>Limits output to the top N records per category (e.g. records/page 3 for top-3 awards). If omitted, all records are sent

Results-race ID markers

Each upload targets a results race on Race Roster. The ##NNN## marker tells RunScore which results race the file belongs to. Place it inside the .Header / .End Of Header block of the first RSM (the header file that uses Destination):

.Header
##283746##
.End Of Header

In a parameterized .RSM macro, pass the ID as parameter 1:

.Header
##%1##
.End Of Header

The listing file (.LST) or parameter listing (@…lst) then supplies the ID — either directly or via an Entries.INI variable such as %rr_5k_awards_u%:

RaceRosterHeader.RSM %rr_5k_awards_u% "~awards-5k.txt"

To find your results-race ID: open your event on Race Roster, go to the results-race configuration, and copy the numeric ID shown in the top-right corner.

Only the header file needs ##NNN##

The ##NNN## marker belongs in the first RSM — the one with External Report To RaceRoster and Destination. Subsequent RSMs that use Destination Append do not include ##NNN## — they simply append text to the same file.

Multiple distances (5K, 10K, Half)

For races with multiple distances that each need their own results race on Race Roster, use one listing per distance — each with its own header RSM, its own ##NNN## marker, and its own destination filename. See the overall results example below.

Consolidated awards (all categories in one file)

For awards that combine overall + age-group categories into a single upload, use one ##NNN## marker in the header RSM and Destination Append for every subsequent category. See the awards listing example below.


Recommendation

  • Separate IDs for structured and unstructured results. If you publish both formats to Race Roster, use distinct sub-event IDs (e.g. %rr_5k% for structured JSON, %rr_5k_u% for unstructured text). Race Roster treats these as separate result sets.
  • Define IDs once in Entries.INI. You can pass numeric IDs directly in a listing (ResultsUnsOnline.rsm 297655 "~results_5k.txt"), but we recommend storing them in Entries.INI and referencing them with %rr_5k_u% (and similar variables). One place to update avoids forgetting to change an ID in one of several listings or RSM files.
  • Prefix destination filenames with ~. Use Destination ~overalls_5k.txt (or pass "~results_5k.txt" as an RSM parameter). The tilde creates the upload file in the race directory; without it, the file is created in the binary directory, which can cause issues when switching races. See the Destination command for details.

Example: overall results via parameter listing

The 5K sample race includes @ResultsUnsToRR.5.Q.lst, which calls ResultsUnsOnline.rsm with the sub-event ID and destination filename:

ResultsUnsOnline.rsm %rr_5k_u% "~results_5k.txt"

RSM macro (ResultsUnsOnline.rsm)

Output Format txt
External Report To RaceRoster
Destination %2

.Header
##%1##
Overall Results - 5K
.End Of Header

Place,Name,Bib,Time
.Detail
@place,@name,@bib,@chiptime
.End Of Detail
  • Param 1 (%1): Race Roster sub-event ID (e.g. %rr_5k_u% from Entries.INI, or a numeric ID passed directly).
  • Param 2 (%2): Destination filename — must include the ~ prefix (e.g. "~results_5k.txt").

Example: awards listing (consolidated upload)

A typical awards listing consolidates overall winners and all age-group categories into a single upload file. Only the first RSM (RaceRosterHeader.rsm) carries External Report To RaceRoster, Output Format txt, Destination, and ##NNN##. All subsequent RSMs use Destination Append to add their sections to the same file.

See working example in every RunScore build: C:\RunScore\SampleRaces\5k\@awards2RR.6.R.lst

Race Roster setup (one-time)

  1. Create a results race for this event (e.g. name it "Awards").
  2. Set Result type to Unstructured (Text/PDF) — not Structured.
  3. Copy the numeric results-race ID into Entries.INI (e.g. %rr_5k_awards_u% 283746).
  4. After upload, enable "Results are viewable by the public" in the Race Roster results settings.

Race Roster displays the uploaded text as-is — the same plain-text layout produced by the listing.

Listing wrapper (@awards2RR.6.R.lst)

RaceRosterHeader.RSM %rr_5k_awards_u% "~awards-5k.txt"
OVERHDR.RSM
@OVERALL-RR.RSM 3 FEMALE F "~awards-5k.txt"
@OVERALL-RR.RSM 3 MALE M "~awards-5k.txt"
AGERES-RR.RSM 3 FEMALE F 1 19 "~awards-5k.txt"
AGERES-RR.RSM 3 MALE M 1 19 "~awards-5k.txt"
AGERES-RR.RSM 3 FEMALE F 20 29 "~awards-5k.txt"
AGERES-RR.RSM 3 MALE M 20 29 "~awards-5k.txt"

Header file (RaceRosterHeader.rsm) — must be first

Output Format txt
External Report To RaceRoster
Destination %2
No Page Numbers
No Total

header
##%1##
.End Of Header
  • Param 1 (%1): Race Roster results-race ID (e.g. %rr_5k_awards_u% from Entries.INI).
  • Param 2 (%2): Destination filename — must start with ~ (e.g. "~awards-5k.txt").

This is the only file that creates the upload destination and stamps the ##NNN## marker.

Content RSMs (OVERALL-RR.RSM, AGERES-RR.RSM) — use Destination Append

Destination Append %4
no page numbers
no column headers
Header
.ce ********** %2 OVERALL RESULTS FOR 5K RACE ***********
.End of Header
Field Name
Field AGE
...

Each call appends one section (overall female, overall male, each age group) to the same ~awards-5k.txt file. No External Report To, no Output Format, no ##NNN## — only Destination Append.

Sub-listings that should not be uploaded

RSMs that are print/processing only (e.g. OVERHDR.RSM for the printed banner, EXCLUDE.RSM for excluding overall winners from age groups) have no Destination command at all. They execute but do not write to the upload file.


How to send results

  1. Prepare your listing file with the commands described above.
  2. Right-click the listing file in RunScore.
  3. Select Send results to online.

RunScore generates the upload file (one per Destination in the listing), matches it to its Race Roster results race via the ##NNN## marker, and uploads it.

Preview before sending

To preview output before uploading, use Output To Editor instead. This displays results on screen so you can verify formatting, record counts, and category groupings.


Troubleshooting

SymptomLikely cause
Upload completes but no results appear on Race RosterMissing External Report To RaceRoster in the header RSM
Upload file is empty or contains only the last sectionA subsequent RSM uses plain Destination instead of Destination Append — it overwrites the file
Subsequent sections are missing from the uploadRaceRosterHeader.rsm (or equivalent) is not the first RSM in the listing. Destination Append has nothing to append to if the file was not created first
records/page is ignored (all records sent)Verify the records/page command is present in the sub-listing. When records/page is set, RunScore respects the cap; when omitted, all records are sent
Results appear but with wrong results raceCheck that the ##NNN## marker in the header RSM uses the correct results-race ID
Upload file appears in the binary directory instead of the race folderThe Destination filename is missing the ~ prefix. Use ~awards-5k.txt (or pass "~awards-5k.txt" as an RSM parameter) so the file is created in the race directory