There’s no native “sign-up sheet” feature in Microsoft Teams or Microsoft 365 — nothing that lets you list several sessions, cap seats on each, and watch it close itself when a session fills. Microsoft’s own community has been asking for this for years, and every answer is a workaround built on top of a tool meant for something else: Forms, a SharePoint/Microsoft List, Power Automate, Microsoft Bookings, or Teams meeting registration. Each one does part of the job. Here’s what each actually does, and where it breaks down.
What people actually mean by “sign-up sheet”
When someone searches for the best way to build one in Teams or Microsoft 365, the job is usually:
- Several sessions on one sheet — a training that runs on three dates, or an event with multiple time slots.
- A real cap per session — not a soft limit someone has to enforce by watching a spreadsheet.
- It closes itself when full — so a 31st person can’t pick a 30-seat session and find out later.
- People can cancel or switch — and the seat reopens.
- A confirmation with a calendar entry — so the person doesn’t have to remember what they picked.
No single Microsoft 365 feature covers all five. That’s the actual gap behind the search.
The question Microsoft’s own community still hasn’t answered natively
The top discussion for this exact phrasing is a SharePoint Tech Community thread, Best way to create a Sign-Up sheet, where someone needed a sheet capped at 30 people, first-come-first-served, no waitlist. The accepted-style answer: build a SharePoint list, pre-create one row per seat, and lock permissions down to “edit, no contribute, no delete” so people can claim a row but not add new ones. No code, no Power Automate — but also no cap enforcement beyond “there are only 30 rows,” no confirmation email, and no calendar invite.
A related thread, MS Form Limit Number of Responses, asked the narrower question of whether Forms itself could stop accepting responses at a set number. It ran from 2019 to 2023 with replies still arriving years apart, one commenter noting in 2023 that “almost 4 years passed and we still” didn’t have the feature. The accepted answer is unchanged the whole time: “no you can’t do this directly from Forms. All you can do is use Flow to save the response to a SharePoint list.” That’s a workaround, not a fix — and it’s the same answer Microsoft gives today.
Microsoft Forms: no cap per option, and no cap in total
Forms is usually the first thing people reach for, because it’s the easiest way to collect names. It has no setting to limit how many people can pick a given option, and no setting to stop accepting responses once a target number is hit. Microsoft Q&A has dozens of threads asking for exactly this — one asking to limit the total number of responses shows over 400 people clicking “I have the same question.” A 2025 question about sending one training invite across three dates with a 15-person cap on each got a direct answer from a Microsoft moderator: Forms can’t do it, full stop — the options stay open no matter how many people pick them, and the two real workarounds are Microsoft Bookings (set up each date as a bookable service) or Power Automate (which can alert you when a target is hit, but can’t turn off an option by itself).
SharePoint or a Microsoft List: it can work, but overbooking is a real risk
The DIY path with the most control is a SharePoint list or Microsoft List: give each session a row with a capacity number, or build a proper two-list setup (one list for sessions, one for registrations) wired to a Power Automate flow. A detailed build guide for exactly this, Building a Registration Sign-up Solution in SharePoint, is unusually honest about the catch: “if two people can see the last available seat, both can press Register.” The fix it recommends — a Power Automate flow with concurrency forced to one, so submissions are processed one at a time — works, but Microsoft only allows 11 queued runs when concurrency is throttled that way, so a sudden rush of sign-ups can outrun the flow. The guide’s own conclusion is that this is “a practical control for low-volume internal events,” not a general answer — and building it means designing capacity checks, waitlist logic, and failure recovery yourself.
Microsoft Bookings: real capacity caps, wrong shape
Bookings is the one place Microsoft enforces a real seat cap without a custom flow — set a service’s maximum number of attendees, and once a time slot hits that number, Bookings stops taking appointments for it. Asked directly how to handle a 15-seat training session offered on three dates, Microsoft’s own support staff pointed to exactly this: create a separate Bookings service for each date and set its maximum attendees. It works. But Bookings is built as an appointment-scheduling calendar, not a sign-up sheet — there’s no single shareable page listing every session with seats remaining side by side, and turning a calendar tool into a stand-in for a multi-date sheet means configuring services, staff, and booking pages for a job it wasn’t designed to show.
Teams meeting and webinar registration: the real cap, with a narrow scope
If your “sessions” are online meetings, Teams does cap attendance natively. Set a registration limit on a Teams webinar, and once it’s full, people who try to register are turned away — Microsoft Q&A on Teams webinar registrations confirms that someone who isn’t registered hits a “Sold out – at full capacity” message at the join link, and Microsoft’s meeting, webinar and town hall feature comparison page confirms registration limits are a real, built-in setting. The catch is scope: it caps registration for one online meeting at a time, the attendee ceiling depends on your Microsoft 365 plan, and it doesn’t give you one page covering several in-person sessions, locations, or dates the way a sign-up sheet needs to.
It’s also easy to confuse with Outlook’s Scheduling Poll (formerly FindTime), which proposes several meeting times and has people vote — but that’s for landing on one time that works for a group, not for people independently claiming different capped sessions.
Where this leaves an organizer
| Caps seats? | Multiple sessions on one sheet? | Confirmation + calendar file? | Self-serve cancel/switch? | |
|---|---|---|---|---|
| Microsoft Forms | No | Yes (as choices) | No | No |
| SharePoint / Microsoft List | Only with custom build | Yes | No | No |
| Power Automate (on top of the above) | Alerts only, doesn’t enforce | Depends on the build | Can be built | Can be built |
| Microsoft Bookings | Yes, per service | Awkwardly (one service per date) | Yes (.ics) | Yes, via Bookings |
| Teams meeting/webinar registration | Yes, per meeting | No — one meeting at a time | Yes | Limited |
Every native path either doesn’t enforce the cap, enforces it for the wrong unit (one appointment, one meeting), or needs you to build and maintain the missing piece yourself in Power Automate. For a quick one-off with a handful of people, the SharePoint-list hack from that 2019 thread is still a fine answer. For anything with real capacity pressure — more than a few sessions, more than a handful of people per session, or seats that actually run out — it’s worth having a tool built for the job instead of assembled from three others.
That’s what we built Sign-Up Sheets for Microsoft 365 for: an organizer lists sessions with a date, time, place and a real seat count; people sign in with their Microsoft work account and pick one; a session closes the moment it’s full, no race condition to engineer around. People get a confirmation email with a calendar file and can cancel or switch themselves, and the organizer gets a live roster with an Excel export. It’s a new, unvalidated v1 — a straightforward web app, not a Teams app yet, free to try with no billing — but it does natively what the SharePoint list, the Power Automate flow, and the Bookings workaround are each trying to approximate on their own.