Your one-page cheat sheet for Racey. Permissions, plans, workflows, and troubleshooting — all in one place.
Role Permission Matrix
Racey has 44 permissions across 7 roles. Here's the complete mapping.
League & Settings
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
league.manage | Yes | Yes | — | — | — | — | — |
league.settings | Yes | Yes | — | — | — | — | — |
league.delete | Yes | Yes | — | — | — | — | — |
Seasons
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
season.create | Yes | Yes | — | — | — | — | — |
season.edit | Yes | Yes | — | — | — | — | — |
season.delete | Yes | Yes | — | — | — | — | — |
Schedule
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
schedule.edit | Yes | Yes | Yes | — | — | — | — |
Roster
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
roster.view | Yes | Yes | Yes | — | — | — | — |
roster.manage | Yes | Yes | Yes | — | — | — | — |
roster.approve | Yes | Yes | Yes | — | — | — | — |
Results
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
results.import | Yes | Yes | Yes | — | — | — | — |
results.edit | Yes | Yes | Yes | — | — | — | — |
results.publish | Yes | Yes | Yes | — | — | — | — |
results.lock | Yes | Yes | — | — | — | — | — |
Scoring
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
scoring.configure | Yes | Yes | Yes | — | — | — | — |
scoring.override (reserved) | Yes | Yes | — | — | — | — | — |
Protests & Penalties
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
protest.submit | Yes | Yes | — | — | — | — | Yes |
protest.review | Yes | Yes | — | Yes | — | — | — |
protest.rule | Yes | Yes | — | Yes | — | — | — |
protest.assign | Yes | Yes | — | — | — | — | — |
penalty.apply | Yes | Yes | — | Yes | — | — | — |
penalty.edit (reserved) | Yes | Yes | — | — | — | — | — |
Announcements
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
announcement.create | Yes | Yes | Yes | — | — | — | — |
announcement.publish | Yes | Yes | Yes | — | — | — | — |
Teams
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
team.create | Yes | Yes | — | — | — | — | — |
team.manage | Yes | Yes | — | — | — | Yes | — |
Race Control
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
race_control.manage | Yes | Yes | Yes | — | — | — | — |
race_control.assist | Yes | Yes | Yes | — | — | — | — |
race_control.marshal | Yes | Yes | Yes | — | — | — | — |
race_control.observe | Yes | Yes | Yes | Yes | Yes | — | — |
Broadcast
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
broadcast.access | Yes | Yes | — | — | Yes | — | — |
Staff & Billing
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
billing.manage | Yes | Yes | — | — | — | — | — |
staff.manage | Yes | Yes | — | — | — | — | — |
staff.invite | Yes | Yes | — | — | — | — | — |
Analytics & API
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
analytics.view | Yes | Yes | Yes | — | Yes | — | — |
api.keys | Yes | Yes | — | — | — | — | — |
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
platform.admin | Yes | — | — | — | — | — | — |
Assets (Liveries, Setups)
| Permission | Platform Admin | League Admin | Race Director | Steward | Broadcaster | Team Captain | Driver |
|---|
asset.read | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
asset.create | Yes | Yes | Yes | — | — | Yes | Yes |
asset.update | Yes | Yes | Yes | — | — | Yes | — |
asset.delete | Yes | Yes | — | — | — | Yes | — |
asset.version.create | Yes | Yes | Yes | — | — | Yes | Yes |
asset.version.promote | Yes | Yes | Yes | — | — | Yes | — |
asset.share.manage | Yes | Yes | Yes | — | — | Yes | — |
Totals by role
| Role | Permission count |
|---|
| Platform Admin | 44 (all) |
| League Admin | 43 |
| Race Director | 21 |
| Steward | 5 |
| Broadcaster | 4 |
| Team Captain | 8 |
| Driver | 4 |
Plan Comparison
| Feature | Free | Pro | Enterprise |
|---|
| Price (monthly) | $0 forever | $4.99/mo | Custom |
| Price (annual) | $0 forever | $49.90/yr | Custom |
| Leagues | 1 | Unlimited | Unlimited |
| Teams per league | 6 | Unlimited | Unlimited |
| Staff per league | 3 (active) | Unlimited | Unlimited |
| Steward seats | 2 | Unlimited | Unlimited |
| Drivers per league | Unlimited | Unlimited | Unlimited |
| Seasons per league | Unlimited | Unlimited | Unlimited |
| Events per season | Unlimited | Unlimited | Unlimited |
| Preset scoring systems | All | All | All |
| Custom scoring | No | Yes | Yes |
| Basic stewarding | Yes | Yes | Yes |
| Blind review + appeals + penalty points | No | Yes | Yes |
| Full analytics | Yes | Yes | Yes |
| Standings & leaderboards | Yes | Yes | Yes |
| Team management + standings | Yes | Yes | Yes |
| Discord — results, registrations, announcements, schedule updates | Yes | Yes | Yes |
| Discord — protest rulings, multi-channel routing, results and standings commands | No | Yes | Yes |
| CSV import + data export | Yes | Yes | Yes |
| Calendar / iCal feed | Yes | Yes | Yes |
| Season cloning | Yes | Yes | Yes |
| Entry fees (Stripe Connect, 0% commission) | No | Yes | Yes |
| Coupons & discount codes | No | Yes | Yes |
| Race Control panel | No | Yes | Yes |
| OBS broadcast overlays | No | Yes | Yes |
| Custom branding (logo, colors) | No | Yes | Yes |
| API access + webhooks | No | Yes | Yes |
| Organization dashboard + multi-league standings | No | Yes | Yes |
| Priority support | No | Yes | Yes |
| White-label options | No | No | Yes |
| Dedicated onboarding + support | No | No | Yes |
| Personal asset storage | 1 GB | 25 GB | Unlimited |
| Team asset storage | 1 GB | 25 GB | Unlimited |
| League asset storage | 1 GB | 25 GB | Unlimited |
Special pricing
| Program | Price | Details |
|---|
| Founding Leagues | Free forever | Existing founding leagues keep permanent Enterprise access. The public application window is closed. |
Key Workflows
Create a league
- Sign up and log in
- Click Create League — enter name, description, discipline, sim
- Invite staff (admin, race director, stewards, broadcasters)
Set up a season
- Go to your league and click Create Season
- Configure scoring (choose a preset or build custom)
- Add rounds to the schedule (tracks, dates)
- Open registration
Run a race
- Race happens in the simulator
- Import results (CSV upload or manual entry; iRacing direct session import is paused)
- Review for accuracy
- Publish — standings update automatically
Handle a protest
- Driver files a protest with evidence
- League admin assigns stewards
- Stewards review, discuss (notes), and vote
- Steward issues ruling with explanation
- Apply penalties if warranted
- Involved parties may appeal (one chance, before deadline)
Set up broadcast overlays
- League admin enables overlays (Pro/Enterprise required)
- Assign the Broadcaster role to your streamer
- Broadcaster opens the Broadcast Dashboard and copies overlay URLs
- Add URLs as Browser Sources in OBS (1920x1080, transparent)
- Optional: set overlay secret for token-protected streams
Collect entry fees
- League admin enables Stripe Connect in billing settings
- Complete Stripe onboarding (connect your bank account)
- Set entry fee amounts on the season (optional early-bird pricing)
- Drivers pay during registration — money goes directly to your Stripe account
- Process refunds through the payments dashboard if needed
Manage teams
- League admin creates teams for the season
- Team captain invites drivers
- Drivers accept team invitations
- Team standings calculated automatically based on scoring method (best N, sum all, or average all)
Set up Discord notifications
- Go to League Admin > Integrations > Discord
- Choose webhook-only setup or invite the Racey bot
- For webhook-only setup, paste the Discord webhook URL and send a test message
- For bot setup, follow Discord Bot Setup, then run
/setup <league-slug> in Discord
- Choose which events trigger notifications: results, registration, schedule updates, announcements, and Pro/Enterprise protest rulings
Discord Slash Commands
| Command | Availability | Purpose |
|---|
/setup | All plans | Link a Discord server to a Racey league |
/link | All plans | Link Discord to a Racey account by DM token |
/protest | Pro / Enterprise | Get a direct Racey protest filing link |
/standings | Pro / Enterprise | Show championship standings |
/results | Pro / Enterprise | Show recent race results |
/schedule | Pro / Enterprise | Show upcoming rounds |
/leaderboard | Pro / Enterprise | Show league leaderboard data |
/myresults | Linked Pro+ drivers | Show the linked driver's recent finishes |
/penalty-points | Linked Pro+ drivers | Show the linked driver's active penalty points |
The /ask AI assistant command is hidden until the production AI integration is enabled.
Scoring Presets at a Glance
| Preset | Top-3 Points | Key Feature |
|---|
| F1 | 25, 18, 15 | Fastest lap bonus (1 pt) |
| NASCAR | 40, 35, 34 | Stage points + manufacturer scoring |
| IndyCar | 50, 40, 35 | Pole bonus (1 pt) + most laps led (2 pts) |
| IMSA/WEC | 25, 18, 15 | Multi-class + team scoring |
| Oval Weekly | 43, 42, 41 | Drop 2 worst rounds |
| Road Weekly | 25, 18, 15 | Clean race bonus (2 pts) + drop 2 |
| GT3 Sprint | 25, 20, 16 | Pole + fastest lap bonuses |
| Heat + Feature | Feature: 25, 20, 16 | Separate heat and feature point arrays |
All plans include all 8 presets. Pro and Enterprise also unlock custom scoring.
Common Troubleshooting
1. "I can't create a second league"
Free plan allows 1 league. Upgrade to Pro for unlimited.
2. "Standings aren't updating after publishing results"
Standings recalculate automatically when results go to Official status. If they look wrong, check the scoring configuration and whether penalties have been applied.
3. "Driver can't register — says they're at the limit"
The season might be full (check max roster size), or the league may have hit a plan limit. Have the league admin check their subscription status.
4. "Broadcast overlay shows 403 Forbidden"
Either the league is on a Free plan (overlays require Pro), or the league has an overlay secret set and you didn't include the token in the URL. Get the token from your league admin.
5. "Discord notifications aren't working"
Check that: (1) the league is configured at League Admin > Integrations > Discord, (2) webhook-only setup has a valid webhook URL, or bot setup has completed /setup, (3) private Discord categories explicitly grant the Racey bot access, and (4) the specific notification type is toggled on. Results, registrations, announcements, and schedule updates are available on all plans. Protest rulings, multi-channel routing, and results/standings commands require Pro or Enterprise.
6. "I filed a protest but nothing is happening"
The league admin needs to assign stewards to your case. If it's been a while, reach out to your league admin directly.
7. "My drop weeks aren't being applied"
Drop weeks are configured per scoring preset. Check that the season's scoring config has drop weeks enabled and the count is correct. Note that if you've raced fewer rounds than the drop count, nothing gets dropped yet.
Only league admins can lock results (results.lock). Race directors can publish but not lock.
9. "Entry fee payment failed"
The league admin's Stripe Connect must be verified. Check that the connected account is active and the entry fee is configured on the season. If it's a driver payment issue, have them check their payment method.
10. "Overlay data is stale or not updating"
Right-click the OBS browser source and select Refresh. If that doesn't help, check that: (1) results have been published (pending results don't appear in overlays), (2) the SSE connection is working (the overlay auto-reconnects, but network issues can delay updates).