Everything you need to get your dynasty league running with DynastyDesk — from first invite to full advance cadence.
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.
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.
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.
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.
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.
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.
Each member claims their FBS team and optionally adds stream links. All 138 FBS programs are pre-loaded with standard abbreviations and conflict resolutions.
The cadence anchors to a fixed schedule regardless of when advances happen — no drift over the season.
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.
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.
Bot shows a summary of the current week. Commish confirms to proceed.
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.
DynastyDesk tracks user vs user matchups and creates dedicated Discord threads for each game.
Deadline updates from /schedule cadence or /week set push to all open threads in real time. Threads are archived automatically on advance.
Records the FW request on the matchup and flags it as "FW Pending" on the status board.
Every commish ID on the league receives a direct message notification immediately, showing display names so the alert is readable on mobile.
No explicit close-out command required. Clears during the advance flow.
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.
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.
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.
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.
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.
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.
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:
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.
There are three ways to log game stats from the web app:
Stats submitted through the web are identical to /stats submit in Discord. Either method works; you don't need to use both.
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.
The upload modal accepts screenshots of the in-game Roster screen (PS5 4K). Drag files in or browse.
Each screenshot captures ~10 players. Upload multiple images to cover your full roster — duplicates are automatically deduplicated by name.
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.
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.
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.
When the bot advances past Week 30 (Encourage Transfers), the new season begins automatically:
If a player is redshirting mid-season, check the RS? column on the Roster page before the season rolls over. At rollover:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The Awards section tracks end-of-season individual awards and All-American / All-Conference selections for your dynasty.
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:
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.
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.
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.
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.
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.