> ## Documentation Index
> Fetch the complete documentation index at: https://docs.time2.bike/llms.txt
> Use this file to discover all available pages before exploring further.

# Race-day runbook

> For the race director: what to do the week before, the morning of, during, and after.

This is the checklist version. It assumes your event is published and people are
registered — if you're not there yet, start with the
[Organizer quickstart](/organizers/quickstart).

## The week before

<Steps>
  <Step title="Assign bib numbers">
    **Event → Bibs → Auto-assign**. Pick a starting number and let it fill.

    Bib numbers are the only way Time2Bike identifies a rider on course, so
    nobody can be timed without one.

    If several races will finish through the same chute, give every rider a
    unique number across the whole event rather than restarting per race.

    → [Bibs](/organizers/events/bibs)
  </Step>

  <Step title="Open the Live Timing tab once">
    That's it — that's the setup. Your event's timer is created the first time
    you open the tab, and it already covers every race you've made.

    There's nothing to name, no mode to pick, and nothing to schedule.
  </Step>

  <Step title="Set up anything unusual about your races">
    Only if it applies. Open **Timer setup** on the timing screen — one panel
    with everything in it:

    | If your race…                   | Set                                                   |
    | ------------------------------- | ----------------------------------------------------- |
    | Counts laps                     | Lap mode, and a target lap count if there is one      |
    | Has a mid-course timing point   | Named [split points](/timing/screen/recording-points) |
    | Uses a rolling or staged start  | Check riders in, rather than mass start               |
    | Releases in groups              | [Waves](/timing/screen/waves)                         |
    | Shares a chute with other races | [Combined finish](/timing/formats/combined-finish)    |

    Dual slalom, downhill, time trial, and relay races configure themselves from
    the format you already picked on the Races page.
  </Step>

  <Step title="Issue links for your volunteers">
    **More actions → Operator tokens**. Create one per device, labelled so you
    know which is which — "Finish line 1", "Halfway split", "Backup".

    You see each link and QR code once, so screenshot or print them now. Put
    each one in an envelope with the volunteer's name on it.

    → [Volunteer links](/timing/crew/tokens-and-qr)
  </Step>

  <Step title="Do a five-minute dry run">
    Press **Start**, type a few bib numbers, press **Stop**. Check the times
    look right. Then **More actions → Reset timing data** to clear the test.

    This is the highest-value thing on this page. It catches a missing bib
    assignment, a wrong race format, or a volunteer link that doesn't work — a
    week early instead of at the start line.
  </Step>
</Steps>

> !!-IMAGE-NEEDED-!! — The **Live Timing** tab opened for the first time, with the race tabs across the top.

## The night before

* **Charge every device** that will be timing, and pack a battery pack for each
  one. A phone timing a three-hour race with the screen on will not survive on
  its own battery.
* **Save the timing screen for offline use** on each device — **More actions →
  Download for offline**. It'll then open with no signal at all.
* **Print your start lists** — **Event → Registrations**, filtered per race.
  You want paper if everything else fails.
* **Print the bib list** — **Event → Bibs → Download CSV**. Your finish-line
  volunteer will want to look up an unreadable number.
* **Set devices to never sleep** while plugged in.

## Race morning

<Steps>
  <Step title="Get your volunteers onto the timer">
    Hand out the QR codes. Each person scans, confirms the card that appears,
    and lands on the timing screen. Watch one of them do it.
  </Step>

  <Step title="Have each of them set their recording point">
    Whoever is at the halfway split taps **Halfway**; the finish judge leaves it
    on **Finish**. It sticks on their device.

    → [Recording points](/timing/screen/recording-points)
  </Step>

  <Step title="Check the sync dot on every device">
    Green is ideal. Red just means no signal — fine, they can still time. What
    you want is to know which device is which before the race starts.
  </Step>

  <Step title="Top up bib numbers for overnight registrations">
    Run **Auto-assign** again. It only fills empty numbers and won't touch
    what's already assigned.
  </Step>

  <Step title="Confirm the right race tab is selected">
    The highlighted tab decides which race a finish is recorded into. Getting
    this wrong is the most common race-day mistake, and the one that takes
    longest to unpick.
  </Step>
</Steps>

## During the race

| Moment                             | Do this                                                           |
| ---------------------------------- | ----------------------------------------------------------------- |
| The gun goes off                   | Press **START RACE** on that race                                 |
| The gun went and nobody pressed it | **Set the start time** — type when it actually went               |
| A rider crosses                    | Type their bib, press Enter — or tap their name in the rider list |
| You can't read a bib               | Tap the rider in **Registered riders**                            |
| You just made a mistake            | Press **UNDO**                                                    |
| A rider quits                      | Tap their row → **DNF**                                           |
| Someone turns up on the day        | **More actions → Add riders**                                     |
| Course hold                        | **Freeze clock**, then unfreeze                                   |
| The race ends                      | Press **STOP** on that race                                       |

<Warning>
  **Don't switch devices mid-race unless you have to.** If a device still has
  finishes that haven't uploaded, they live on that device until it gets signal.
  If you must swap, get the old one back onto Wi-Fi and wait for the dot to go
  green before putting it away.
</Warning>

### Want spectators to follow along?

Press **Share live results** and copy the spectator link. Results update as you
record and stay marked unofficial until you publish.

→ [Sharing live results](/timing/results/live-sharing)

## Right after each race

Do this while the riders are still on site — it's much easier to resolve a
disputed time when the rider is standing in front of you.

<Steps>
  <Step title="Scan the finish list for flags">
    The screen marks anything it isn't sure about: a rider recorded twice, a
    finish with no matching start, someone who started but never finished.
  </Step>

  <Step title="Fix what needs fixing">
    Tap any row for the correction menu — change the time, mark DNF / DNS /
    DSQ, delete a bad entry, add a note.

    → [Corrections](/timing/screen/corrections)
  </Step>

  <Step title="Mark your non-starters">
    Anyone registered who didn't line up should be DNS, or they'll sit in the
    results unaccounted for.
  </Step>

  <Step title="Finalize">
    Locks the results so nothing else can change. It won't let you finalize
    while a device still has finishes waiting to upload — which is exactly the
    check you want at this moment.
  </Step>

  <Step title="Publish">
    Results go live on your event page, land on each rider's profile, and
    finishers get an email.

    → [Finalize & publish](/timing/results/finalize-and-publish)
  </Step>
</Steps>

## After the event

* **Post a PDF** for the awards tent — **Results PDF**, or the combined
  event PDF for the whole weekend on one sheet.
  → [Exports](/timing/results/exports)
* **Handle protests.** You can unlock a finalized timer, correct it, and publish
  again. Every original entry is still there.
* **Process refunds** for no-shows if your policy allows.
  → [Refunds](/organizers/pricing/refunds)
* **Check your numbers** — **Event → Analytics**.

## If something goes wrong

<AccordionGroup>
  <Accordion title="A volunteer's device says 'session not found'" icon="triangle-exclamation">
    Their link expired or was revoked. Issue a new one from **Operator tokens**
    and have them scan it. Nothing they already recorded is lost.
  </Accordion>

  <Accordion title="Nobody pressed Start" icon="triangle-exclamation">
    Keep recording finishes. They'll show as "awaiting start". Press **START
    RACE** and the elapsed times fill themselves in.
  </Accordion>

  <Accordion title="Finishes went into the wrong race" icon="triangle-exclamation">
    Switch to the correct race tab first so new entries land properly, then
    delete and re-record the ones that went astray.
  </Accordion>

  <Accordion title="The chute is busier than you can type" icon="triangle-exclamation">
    Switch to [combined finish](/timing/formats/combined-finish) and use blind
    capture — stamp each crossing with no bib, attach numbers afterwards.
  </Accordion>

  <Accordion title="A timing device died" icon="triangle-exclamation">
    Anything it had already uploaded is safe and visible from any other device.
    Anything it hadn't is on that device — charge it and let it connect. If it
    won't come back at all, your other devices plus the paper backup are the
    recovery path.
  </Accordion>

  <Accordion title="Everything is on fire" icon="triangle-exclamation">
    Time on paper. Enter finish times by hand afterwards from the correction
    menu, and results publish exactly the same way.
  </Accordion>
</AccordionGroup>

→ [Full troubleshooting](/timing/results/troubleshooting)
