Skip to content

Event Data File Reference

Event data files let the person preparing TRacer for an event define event, station, race, participant, and entry data before volunteers import it into TRacer. TRacer accepts JSON and YAML event data files.

The official method today is to create this file manually. A community-created builder is available at runner-tracker-json-builder.vercel.app, and a built-in TrackMyRacer.live tool is planned for the future.

File shape

An event data file is one object with event fields and optional arrays for stations, races, participants, and entries.

json
{
  "name": "Example Trail Run",
  "startDate": "2026-06-12T07:00:00",
  "endDate": "2026-06-12T18:00:00",
  "startStation": 0,
  "finishStation": 11,
  "stations": [],
  "races": [],
  "participants": [],
  "entries": []
}

Event fields

FieldTypeRequiredDescription
namestringRecommendedEvent name shown in TRacer.
slugstringOptionalEvent slug, if your event uses one.
syncUrlstringOptionalSync URL, if your event uses one.
startDatedate/time stringOptionalEvent start date or time.
endDatedate/time stringOptionalEvent end date or time.
startStationnumberYesStation number used as the event start.
finishStationnumberYesStation number used as the event finish.

Use date and time strings that JavaScript can read with new Date(...). For event readability, prefer local event-time strings like 2026-06-12T07:00:00 unless you specifically need to include a timezone.

Stations

Use stations to define checkpoint or aid-station locations.

json
{
  "stations": [
    { "stationNumber": 0, "name": "Start", "distance": 0 },
    { "stationNumber": 2, "name": "Hope Campground", "distance": 5.52 },
    { "stationNumber": 11, "name": "Finish", "distance": 50 }
  ]
}
FieldTypeRequiredDescription
stationNumbernumberYesNumber used by TRacer to identify the station.
namestringOptionalHuman-readable station name.
stationNumberDisplayedstringOptionalDisplay label shown instead of stationNumber. Useful when a race needs labels like 1A and 1B.
distancenumberOptionalDistance for the station.

Races

Use races when one event has multiple races, or when a race needs station display overrides.

json
{
  "races": [
    {
      "name": "Out and Back 50K",
      "distance": 31,
      "stations": [
        { "stationNumber": 1, "stationNumberDisplayed": "1A" },
        { "stationNumber": 2 },
        { "stationNumber": 3, "stationNumberDisplayed": "1B" }
      ]
    }
  ]
}
FieldTypeRequiredDescription
namestringYesRace name.
distancenumberOptionalRace distance.
stationsarrayOptionalStation overrides for this race. Each item uses the same public station fields as stations.

Race station entries are overrides from the main station list. For example, if a race passes through the same physical station twice, you can log the second pass under another station number and show display labels such as 1A and 1B.

Participants

Use participants to preload bib numbers and optional participant details.

json
{
  "participants": [
    { "bibNumber": 101, "firstName": "Sam", "lastName": "Runner", "race": "Out and Back 50K" },
    { "bibNumber": 102, "race": "Out and Back 50K" }
  ]
}
FieldTypeRequiredDescription
bibNumbernumberYesParticipant bib number.
firstNamestringOptionalParticipant first name.
lastNamestringOptionalParticipant last name.
agestringOptionalParticipant age or age range.
genderM or FOptionalParticipant gender marker.
homestringOptionalParticipant home location.
teamstringOptionalParticipant team.
racestringOptionalRace name for this participant.
notestringOptionalAdditional participant note.
dnfReasonstringOptionalDNF reason, if already known.
dnfStationnumber or nullOptionalStation where the participant DNF status applies.
dnfTimestampdate/time string or nullOptionalTime the DNF was recorded, if known.

Entries

Use entries to preload station timing data.

json
{
  "entries": [
    { "bibNumber": 101, "stationNumber": 2, "timeIn": "2026-06-12T09:15:00" },
    { "bibNumber": 101, "stationNumber": 2, "timeOut": "2026-06-12T09:20:00" }
  ]
}
FieldTypeRequiredDescription
bibNumbernumberYesParticipant bib number.
stationNumbernumberYesStation number for the timing entry.
timeIndate/time string or nullOptionalTime the participant arrived at the station.
timeOutdate/time string or nullOptionalTime the participant left the station.

Internal fields

Do not include internal database fields in manually-created event data files. TRacer handles record IDs, event IDs, and modification timestamps during import.