Documentation

Setup Guide & FAQ

Everything you need to get your dynasty league running with DynastyDesk — from first invite to full advance cadence.

Add to Discord Get Support

discordGetting Started

DynastyDesk runs two ways: a Discord bot for leagues coordinating multiple people, and a standalone web app for solo dynasties. This guide covers Discord setup for leagues first — solo players can jump straight to the Web App section.

Playing solo? You don't need Discord at all — create your team on the web and skip to the Web App section below. Everything from here through Stream Alerts is for leagues coordinating multiple people.

Requirements (for a Discord league)

  • Discord server — any server you manage
  • Manage Server permission — needed to invite the bot
  • A designated league channel — where the live status board posts
  • A member role (recommended) — scopes bot interactions to league members only

Shared servers: If your league lives in a server with non-members, always assign a member role during /dd setup to keep notifications and reactions scoped to your league.

discordInitial Setup

1

Invite the bot

Use the invite link to add DynastyDesk to your server. Accept all requested permissions — they are all required for the status board, threads, and reactions to work.

2

Run /dd setup

Fill in: league_name, starting_week (autocomplete), channel (where status board posts), role (member role, optional), commish (your Discord user). If your dynasty is already in Year 2 or later, also pass starting_year so the bot starts tracking the correct year without manual advancement.

3

Status board goes live

DynastyDesk immediately posts the status board to your league channel. Members react with ✓ to ready up or the island emoji to mark away. The board edits in-place.

4

Set your advance cadence

Run /schedule cadence — pick day, time, timezone, and cadence hours. DynastyDesk anchors to that schedule automatically every week.

Need to change the channel later? Run /dd channel. All league data stays intact — only the posting location changes. No redo required.

discordRosters

Each member claims their FBS team and optionally adds stream links. All 138 FBS programs are pre-loaded with standard abbreviations and conflict resolutions.

Commands

  • /roster add — Claim a team with full autocomplete. Commishes can set for any member.
  • /roster set — Update team or stream links after setup.
  • /roster view — Show the full league roster with streams.

Abbreviation conflicts

  • OSU = Ohio State · ORST = Oregon State · OKST = Oklahoma State
  • SC = South Carolina · USC = Southern Cal

discordAdvance Cadence

The cadence anchors to a fixed schedule regardless of when advances happen — no drift over the season.

/schedule cadence options

  • hours — Cadence in hours (48, 72, 96, etc.)
  • day — Anchor day of week
  • hour + ampm + minute — Time of day
  • timezone — ET / CT / MT / PT dropdown
  • advanceAuto (default) or Manual — see below

Auto vs. Manual advance

By default the bot advances the week automatically the moment the deadline passes. Set advance: Manual to have the bot ping commishes instead — the cadence still tracks so there's no drift, but the advance only happens when a commish runs /advance.

Good for: leagues that occasionally need a short grace period to let a player finish their game before the week closes. Commishes get a channel ping the moment the deadline passes, then advance on their own schedule.

DST note: Offsets in the dropdown reflect summer/DST hours. After DST ends (November) or begins (March), re-run /schedule cadence to correct the offset by one hour.

Other schedule commands

  • /schedule pause — Pause auto-advances for breaks
  • /schedule resume — Resume from pause
  • /schedule offseason — Enter offseason mode
  • /schedule view — Show current settings, next deadline, and advance mode

discordRunning an Advance

1

/advance start

Launches the wizard. Shows the next advance deadline, pre-set matchups for next week, a per-matchup checklist of any FWs still needing in-game action, and a summary of FW outcomes already recorded this week via /matchup fw.

2

Review and confirm

Bot shows a summary of the current week. Commish confirms to proceed.

3

Week advances

Status board updates to the new week, open UvU threads are archived, and the next deadline snaps to the cadence anchor.

Use /preview anytime for a readiness snapshot without starting the advance.

Manual advance mode: If your cadence is set to Manual, the bot posts a channel ping when the deadline passes and waits for a commish to run /advance. The next deadline still snaps to the cadence anchor — no drift regardless of how long the delay is.

discordMatchups

DynastyDesk tracks user vs user matchups and creates dedicated Discord threads for each game.

Commands

  • /matchup set — Creates the matchup and opens a UvU thread named "{WeekLabel}: ABBR1 vs ABBR2"
  • /matchup schedule — Set a game time with timezone support
  • /matchup view — See all current week matchups
  • /result log — Record your final score, optional ranks and opponent team. CPU games confirm instantly; UvU games DM your opponent for confirmation.
  • /result view — View your logged result for the current week
  • /matchup sim — Mark as a sim (no thread)
  • /matchup clear — Remove a matchup

Deadline updates from /schedule cadence or /week set push to all open threads in real time. Threads are archived automatically on advance.

discordForfeit Wins (FW)

1

Member runs /fw give @opponent

Records the FW request on the matchup and flags it as "FW Pending" on the status board.

2

All commishes are DM'd

Every commish ID on the league receives a direct message notification immediately, showing display names so the alert is readable on mobile.

3

Commish grants in-game

No explicit close-out command required. Clears during the advance flow.

discordAway Status

Members mark themselves away with /away set. Away users count toward the all-ready threshold — commishes don't have to manually account for them. Use /away clear to remove.

Away + UvU: If an away member has a matchup, the bot automatically flags it FW Pending and DMs all commishes.

discordStream Alerts

When a member is about to play their game and wants the league to tune in, they run /golive. The bot posts a rich embed to a dedicated stream alert channel — separate from the status board — with their stream link(s), current week, and matchup details.

Admin setup (one-time)

1

Configure the alert channel

Run /dd streams channel with no argument to auto-create #stream-alerts, or pass an existing channel to use it instead. This enables stream alerts in one step.

2

Members add stream links

Each member runs /roster set to add their Twitch or YouTube URL (or both). These are also used by /games for the weekly UvU schedule view.

Member usage

  • /golive — Posts the go-live embed to the stream alert channel. Shows both Twitch and YouTube if both are configured. Includes the week label and opponent (or "Simulation game" for CPU matchups).

Admin controls

  • /dd streams disable — Pauses stream alerts without clearing the channel config. Re-run /dd streams enable to resume.

No stream link set? If a member runs /golive without a Twitch or YouTube URL on their profile, they receive a private message with instructions to add one via /roster set.

webWeb App

Playing solo without a Discord server? Start here — create your team directly from the web app, no bot required. Everyone gets the full web app either way, whether your league runs through Discord or entirely on the web.

The DynastyDesk web app is available at web.dynastydesk.gg. Sign in with Discord (the same account you use in the bot), Google, or email magic link — no password required.

Tracking more than one dynasty? Use the + Add another league link in the sidebar (or on the league picker) to create a second team — switch between your leagues anytime from the same sidebar dropdown.

What each role sees

  • Commissioner — full League Ops sidebar: all matchups for the current week, member ready status, recent activity log, the full league member list, and conference realignment.
  • Member — personal view: your current matchup card (opponent, status, submit CTA), last game summary with box score and stat leaders, and your Roster page.

Setting your schedule

Your personal schedule is on the home page. Each week row shows your opponent (or a "Set Schedule" prompt if none is set yet). Click any unscheduled week to expand it and choose the game type:

  • vs. User — select your opponent from the league member list. Location (Home / Away / Neutral) is optional.
  • vs. CPU — pick the in-game CPU opponent team from the dropdown. The team logo appears on your schedule immediately. An FCS (generic) entry is available for games where the game subs in a generic FCS opponent instead of a real school.

For weeks where the bot already created a sim matchup, click the row and choose Set Opponent to attach a CPU team. You can also edit it later with Edit Opponent.

Solo leagues (no other members) skip the vs. User / vs. CPU toggle entirely — the form goes straight to the CPU team picker.

Set something up by mistake, or have a bye week? Click Delete on any game that hasn't had a result or stats logged yet to remove it — the week goes back to unscheduled. Bye weeks don't need anything entered at all; just leave them blank. A "?" help icon next to the Schedule heading has these tips at a glance.

Preseason (Week 1) doesn't appear as a schedule row since it never has game data. A persistent label next to the page title always shows your league's current week/phase — including every offseason week (Portal, Signing Day, Training Results, etc.) — so you always know where you are.

Past unscheduled weeks also let you log the final score inline at the same time — check Also log result after selecting the game type.

Submitting stats via the web

There are three ways to log game stats from the web app:

  • Dashboard shortcut — after a matchup is set, an Add Stats link appears under the week label on your schedule. Clicking it opens manual entry with the correct week pre-selected.
  • Import Stats (Stats → Import Stats) — drag-and-drop your post-game screenshots. Supports the same 1–7 screenshot batches as the Discord bot and shows a fully editable review table before saving.
  • Enter Manually (Stats → Enter Manually) — type stats directly into the form. Player names autocomplete from your active roster filtered by position, and tabs pre-populate rows for players who already have a stat logged this season in that category. Your team is filled in automatically from your roster assignment — no need to type it. Optionally add a final score to sync the game result at the same time.

Stats submitted through the web are identical to /stats submit in Discord. Either method works; you don't need to use both.

webRoster & Players

The Roster page is your team's player database for the current dynasty season. Players are created automatically when stats are submitted — their name appears immediately. From there, you fill in the details that OCR can't read from stat screens.

Importing players via screenshot

1

Open the Roster page and click "Upload Roster"

The upload modal accepts screenshots of the in-game Roster screen (PS5 4K). Drag files in or browse.

2

Upload one or more scrolled screenshots

Each screenshot captures ~10 players. Upload multiple images to cover your full roster — duplicates are automatically deduplicated by name.

3

Players appear in your Roster table

Name, year, position, OVR, and redshirt status are populated from the screenshot. Archetype and dev trait are not visible on the Roster screen — fill those in manually.

Enriching players manually

Players without a position or OVR are sorted to the top with a yellow indicator. Click any cell to edit: position (select), archetype (position-dependent select — options populate once a position is chosen), dev trait (Normal / Impact / Star / Elite), OVR (numeric field, no spinners). Hit Save per row. Changes take effect immediately.

The dashboard shows a banner when you have incomplete players so you don't lose track.

webSeasons & Redshirts

DynastyDesk tracks a dynasty year (e.g. 2026) for your league. Each player has a per-season record — so OVR changes between years are preserved as history rather than overwriting the previous value.

Class progression

When the bot advances past Week 30 (Encourage Transfers), the new season begins automatically:

  • FR → SO → JR → SR each year.
  • SR players without a redshirt flag are marked inactive (graduated). Their historical stats remain.
  • OVR resets to empty for the new season — reimport from the updated Roster screenshot or enter manually.
  • Position, archetype, and dev trait carry forward.

Redshirt tracking

If a player is redshirting mid-season, check the RS? column on the Roster page before the season rolls over. At rollover:

  • The player stays at their current class for one more year.
  • The permanent (RS) label is applied and shown in the Year column going forward.
  • Subsequent years: SO (RS) → JR (RS) → SR (RS) → graduated.

Timing matters — mark redshirts before the bot advances past Week 30. The flag clears after rollover and must be re-set if the player redshirts again.

webRecord Book

The Record Book tracks dynasty records at three scopes — National, conference, and school — across Season, Game, and Career stat categories. Records are maintained globally by app admins and can be overridden per-league by the commish.

Importing records via screenshot

Navigate to Records → Import in the web dashboard. Drop a CFB Records screenshot (PS5 4K, 3840×2160) onto the upload area. DynastyDesk reads all 9 record holders — name, school, year (Season/Game), and stat value — using OCR and shows a review table before anything is saved.

1

Open the in-game Record Book

Navigate to your desired scope (National, conference, or school) and level (Season, Game, or Career) in CFB 25. Take a PS5 screenshot with the Create button.

2

Upload the screenshot

Drop the file on the Import page. The level (Season / Game / Career) is detected automatically from the image — the correct tab will be pre-selected in the review card. If detection fails, pick the level manually before importing.

3

Review and confirm

Check the parsed rows. Any field the OCR read with low confidence is highlighted in amber — edit inline before saving. Click Import Records to save all 9 rows for that scope and level.

Screenshot requirements — must be 4K (3840×2160). Go to PS5 Settings → Screen and Video → Video Output → Resolution → 2160p if your screenshots are coming out at a lower resolution.

Contributing school records

School records can be contributed by members directly — no admin action required to submit. Navigate to Records → Contribute School Records. The scope is automatically locked to your assigned team. Take one screenshot per level (Season, Game, Career) from the in-game CFB Records screen filtered to your school, then upload them here and review the OCR results before submitting.

1

Navigate to your school's records

In CFB 25, open the CFB Records screen and use L2/R2 to select your school's scope. Switch to the Season, Game, or Career tab and take a PS5 4K screenshot for each.

2

Upload and review

Drop your screenshots on the Contribute page. OCR reads all 9 record holders automatically. Review the parsed values — edit anything that looks off — then click Submit for Review.

3

Approval

Submissions go to the app admin queue. Once approved, the records appear globally for all leagues using that school. You'll see the status (pending / approved / rejected) on the Record Book page under your school's scope.

One submission per level — you can submit Season, Game, and Career records separately, at different times. If a submission is rejected, the admin note will appear on the Record Book page and you can correct and re-submit.

Viewing records

The Record Book page shows the current record holder for each stat alongside a best-chaser progress bar — the active player who is closest to breaking the record, with an on-pace projection. Tabs switch between Season / Game / Career; a scope row lets you drill down from National to conference to school. Conference-scope chasers always reflect a school's current conference — see Conference Realignment if your commish has moved schools between conferences.

My Record Watch

Find Records in the My Team sidebar section. This personal view shows your team's active players chasing school, conference, and national records all on one page — no scope switching needed.

The Season tab displays a progress bar and on-pace projection for your best player in each stat category at every scope. A ★ badge and "record broken!" label highlight any player who has already surpassed the current mark. Game and Career tabs show the record holders for reference. If your school's records haven't been contributed yet, the school section shows a prompt to contribute them.

webTrophy Case & Awards

The Awards section tracks end-of-season individual awards and All-American / All-Conference selections for your dynasty.

Entering awards

Users can submit their own players' awards via Awards → Submit My Awards. Commishes can enter any team's winners via Awards → Manage Awards. Awards are always recorded against the current dynasty year — no manual year selection needed.

Three categories are supported:

  • Individual Awards — named trophies (Heisman, Biletnikoff, Outland Trophy, Butkus Award, etc.)
  • All-Americans — National 1st Team, 2nd Team, and Freshman selections by position
  • All-Conference — Conference 1st Team, 2nd Team, and Freshman selections by position

When entering All-American or All-Conference selections, specify a position (QB, RB, WR, etc.) so the Trophy Case can display them in the correct team layout.

Trophy Case

Find Awards → Trophy Case in the sidebar. The page has three sections — Individual Awards, All-Americans (with 1st / 2nd / Freshman tabs), and All-Conference (conference chips + tier tabs). Year tabs at the top let you browse past seasons.

Your team's award winners are highlighted in each section. Award badges also appear next to player names on your Roster page: a trophy icon for individual award winners, a gold star for All-Americans, and a purple star for All-Conference selections.

webConference Realignment

Commishes can move schools between conferences for their league from League Ops → Conferences. Conferences themselves never change — the same fixed set always exists — only which schools belong to which conference. New leagues start from the current real-world alignment; if you haven't customized a school's conference yet, it'll reflect that default automatically.

Realigning conferences

The Conferences page shows one column per conference, with each member school as a logo card. Drag a school's card into a different conference's column to move it. Not confident reading every logo? Click Show school names to display the school name alongside each logo. Click Save to commit your changes — only the schools you actually moved are updated.

Changes take effect starting the league's current dynasty year, so this is best done during the preseason before that year's games are logged. A banner on the League page reminds the commish to review conference alignment during the preseason and offseason.

History is preserved — moving a school to a new conference doesn't rewrite anything. Record book entries set while a school was in its old conference stay attributed to that conference forever, and standings/records from prior seasons are untouched.

Conference Record

Each team's stats page now shows a Conference Record card — season and career win-loss record against conference opponents (games where both teams share a conference that season). Moving to a new conference starts a fresh career tally there automatically; a Conference History list shows the record compiled in any conference the team belonged to previously.

Command Reference

Setup & Config

/dd setup
Initial league setup
Commish only
/dd channel
Change the league channel
Commish only
/dd streams channel
Set or auto-create the stream alert channel and enable alerts
Commish only
/dd streams enable
Re-enable stream alerts (channel must be configured)
Commish only
/dd streams disable
Pause stream alerts, preserves channel config
Commish only

Schedule

/schedule cadence
Configure advance schedule
Commish only
/schedule view
Show cadence settings and next deadline
Anyone
/schedule pause
Pause automatic advances
Commish only
/schedule resume
Resume from pause
Commish only
/schedule offseason
Enter offseason mode
Commish only

Week & Advance

/week set
Manually set current week
Commish only
/advance start
Launch the advance wizard — shows pre-set matchups and FW checklist with grant targets
Commish only
/advance confirm
Confirm and execute the advance
Commish only
/preview
Readiness snapshot
Anyone

Roster

/roster add
Add member with team + streams
Commish / Member
/roster set
Update team or stream links
Commish / Member
/roster view
View full league roster
Anyone

Matchups

/matchup set
Create UvU matchup + thread
Commish only
/matchup schedule
Set game time with timezone
Commish / Member
/matchup view
See this week's matchups
Anyone
/result log
Record post-game score, ranks, and opponent team. CPU auto-confirms; UvU sends DM to opponent.
Member
/result view
View your logged result for the current week
Member
/matchup sim
Mark as sim game
Commish only
/matchup fw
Grant forfeit win
Commish only
/matchup clear
Remove a matchup
Commish only

Member Commands

/away set
Mark yourself away this week
Member
/away clear
Remove away status
Member
/fw give
Request FW from opponent
Member
/golive
Post a go-live embed with stream link(s), week, and matchup details to the stream alert channel
Member
/games
Weekly UvU schedule + streams
Anyone
/mydesk
Your leagues, opponents & deadlines
Anyone
/stats submit
Upload 1–7 post-game screenshots for automatic stat parsing. Optional week parameter to submit for a past week (defaults to current).
Member
/help
Quick reference + support link
Anyone

FAQ

Is DynastyDesk free?
Yes, completely free. No subscriptions, no premium tiers.
What game does it support?
EA College Football 25 dynasty leagues. All 138 FBS teams pre-loaded including NDSU and Sacramento State (joining FBS in 2026).
Do I need webhooks or a game API?
No. DynastyDesk is fully manual — it works on commissioner input and member reactions. More flexible and more reliable than webhook-dependent bots.
Can I set up mid-season?
Yes. Use the starting_week autocomplete in /dd setup to match your current position in the season. Weeks before your starting point will have no data — that's expected.
My dynasty is already in Year 3+ — do I have to advance through every prior year?
No. Pass starting_year in /dd setup (e.g. starting_year:2028) alongside starting_week. The bot starts tracking from that exact year and week. Prior years are blank by design — DynastyDesk only tracks from the point you set up.
Can I use it in an existing server?
Yes. Point it at any channel. If your server has non-league members, set a member role during setup to scope all bot interactions.
How do I change the league channel?
Run /dd channel. All league data stays intact — no redo required.
Can I have multiple commishes?
Yes. Multiple commish IDs are supported. All receive DM notifications for FW requests and alerts.
My timezone looks off after November.
The timezone dropdown uses summer/DST offsets. Re-run /schedule cadence after DST ends in November or begins in March to correct by one hour.
How do I remove the bot?
Right-click DynastyDesk in your member list and select Remove from Server. League data is preserved in the database — re-invite later and it picks up where it left off.
Something broke. Where do I get help?
Join DynastyDesk HQ at discord.gg/PUp8auGwY and post in #setup-help or #bug-reports with the command you ran and what happened.