How to Schedule a D&D Campaign (or Any Tabletop Series)
How to Schedule a D&D Campaign (or Any Tabletop Series)
Getting five adults to agree on one game night is hard. Getting those same five adults to agree on twelve game nights — in advance, while their work schedules rotate, kids get sick, and the holidays approach — is the kind of logistical puzzle that ends campaigns before the party reaches level 5.
This guide is for Dungeon Masters running ongoing TTRPGs, Legacy board game groups grinding through Gloomhaven, and anyone trying to lock down a recurring game night that actually stays on the calendar. We'll walk through why campaign scheduling fails, what the "recurring group problem" really is, and how to solve it without drowning in spreadsheets.
Why Campaigns Are Harder Than One-Shots
A one-shot is forgiving. You pick the best single date from a poll, confirm it, and move on. If someone can't make it, they miss one session and life goes on.
A campaign is unforgiving in a completely different way. You are not finding a date — you are finding a run of dates that works for the same people, repeatedly, over weeks or months. The constraints compound: a date that works for four players in Week 1 may conflict with one of those players in Week 3. If you just pick sessions one at a time, you spend more time scheduling than playing.
The other trap is optimism. Groups agree on "every other Saturday" and assume the calendar will cooperate. It rarely does. One missed session bleeds into two, momentum stalls, and the campaign quietly dies.
The Recurring Group Problem
The heart of campaign scheduling is what you might call the recurring group problem: you need mostly the same people to show up, mostly every time, across a sequence of dates you have not fully agreed on yet.
This creates a scheduling paradox. You cannot confirm Session 4 without knowing who is available that night. But you cannot ask people to block off Session 4 without confirming it. Meanwhile, everyone has already filled their calendars two weeks out.
The traditional workarounds all have costs:
- Poll one session at a time: Accurate, but slow. You repeat the scheduling process from scratch every few weeks, and availability threads in group chats go stale fast.
- Fixed weekly slot: Clean in theory. Falls apart the moment one player's work schedule changes, a holiday appears, or a recurring conflict gets missed.
- Spreadsheet with a date grid: Works, but someone has to maintain it, and it quickly becomes unreadable.
What you actually need is a tool that collects availability across all the candidate dates at once, shows you which combinations of sessions work best for your group, and lets you lock in multiple confirmed sessions in a single action.
How Campaign Mode Works
Tabletop Time's Campaign mode is designed specifically for this problem.
Step 1: Create a Campaign Event
When you create a new event on Tabletop Time, you'll see two cards at the top of the creation page: One-Shot Session and Campaign / Series. Pick Campaign. You'll set a Minimum Sessions count — the fewest sessions you want to lock in for the campaign to feel real (the default is 4, but most groups running longer arcs aim for 6 to 8 for an initial block).
Then add all your candidate dates — the slot picker is labelled "Add candidate dates" as a reminder that you are collecting options, not committing yet. Be generous here. If you want to lock in six sessions, propose ten or twelve candidates. The extra options give the algorithm more combinations to work with and give players the flexibility to mark some dates as "If Needed" without blocking everything.
Step 2: Players Vote on Everything
Share the poll link with your group exactly like a normal event. Players see every candidate date and mark each one as Yes, If Needed, or No. A banner on the voting page tells them: "This is a multi-session campaign. Vote on every date you're available — the organizer will lock in multiple sessions." The experience is otherwise identical to a standard availability poll. Just ask players to fill out the whole grid, not just their favourite dates.
Step 3: Review the Player Grouping View
When you open the manage page, the campaign dashboard has already done the hard work. Instead of a flat list of dates, the app shows candidate dates grouped by shared player availability — each group represents a set of players who can all attend the same run of dates together.
Groups are sorted so the best options float to the top: groups that meet your Minimum Sessions count come first, then the groups with the most players (up to your table's max cap), then by number of available dates.
Each group header tells you everything you need to know at a glance: player name pills (green for YES, yellow for If Needed), a Quorum or Low Turnout badge, a player count ratio like 4/4, and the number of candidate dates the group covers. Expand any group to see the individual date rows — each one shows the core players on that date, plus a second row listing "also free" extras who are available that day but not in the core group. You can click an extra player pill to pull them into the session.
This turns a complex multi-variable puzzle into a visual decision. You stop guessing and start choosing.
Step 4: Click to Select, Tick to Trim, Then Confirm
Click a group header to enter selection mode — the group gets an indigo border and all its dates are pre-ticked. From there you just uncheck any dates you want to exclude. A finalization panel expands at the bottom of the selected group with a host selector (radio pills from players who volunteered to host), a location field, and a live "Confirm X Sessions" button that updates as you adjust your selection.
Click confirm and every checked session is locked simultaneously. There is no separate modal, no second form — the whole flow happens inline. Every player gets a single notification listing all the confirmed dates, and the finalized view generates per-session calendar buttons (Google, Outlook, and .ics) plus a single bulk .ics file that imports every session in one click.
No more session-by-session scheduling loops. No more stale polls. One finalization action, and the calendar is set.
Managing Subs and the Campaign Waitlist
Even in the best-planned campaigns, someone drops out mid-run. After a campaign is finalized, the event page shows an accepted player list alongside a Subs / Waitlist section — players who want to be considered as fill-ins for any session they are available for.
Having this list visible and attached to the campaign means you are never scrambling for a fill-in the night before a session. The candidates are already there, already marked with their availability, and a quick message to the group is all it takes.
Practical Tips for Campaign GMs
Poll early, poll wide. Send the availability link at least three weeks before you want to start. Adults fill availability polls faster when the dates feel distant and the pressure is low.
Set a response deadline. Tell players the poll closes in five days. Open-ended polls get ignored. A deadline creates a small amount of urgency that actually helps.
Plan for the gap. Even if you lock in eight sessions, something will disrupt one of them. Building a "makeup" buffer date into your initial candidate list means you already have a fallback without starting the scheduling process over.
Communicate the format. Let players know this is a Campaign poll upfront — they should expect to see many candidate dates, not just two or three. Groups that understand the format vote more completely.
Conclusion
Campaign scheduling is not just one-shot scheduling done twice. It is a fundamentally different problem that requires collecting availability at scale, finding combinations that work across a run of sessions, and managing an ongoing group where people come and go.
Tabletop Time's Campaign mode is built for exactly this. Collect all your availability at once, let the grouped view surface the combinations that actually work, click the group that fits your table, tick off the dates you want, and confirm. Done.
Your campaign deserves to finish. Stop letting the calendar be the final boss.