Skip to main content
Back to Racey School
Most comprehensive
12 min read
Owners, commissioners, and operators

League Admin Guide

Create the league, shape the season, manage staff, and run the operating workspace for race night.

Launch a league and first season
Configure scoring, schedule, and billing
Set up staff, Discord, and announcements
Use this guide during beta
1
Create one public league with a live season shell
2
Import or review a results flow from start to publish
3
Invite at least one steward or broadcaster
Open quick reference

You're building something. A racing community with real structure — seasons, standings, fair stewarding, broadcast-quality production. Racey gives you every tool to run a professional league without needing a dev team. This guide walks through everything, from your first login to collecting entry fees and broadcasting to thousands.


Getting Started

What Racey is

Racey is a sim racing league management platform. It handles the organizational side of competitive sim racing — the seasons, schedules, results, standings, protests, and broadcasts — so you can focus on building your community and running great events.

Racey doesn't run the simulator. Your races happen in iRacing, ACC, rFactor 2, or AMS2. Racey manages everything around the racing: who's signed up, what the results are, who's leading the championship, and what happens when someone divebombs into Turn 1.

Creating your first league

  1. Sign up and log in
  2. Click Create League from your dashboard
  3. Fill in:
    • Name — your league's identity
    • Slug — the URL-friendly version (auto-generated, but you can customize it)
    • Description — tell potential members what your league is about
    • Discipline — road, oval, dirt oval, dirt road, endurance, or multiclass
    • Sim — iRacing, ACC, rFactor 2, or AMS2
    • Skill level — open, intermediate, advanced, or professional
    • Region and timezone — for scheduling
    • Visibility — public (anyone can find it) or private (invite only)
  4. Click Create

Your league is created in draft status. Once you're happy with the setup, activate it to make it visible (if public).

Your league dashboard

The league dashboard is your command center. From here you can access:

  • Overview — member count, season status, recent activity
  • Seasons — create and manage championships
  • Schedule — rounds, tracks, and dates
  • Roster — driver registrations
  • Results — import, review, publish, and lock race results
  • Standings — championship rankings (auto-calculated)
  • Scoring — configure point systems
  • Stewarding — protests, rulings, penalties
  • Teams — team management and standings
  • Broadcast — overlay setup for streamers
  • Staff — role assignments for your team
  • Integrations — Discord and iRacing connections
  • Communications — announcements, rulebook updates, and guideline posts
  • Race Control — live race operations and marshal tools
  • Assets — liveries, setups, telemetry, documents, and shared files
  • Settings — league configuration, branding, and billing
  • Analytics — league health metrics and driver performance trends
  • Announcements — communicate with your members

Understanding plans

Racey has three plans: Free, Pro ($4.99/mo), and Enterprise. You start on Free by default — no trial, no credit card.

Free ($0 forever)

  • 1 league, 6 teams, 3 active staff, 2 steward seats
  • Unlimited drivers, seasons, and events
  • All preset scoring systems
  • Full standings, full analytics, basic stewarding
  • Discord: results, registrations, announcements, and schedule updates
  • Announcements, polls, calendar/iCal, CSV import, data export, season cloning
  • Asset storage: 1 GB across personal, team, and league scopes

Pro ($4.99/month or $49.90/year)

Everything in Free, plus:

  • Unlimited leagues, teams, staff, and stewards
  • Entry fees (Stripe Connect, 0% commission), coupons, blind review, appeals, penalty points
  • Custom scoring, drop weeks, multiclass
  • Race Control panel, OBS broadcast overlays, API access, custom branding
  • Organization dashboard, multi-league standings, priority support
  • Discord: protest rulings, multi-channel routing, results commands, and standings commands
  • Asset storage: 25 GB across personal, team, and league scopes

Enterprise (Custom pricing)

Everything in Pro, plus:

  • White-label options (coming soon)
  • Dedicated onboarding and support
  • Unlimited asset storage

Current limitations

White-label options are still marked as coming soon in the product. Endurance teams and multiclass scoring can run today; stint tracking is handled by race-control managers where the Race Control stint tool is enabled, not by team or driver self-service.

Founding member program

The original founding leagues keep Enterprise free, forever — a permanent perk applied manually by the platform team. The public founding-league application window is closed; new leagues should choose Free, Pro, or contact Racey for a normal sales/support conversation.


League Configuration

League settings

Under Settings, you can configure:

  • Name and description — update at any time
  • Logo and banner — visual branding for your league page
  • Visibility — toggle between public and private
  • Discipline — road, oval, dirt oval, dirt road, endurance, or multiclass
  • Skill level — open, intermediate, advanced, or professional
  • Region and timezone — affects how dates are displayed
  • Code of conduct — text that drivers must accept when joining
  • Custom rules — additional rules specific to your league

Sim selection

Racey currently supports four simulators:

SimIntegration level
iRacingCustomer ID matching plus CSV/manual result import today; OAuth profile sync and direct session import are paused pending upstream OAuth access
Assetto Corsa CompetizioneInterface ready — CSV result import
rFactor 2Interface ready — CSV result import
Automobilista 2Interface ready — CSV result import

iRacing gets the strongest identity matching today: drivers save their iRacing Customer ID, Racey matches imported result rows to linked drivers, and admins review unmatched rows during import. Automatic iRacing profile sync and direct session import are built around OAuth access, but are not available while iRacing's new OAuth client access is paused. For other sims, use CSV import or manual entry.

Staff management

Your league needs a team. Here's how to build one:

  1. Go to Settings > Staff Management
  2. Click Add Staff
  3. Enter the person's email or username
  4. Assign one or more roles

The role hierarchy

RolePermissionsBest for
League Admin43 permissions — full league controlCo-owners, trusted lieutenants
Race Director21 permissions — schedule, results, roster, scoring, race control, announcements, analytics, assetsOperational managers
Steward5 permissions — review protests, issue rulings, apply penalties, observe race control, read assetsFair-minded, experienced racers
Broadcaster4 permissions — broadcast tools, analytics, observe race control, read assetsStreamers and commentators
Team Captain8 permissions — manage their team plus full asset lifecycleTeam leaders
Driver4 permissions — file protests, read/create assets, create new asset versionsEvery registered racer

See the Quick Reference for the complete 44-permission matrix.

Inviting someone to staff creates an invited row that doesn't consume a staff seat until they accept. Only active staff count against your plan's staff limit.

You can assign multiple roles to one person. A race director who also stewards would get both roles and the combined permissions.

To revoke a role, go to the staff member's entry and remove the role assignment. Their permissions update immediately.


Seasons and Scheduling

Creating a season

  1. Go to your league and click Create Season
  2. Fill in:
    • Name — must be unique within the league (e.g., "Season 3 — Road to Glory")
    • Start and end dates — when the championship runs
    • Scoring system — choose a preset or build custom (see Scoring below)
  3. Save

Seasons progress through these statuses:

StatusWhat's happening
DraftSetting things up — not visible to drivers
RegistrationOpen for driver sign-ups
ActiveRacing is underway
PlayoffFinal rounds / elimination format
CompletedAll rounds finished, standings final
ArchivedHistorical record

You can clone a completed season to quickly set up the next one. Cloning copies the scoring configuration, car classes, and schedule structure.

Schedule builder

Each season has a schedule of rounds. To add one:

  1. Go to the season's Schedule tab
  2. Click Add Round
  3. Set the track, date/time, and any configuration details (layout, weather, session length)
  4. Save

Repeat for every round in the season. You can reorder, edit, or delete rounds at any time before they're completed.

Registration workflow

When your season is ready, change its status to Registration to start accepting drivers.

Drivers apply through the season page. Each registration includes:

  • Car number selection (must be unique per season — Racey checks for conflicts)
  • Car class selection (for multi-class seasons)
  • Team assignment (if applicable)
  • Application data (custom form responses if you've set them up)
  • Code of conduct acceptance
  • Entry fee payment (if configured)

You (or your race director) review each application and approve, deny, or waitlist it. Drivers get notified of the outcome.

Registration statuses:

StatusMeaning
PendingWaiting for review
ApprovedDriver is in
DeniedApplication rejected
WaitlistedRoster full, waiting for a spot
WithdrawnDriver pulled out

Managing your roster

Under Roster, you can:

  • View all registrations by status
  • Approve or deny pending applications
  • Edit car numbers (resolve conflicts)
  • Assign or change car classes
  • View driver sim profiles (iRating, safety rating) if linked

Race Operations

Results import

After each race, you need to get results into Racey. Three methods are available:

iRacing CSV/manual import

For iRacing today:

  1. Export the race results from iRacing
  2. Go to League Admin > Results
  3. Upload the CSV or enter the result manually
  4. Review any unmatched drivers and map them by iRacing Customer ID
  5. Confirm the import

Direct iRacing session import is disabled until upstream OAuth access is available again.

CSV upload

  1. Go to the round page
  2. Click Import Results
  3. Upload your CSV file
  4. Map columns to Racey fields
  5. Review and confirm

Manual entry

  1. Go to the round page
  2. Add results one driver at a time
  3. Enter position, laps, fastest lap, incidents, finish status

Publishing results

Results progress through four states:

StateWhat it meansWho can set it
PendingImported but unreviewedAuto (on import)
ReviewedChecked by staffRace Director, Admin
OfficialPublished — counts toward standingsRace Director, Admin
LockedFinalized — no editsAdmin only

When you publish results (move to Official):

  • Championship standings recalculate automatically
  • All registered drivers receive notifications
  • Discord notification fires (if configured)
  • Broadcast overlays update with new data

Corrections

If you spot an error after publishing, use Results > Edit to correct individual entries. Every correction is tracked:

  • What was changed (field, old value, new value)
  • Who changed it
  • Why (reason field)

Locked results cannot be edited — you must unlock them first (admin only).

Standings

Standings are calculated automatically by the scoring engine. You don't manually compute points — Racey handles it based on your scoring configuration.

What goes into standings:

  1. Position points from each round
  2. Bonus points (pole, fastest lap, laps led, positions gained, clean race)
  3. Stage points (if using NASCAR-style staging)
  4. Penalty deductions (from steward rulings)
  5. Drop weeks (lowest N rounds excluded)
  6. Tiebreakers: most wins, then most podiums, then best single finish

Standings update every time results are published or a points penalty is applied.


Scoring

Scoring presets

Racey ships with 8 scoring presets on every plan. Pro and Enterprise also unlock fully custom scoring configurations.

F1 (Formula 1)

  • Points: 25, 18, 15, 12, 10, 8, 6, 4, 2, 1
  • Bonuses: Fastest lap = 1 point
  • Best for: Road racing series where fastest lap matters

NASCAR

  • Points: 40, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  • Bonuses: Most laps led = 1 point
  • Special: Stage points (10, 9, 8, 7, 6, 5, 4, 3, 2, 1 per stage) and manufacturer scoring (best 3 drivers)
  • Best for: Stock car leagues with multi-stage races

IndyCar

  • Points: 50, 40, 35, 32, 30, 28, 26, 24, 22, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5
  • Bonuses: Pole = 1 point, most laps led = 2 points
  • Best for: Open-wheel and oval series

IMSA / WEC (Multi-Class Endurance)

  • Points: 25, 18, 15, 12, 10, 8, 6, 4, 2, 1
  • Bonuses: Pole = 1 point
  • Special: Multi-class scoring (each class scored separately) and team scoring (sum all members, default 2 per team)
  • Best for: Endurance racing with multiple car classes

Oval Weekly

  • Points: 43, 42, 41, 40, 39... down to 1 (43 positions)
  • Bonuses: Most laps led = 1 point
  • Special: Drop 2 worst rounds
  • Best for: Weekly oval series (available on Free plan)

Road Weekly

  • Points: 25, 18, 15, 12, 10, 8, 6, 4, 2, 1
  • Bonuses: Clean race (0 incidents) = 2 points
  • Special: Drop 2 worst rounds
  • Best for: Weekly road series rewarding clean racing (available on Free plan)

GT3 Sprint

  • Points: 25, 20, 16, 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  • Bonuses: Pole = 1 point, fastest lap = 1 point
  • Best for: GT3 sprint formats

Heat + Feature

  • Heat points: 10, 8, 6, 5, 4, 3, 2, 1
  • Feature points: 25, 20, 16, 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  • Both heat and feature points sum together for the round total
  • Best for: Short track formats with qualifying heats

Custom scoring

On Pro and Enterprise plans, you can build fully custom scoring configurations:

  • Position points — define any number of positions with any point values
  • Bonus points — set values for pole, fastest lap, most laps led, most positions gained, clean race, attendance
  • Drop weeks — exclude N worst rounds from championship
  • Best of — keep only the top N rounds
  • Stage points — define points for each stage finish
  • Heat + Feature — separate point arrays for heats and features
  • Multi-class — score classes separately with individual standings
  • Team scoring — choose method: best N drivers, sum all, or average all
  • Manufacturer scoring — same methods as team scoring
  • Half points — automatically apply 50% points when a race completes less than half its scheduled laps

How ties are broken

When two drivers have the same total points:

  1. Most wins
  2. Most podiums
  3. Best single finish position

Stewarding

Racey includes a structured stewarding system inspired by FIA race governance. Basic stewarding (protests, rulings, penalties) is available on all plans. Advanced features — blind review, appeals, and penalty points — require Pro or Enterprise.

For the full details, see the Steward Guide and the Stewarding Reference.

Enabling stewarding

Basic stewarding — protests, rulings, and penalties — is available on every plan including Free. Blind review, appeals process, and penalty points tracking are Pro/Enterprise features.

Appointing stewards

  1. Go to Settings > Staff Management
  2. Invite the people you want as stewards
  3. Assign them the Steward role

We recommend 3 to 5 stewards per league. This gives you enough people to staff a panel without any individual being overloaded. Stewards get five permissions: protest.review, protest.rule, penalty.apply, race_control.observe, and asset.read.

Choose people who:

  • Are experienced racers who understand racing rules
  • Can be objective and fair
  • Are willing to review evidence and write reasoned decisions
  • Won't let personal relationships influence their rulings

Blind review

Blind review anonymizes the drivers in a protest. When enabled:

  • Stewards see "Driver A" and "Driver B" instead of real names
  • The submitter's identity is hidden
  • Avatars and profile info are stripped

You (as league admin) always see real names, even during blind review. You can enable blind review on a per-protest basis — useful for controversial incidents or close championship battles.

How it works technically: labels are assigned deterministically (complainants first, then respondents, then witnesses) using a stable ordering, so the same driver always gets the same letter within that protest.

Managing protests

When a driver files a protest:

  1. You'll see it in your Stewarding dashboard
  2. Assign stewards — select 2-3 stewards for the panel. The system automatically flags conflicts of interest (shared teams, self-assignment).
  3. Optionally enable blind review
  4. The protest status moves to Under Review
  5. Stewards review evidence, add notes, and vote
  6. A steward issues a ruling with verdict, explanation, and any penalties
  7. Involved parties may appeal (once, before the deadline)
  8. You or a reviewer resolve any appeals
  9. The protest closes

Penalties

Stewards can apply 12 types of penalties:

TypeSporting impact
WarningNone — formal notice only
ReprimandNone — on record
ProbationNone — conditional
Time penaltySeconds added to race time
Position penaltyPositions lost in classification
Points deductionChampionship points removed (affects standings directly)
Grid penaltyGrid positions lost for future race
Pit startMust start from pit lane
Qualifying banCannot qualify for a future round
Race banCannot race in a future round
SuspensionBanned for multiple rounds
DisqualificationRemoved from race results

Only points deduction penalties directly affect championship standings. Other types are recorded but enforced operationally.


Teams and Organizations

Teams

Teams are managed per season. To set up teams:

  1. Go to the season's Teams section
  2. Create teams with names, logos, and slugs
  3. Assign a team captain who can invite drivers
  4. Team captains send invitations; drivers accept or decline

Team member roles:

  • Captain — manages the team roster
  • Co-captain — backup leadership (same permissions)
  • Driver — races under the team banner

Team standings are calculated based on the scoring configuration's team scoring method:

  • Best N — sum the top N drivers' points per team
  • Sum all — every team member's points count
  • Average all — average across all members

For endurance racing, race-control managers can track driver stints in Race Control when the stint workflow is enabled. Team and driver self-service stint management is not available today.

Organizations

Organizations let you manage multiple leagues under one umbrella. An organization has:

  • Owner — full control
  • Admins — manage leagues and members
  • Members — access based on their league roles

Each organization can own multiple leagues, share branding, and manage subscriptions at the org level. This is particularly useful for large communities running leagues across different sims or disciplines.


Billing and Finances

Stripe Connect

Racey uses Stripe Connect for entry fee collection with a zero-commission model. Here's what that means:

  • Stripe processes payments directly to your connected Stripe account
  • Racey never touches the money — it goes straight to you
  • You pay only Stripe's standard processing fees (~2.9% + $0.30 per transaction)
  • Racey takes zero commission on entry fees

To set up Stripe Connect:

  1. Go to Settings > Billing
  2. Click Connect with Stripe
  3. Complete Stripe's onboarding process (business info, bank account, identity verification)
  4. Once verified, you can set entry fees on your seasons

Stripe Connect requires a Pro or Enterprise plan (connectEnabled).

Entry fees

Once Stripe is connected:

  1. Go to your season settings
  2. Set the entry fee amount
  3. Optionally set early-bird pricing with a deadline — drivers who register before the deadline pay a reduced rate
  4. Drivers pay during registration — the fee is collected before their application is submitted

Coupons and discounts

You can create coupons for your league:

  1. Go to Settings > Billing > Coupons
  2. Create a coupon with:
    • Code — what drivers enter to get the discount
    • Type — percentage off or fixed amount off
    • Value — the discount amount
    • Max uses — how many times the coupon can be redeemed
    • Expiry date — when the coupon stops working

Refunds

If you need to refund an entry fee:

  1. Go to Settings > Billing > Payments
  2. Find the payment
  3. Click Refund

Refunds are processed through the connected Stripe account. The refund appears on the driver's statement within 5-10 business days depending on their bank.


Broadcasting

Broadcast overlays let your streamers display professional race graphics in OBS. This requires a Pro or Enterprise plan (broadcastOverlays).

For the full broadcaster setup guide, see the Broadcaster Guide.

The six overlay types

  1. Timing Tower — position tower with gaps, fastest laps, pit/DNF status
  2. Championship Standings — lower-third bar chart of the championship
  3. Driver Card — featured driver popup with stats and photo
  4. Incident Ticker — recent stewarding notices, color-coded by severity
  5. Fastest Lap — stinger highlighting the current fastest lap holder
  6. Battle Tracker — closest on-track battle with gap visualization

All overlays render at 1920x1080 with transparent backgrounds for OBS browser sources.

Getting overlay URLs for broadcasters

  1. Assign the Broadcaster role to your streamer
  2. They access the Broadcast Dashboard
  3. Each overlay type has a copyable URL
  4. URLs include the leagueId parameter and optionally a roundId for specific rounds

Token-protected overlays

For private leagues, you can protect overlays with a signed token:

  1. Go to League Settings
  2. Set an overlay secret
  3. Racey generates HMAC-SHA256 tokens tied to your league
  4. Share the token with your broadcaster — they append it to the overlay URL
  5. Without a valid token, the overlay returns 403 Forbidden

If no overlay secret is set, overlays are public (accessible without a token).

OBS setup summary

Tell your broadcasters:

  1. Add a Browser Source in OBS
  2. Paste the overlay URL
  3. Set dimensions to 1920x1080
  4. Transparent background — it layers over race footage
  5. Data updates in real time via SSE with 30-second heartbeat and automatic reconnection

Discord Integration

Discord integration posts league events into your server and, when the bot is installed, gives members slash commands for league lookups. Basic delivery is available on every plan. Pro and Enterprise add protest-ruling posts, multi-channel routing, and the results/standings command set.

Setting up notifications

Go to League Admin > Integrations > Discord. There is no Guild ID field in Racey; the bot learns the Discord server when an admin runs /setup from that server.

Option A: webhook only

  1. In Discord, open Server Settings > Integrations > Webhooks
  2. Create a webhook for the channel you want Racey to post into
  3. Copy the webhook URL
  4. Paste it into the Webhook URL field on Racey
  5. Click Save Webhook
  6. Click Send Test Message to verify delivery

If the webhook is revoked or deleted in Discord, Racey detects the Discord 404 on the next publish attempt and disables the integration so the admin UI shows the revoked-webhook state instead of silently failing.

Option B: bot integration

  1. Invite the Racey Discord bot to your server using the Discord Bot Setup guide
  2. In Discord, run /setup <your-league-slug>
  3. Pick the notifications channel and, if you have Pro or Enterprise, a separate results channel
  4. Return to League Admin > Integrations > Discord and confirm the bot configuration shows as connected

For private categories or private channels, explicitly add the Racey app or bot role to the category before running /setup. Discord will otherwise return Missing Access even if the bot is present in the server.

Toggle which events you want Racey to publish:

NotificationWhat gets posted
Results publishedPodium display with round results
Protest rulingsVerdict and penalty summary (Pro/Enterprise)
Registration openSeason registration is now accepting drivers
Registration closedRegistration period has ended
Schedule updatesRound date, track, or session updates
AnnouncementsLeague announcements

Slash commands and linked drivers

The bot adds these commands once it is invited and /setup has linked the server to a league:

CommandWho uses itWhat it does
/setupLeague adminsLinks the Discord server to a Racey league
/linkDriversSends a DM verification URL to link Discord to Racey
/standingsMembers on Pro+ leaguesShows championship standings
/resultsMembers on Pro+ leaguesShows recent race results
/scheduleMembers on Pro+ leaguesShows upcoming rounds
/leaderboardMembers on Pro+ leaguesShows league leaderboard data
/myresultsLinked drivers on Pro+Shows the linked driver's recent finishes
/penalty-pointsLinked drivers on Pro+Shows the linked driver's active penalty points
/protestDrivers on Pro+ leaguesSends a link to file a protest in Racey

Once a driver links with /link, Racey can use that linked account for personal commands and bot DMs. The most important DM is a protest ruling summary when stewards rule on a protest the driver filed or was involved in.

What gets posted

Discord notifications use rich embeds with:

  • League branding (name, logo)
  • Round/season context
  • Relevant data (podium finishers, ruling verdicts, registration links)

Notifications fire automatically when the triggering event occurs — you don't need to manually post anything. For the canonical setup flow and command list, use Discord Bot Setup.


Inviting Members

Email invites

  1. Go to Settings > Invites
  2. Click Invite Member
  3. Enter the person's email address
  4. Choose their initial role (or just invite as a member)
  5. Send

The invite includes:

  • A link to join your league
  • Your league name and description
  • The role they're being invited to
  • An expiry date (invites don't last forever)

Bulk invites

Have a roster from last season? Use bulk invites:

  1. Go to Settings > Invites
  2. Click Bulk Invite
  3. Enter multiple email addresses
  4. Set the role for all of them
  5. Send

If your league is public, anyone can find it in the league browser. Share the direct URL with potential members:

https://racey.gg/leagues/your-league-slug

Private leagues won't appear in search — members need a direct invite.

Managing pending invites

Under Invites, you can see:

  • Pending — sent but not yet accepted
  • Accepted — invite used, member joined
  • Expired — past the expiry date
  • Revoked — you cancelled the invite

You can revoke any pending invite at any time.