For race directors

Heats

Split a sub-event into heats. Works for track meets (pace-grouped heats with a shared sub-event start time) and for staggered start waves (each heat with its own gun time). Configure per sub-event; toggle off when you don't need it.

Open the page

From your event's director dashboard, click Heats in the sidebar. You see every sub-event with a status pill: Heats off, Heats on · no heats yet, or the count of configured heats.

Turning heats on for a sub-event

  1. Click 'Configure' on the sub-event

    Expands the editor inline.
  2. Flip 'Enable heats for this sub-event' on

    Required before any heat data participates in registration. Heat data IS preserved when the toggle is off, so you can turn it off temporarily without losing setup.
  3. Decide: registrant chooses, or you assign?

    The Registrants choose their heat toggle records your intent — but the sign-up-time heat picker isn't live yet, so today every registration lands unassigned and you place athletes into heats yourself (see below).
  4. Add heats

    Click Add heat. Each heat gets a name (auto: “Heat 1”, “Heat 2”), with optional start time, capacity, notes, and a private code.
  5. Drag to reorder

    The order matters for displays + for the Bib assignments “Stratified by heat” rule.
  6. Save heats

    Click Save heats. Done.

What each heat field does

Heat name
Auto-named "Heat 1", "Heat 2", etc. Change to anything: "Elite", "Boys' 800 Heat 1", "6:00 pace".
Start time (optional)
Per-heat gun time. Leave blank to inherit the sub-event's start time — common for track meets where every heat starts at the same wall-clock minute on different tracks.
Capacity (optional)
Max athletes in this heat. Useful for a real wave-start where lane count or course density caps a heat. Blank = no limit.
Private code (optional)
Gates the heat behind a code once self-selection is live — athletes will have to enter the code to pick that heat. Meant for invite-only elite heats inside an otherwise-public sub-event.
Notes for athletes (optional)
Free text saved with the heat for context like "Goal pace: 6:00–7:00 / mile" or "Open lanes 4–6".

The two real-world models

Track meet

Pace-grouped heats with a shared sub-event start time. Common for high-school invitationals, all-comers track meets, and masters meets.

  • Sub-event start time = the wall-clock minute of the event
  • Per-heat start time stays blank
  • You might let registrants self-select pace (“I'm targeting 6:00”) OR have them answer a PR / goal question and seed heats yourself later
  • Private codes on elite heats so only invited runners can self-select them

Staggered start waves

Per-heat start times. Common for big-field road races doing wave starts to manage chute density.

  • Each heat has its own gun time (e.g. 7:00, 7:15, 7:30)
  • Capacity per heat caps wave size
  • Usually director assigns rather than registrant chooses — you batch athletes into waves the night before

Deleting a heat

Click the trash icon next to a heat. Deleting a heat does not move anyone — registrations assigned to it simply lose their heat and show as unassigned. If people are already placed in a heat, reassign them from the Registrations roster first, then delete.

Assigning athletes to heats

Heat assignment happens from the Registrations roster: open a registration, click Manage registration, and use Change heat (the option only appears for sub-events that have heats configured). Assigned heats then show up on the start line, in race results, and in the roster.

Planned: a drag-to-assign roster

A per-heat roster view with an Unassigned bucket and drag-to-move is designed but not built yet — for now, assignment is per-registration from the roster.

Heats and bib assignments

On the Bib assignments page, the Stratified by heat rule groups by heat order (your drag-to-reorder above), then assigns bibs sequentially within. So Heat 1 athletes get the lowest bibs, Heat 2 next, etc. Useful when bib order signals start-line position.

When heats are off

The toggle Enable heats for this sub-event decides whether heats participate in registration — not whether the heat list is visible. You can preserve heat data from last year while temporarily disabling heats for this edition.