Race Import File Format
This page describes the file format accepted by the Import Races feature. For instructions on how to perform an import, see Importing Races.
Contents
- Supported file types
- Required columns
- Optional columns
- Pricing columns
- Date and datetime formats
- Matching and updating existing races
- Example
Supported file types
The import accepts:
- CSV (
.csv) — comma-separated values, UTF-8 encoded - Excel (
.xlsx) — the first worksheet is used
The first row must be a header row containing the column names. Column names are case-insensitive and leading/trailing whitespace is ignored.
Required columns
| Column name | Description |
|---|---|
race name |
The name of the race. Used together with race date to match an existing race. |
race type |
The race type code (short_name) or full name. Must match an existing race type configured for the organisation. |
race date |
The date the race takes place. Accepted formats: YYYY-MM-DD or DD/MM/YYYY. |
entry closing date |
The date and time after which entries can no longer be submitted. See Date and datetime formats. |
If any required column is missing or contains an invalid value, the row is skipped and an error is reported. All other rows continue to be processed.
Optional columns
| Column name | Description |
|---|---|
race code |
A short internal code for the race. Truncated to 20 characters if longer. |
location |
The race venue address or name, stored as a text description. |
location latlng |
The venue coordinates in latitude,longitude format (e.g. 51.5074,-0.1278). |
entry opening date |
The date and time from which entries can be submitted. If omitted or left blank, entries open immediately when the race is saved. |
subaccount |
The subaccount (club) code or name to associate the race with. If the value does not match any subaccount, the field is left blank. |
Pricing columns
Pricing columns are dynamic — they are named after the pricing levels and competitor groups configured for each race type. The column names follow these patterns:
Pricing level deadline
pricing {code} deadline
Where {code} is the code of a pricing level. For example, if a race type has a pricing level
with the code PR1, the deadline column is:
pricing PR1 deadline
The value should be a datetime (see Date and datetime formats). If left blank, the pricing level has no deadline.
Competitor group fee
fee {group_code} {pricing_code}
Where {group_code} is the code of a competitor group (age class) and {pricing_code} is the
code of a pricing level. For example, for a group with code adult and a pricing level with code
standard:
fee adult standard
The value should be a decimal number representing the entry fee in the organisation’s currency
(e.g. 15.00 or 15). Rows with an invalid fee value for a column are silently skipped for that
column; other columns are still processed.
Date and datetime formats
Both dates and datetimes are accepted in the following formats:
| Format | Example |
|---|---|
YYYY-MM-DD |
2025-03-15 |
DD/MM/YYYY |
15/03/2025 |
YYYY-MM-DD HH:MM |
2025-03-15 09:00 |
DD/MM/YYYY HH:MM |
15/03/2025 09:00 |
Times are interpreted in the organisation’s local timezone. If a time is omitted from a datetime
field, midnight (00:00) is used.
Matching and updating existing races
The import uses race name and race date together as a unique identifier. If a race with the same name and date already exists for the organisation, it is updated with the values from the file. If no match is found, a new race is created.
This means re-uploading a file with the same races is safe — existing races are updated rather than duplicated.
Example
The following example shows a minimal CSV file importing two races:
race name,race type,race date,entry closing date,entry opening date,location
Spring Sprint,Standard,2025-04-12,2025-04-10 23:59,2025-01-01 00:00,Twickenham Rowing Club
Summer Series,Standard,2025-06-21,2025-06-19 23:59,,Henley-on-Thames
- Spring Sprint has an explicit entry opening date of 1 January 2025.
- Summer Series has no entry opening date, so entries open immediately when the import runs.
With pricing columns added:
race name,race type,race date,entry closing date,pricing PR1 deadline,fee adult PR1,fee junior PR1
Spring Sprint,Standard,2025-04-12,2025-04-10 23:59,2025-03-01 23:59,20.00,10.00
Summer Series,Standard,2025-06-21,2025-06-19 23:59,2025-05-01 23:59,22.00,11.00