RTRT.me - Real Time Race Tracking

Real-Time Race Tracking for World-Class Events

Profile Fields:

The aim of our Roster Import utility is to accept a variety of data formats and participant profile fields so that you can import from your own standards without too much hassle. During import, our system will automatically remap to ensure compatibility with our overall suite of products.

Below is an overview of the Roster Import methodology:

All roster field names in your file ( or as delivered via the Admin API ) will be converted to lowercase, alpha-numeric only during import. No punctuation or special characters will remain except for '_' (underscore). We automatically replace spaces and hyphens with underscores. For Example:

A field name such as 'Emergency Contact #' would be converted to 'emergency_contact_number'.

Additionally, some common field name variations will be remapped in order to help standardized profile data in our system. For example:

'firstname','first_name', or 'name1' will be saved as 'fname' in our system.

'category' or 'competition' will be saved as 'division' in our system.

There is no restriction the number of fields you can import, and it is up to you to decide which fields you want to have stored in our system (controllable via the Roster Options->Keep Roster Fields setting). By default, our API will only publicly expose fields which are required for the public Tracker. Currently, this includes only bib/tag, name, city, country, sex, race, course, aka & profile_pic.

Here are a few fields that will always present after your import. These fields do not necessarily need to be in the source since the system will construct some fields by looking at others (see Import Logic below).

fname, lname and name.  Every participant will have a first and last name mapped as 'fname' and 'lname'.  These two will be combined to also create a 'name' field.  If only a full name (single field) is provided in your roster, we will parse that field to also create 'fname' and 'lname'.

tag. This refers to the RFID identifier as worn by the participant.  Tag is used internally to match timing data to participants, and is not visible to public.  Every participant should have a unique tag. Tags may be zero padded such as 0000212 during import.  

bib. This refers to the visible label worn by the participant.  Bib is also used when searching for participants.  A bib can have letters, such as F212, etc.  Bib is for display only and is not used for linking timing data to a participant.

sex. Every participant will have a sex of 'M' or 'F' or 'U' if not specified.

race is a 'friendly' description of the particular type of activity.  Case and punctuation are preserved.  Examples:  '5K', 'Marathon', '10K Walk', '16.8KM Closed', etc.  Race name is visible to spectators in places like the Web Participant Tracker.

course is always a lowercase string with no spaces or punctuation (other than '_') that defines a route in the event.  Examples: 5k, 10k, marathon, halfmarathon, 5mile, 16_8k, tri, etc. (NOTE: We try to maintain a list of all typical/standard course types. If our system doesn't have a selectable course that makes sense for your event, please let us know and we will add it).  

Current course values are: 'halfmarathon', '1sthalfmarathon', '2ndhalfmarathon', 'half_of_half', 'mini', 'marathon', 'metric_marathon', 'ultra_marathon', '16_8k', '16_5k', '16k', '15k', '12k', '5k', '5_2k', '5_25k', '5_5k', '6k', '2k', '2_5k', '1mile', '2mile', '3mile', '4mile', '5mile', '6mile', '8k', '8_5k', '8_6k', '8_7k', '8_9k', '9k', '13k', '10_6k', '10mile', '18mile', '20mile', '33mile', '36mile', '66mile', '82mile', '10k', '11k', '11_2k', '10_25k', '10_5k', '20k', '25k', '27k', '30k', '40k', '44k', '50k', '60k', '75k', '77k', '101k', '100m', '200m', '300m', '400m', '600m', '800m', '1600m', '2400m', '2800m', '3k', '3_2k', '3_6k', '4_3k', '4_2k', '5_3k', '7_3k', '9_7k', 'tri_olympic', 'tri_full', 'tri_half_iron', 'tri_ironman', 'tri_super_sprint', 'tri_sprint', 'duathlon_powerman', 'duathlon_sprint', 'aquathlon_short', 'aquathlon_intermediate', 'aquathlon_long', 'aquathlon_ultra', 'stair', 'stair2', 'stair3', 'mawr', 'canol', 'bach', 'xtrem', 'swim', 'snowdon', 'enduro', 'bike', 'run', '1k', '1_2k', '1_5k', '3_65k', '4k', '4_6k', '4_7k', '18_45k', '21k', '31_5k', 'diversion', 'leg1', 'leg2', 'leg3', 'leg4', 'leg5', 'leg6', 'leg1b', 'leg2b', 'leg3b', 'leg4b', 'leg5b', and 'leg6b'.

class is a generalized division for the participant and is used for Categories creation.  Possible class values are: 'open', 'closed', 'wheel', 'cycle', 'elite', 'elitedev', 'vet', 'jvet', 'svet', 'relay', 'team', 'bike', 'kid', 'walk', 'disability', 'duo', 'misc',  or [user defined in roster].

wavecode is a combo of [course]-[sex]-[class].  Wavecodes are used for grouping of participants, specifically, to build Categories for the purpose of managing start waves, or for grouping in Leaderboards.  Categories can include one or more 'wavecodes'.  Wavecode is for internal/API purposes only and is not displayed to the public.

pid is the RTRT internal unique participant identifier.  This is always auto-generated by our system and should not change once assigned to participant (assuming consistency of unique key in registration data).

est_fin_time is the predicted finish time for this participant for the course they are running.  We will use this field to determine an Estimated Pace ('est_pace') for the Participant and this assists in plotting participants on the map more accurately before they reach the first split.  Alternatively, you can provide an 'est_pace' directly.

_ver is a number that starts as 1 when a record is created and advanced each time a profile record is changed.

You may also find these fields under certain conditions:

"i":"1307478599_000351", < system Unix timestamp & increment when inserted into the RTRT servers.  Used internally and for polling. >,

"u":"1307478599_000351", < system Unix timestamp & increment when last updated on the RTRT servers.  Used internally and for polling.  Appears only in 'agt' polling mode. >,

"a":"1307478599_000351", < system Unix timestamp & increment of the most recent between 'u' or 'i'.  Used internally and for polling.  Appears only in 'agt' polling mode. >

Import Logic:

  • NO COURSE RULE: If 'course' field is not specified, the 'course' for a profile is determined by searching 'division' or 'race' fields for a valid 'course'. For example, a race of "16.8km Men's Closed" will get course value of '16.8k'. Another example: A 'division' of "Half Marathon - General" would get a course of 'halfmarathon'.
  • NO RACE RULE: If 'race' field is not specified, the 'race' for a profile is determined by searching 'course' or 'division' fields, and using a common race mapping to determine a 'race' value. For example, a 'division' of "Half Marathon - General" would get a race of 'Half Marathon'. If race cannot be determined by looking at other fields, fallback to option set in Roster Options->Default Race.
  • NO CLASS RULE: If 'class' field is not specified, the 'class' for a profile is determined by searching 'division' or 'race' fields for a valid 'class'. For example, a race of "16.8km Men's Closed" will get class value of 'closed'.
  • WAVECODE: If Roster Options->Auto Wave Format is ON, we build a 'wavecode' by combining '[course]-[sex]-[class]'.