Meeting Polls
Propose multiple time slots, let invitees vote, then finalize the winner — for meetings where finding mutual time matters more than the exact slot.
Sometimes you can't pick a time without asking. A board meeting with seven people, a design review across three time zones, a candidate debrief with the panel — the right meeting type isn't a slot picker, it's a poll.
A meeting poll is a Workestra link where the host proposes the times and invitees vote for the ones that work. Once enough votes are in, the host picks the winner and the poll converts to a real booking — emails, calendar invite, reminders, the full lifecycle.
Screenshot needed — /poll/<token> with a list of proposed slots and checkboxes
When to use a poll vs a normal link
| Use a normal booking link when | Use a meeting poll when |
|---|---|
| One invitee, you have availability rules to follow | Many invitees, finding overlap matters |
| The slot picker is faster than asking | The "right" slot depends on which invitees can make it |
| You're booking inbound demand at scale | You're scheduling a specific known group |
Creating a poll
Path: /calendar/polls → New poll.
| Field | What it does |
|---|---|
| Title | Public-facing meeting name |
| Duration | How long the meeting is, in minutes |
| Description | Shown above the slot list |
| Proposed slots | Up to 40 specific date+time entries. Pick from a date grid, set the start time. End time is start + duration. |
| Invitees | Either a list of email addresses (up to 50) or a public token URL anyone can use. Mixing both is fine. |
| Voting deadline | Optional. Polls without a deadline stay open until you finalize. |
Saved polls land at /poll/<token> — the public vote URL. Invitees with email addresses get an email with the URL pre-filled with their identity (so they don't need to re-type their name).
Voting
Each invitee:
- Opens
/poll/<token> - Sees the proposed slots in their local time zone
- Checks the slots that work and submits
That's it. No account needed. Their votes are stored in scheduling_poll_votes, scoped to the poll and the email address. Re-voting overrides previous votes — they can change their mind until the poll is finalized.
The host can see real-time vote tallies on /calendar/polls/<id> — a row per slot with a count and a hover-to-see list of who voted yes.
Finalizing
Once you're ready to commit:
- Click Finalize on the poll detail page
- Pick the winning slot from the tallies
- Optionally include the non-winning invitees in the booking (e.g. "everyone who voted gets the calendar invite, even if they couldn't make this slot")
- Confirm
Workestra:
- Creates a
scheduling_calendar_eventsrow at the chosen slot - Sends a calendar invite to all included invitees (with
.icsattachments) - Sends a "poll closed" email to invitees you excluded (so they know it's resolved)
- Marks the poll row as
finalized— the public/poll/<token>URL now shows "Closed: meeting scheduled for<date>"
The booking that results is a normal Workestra booking. Reschedule, cancel, reminders, no-show marking, workflows — all of it works the same way.
What's stored
scheduling_polls holds the poll header (title, duration, description, deadline, status). scheduling_poll_votes stores (poll_id, slot_id, voter_email, voter_name, voted_at). There's one vote row per (slot, voter) pair when an invitee votes "yes" for a slot — voting "no" or unchecking writes a deletion.
The poll's host is the workspace user who created it. RBAC respects the standard view/edit permissions.
Limits
- 40 proposed slots per poll — the UI starts pushing back at 25. More than 40 and invitee fatigue kills response rate anyway.
- 50 invitees per poll if you're listing them by email. Public-token polls have no invitee cap.
- One active token per poll — re-issuing the token invalidates the old URL.
- No vote re-opening after finalization. Once you finalize, you can't go back to voting. Cancel the resulting booking and create a new poll if you really need to.
Mid-poll changes
You can edit the description, deadline, and invitee list while the poll is open. You can't add or remove proposed slots after the first vote arrives — that would invalidate existing votes. If you need to change the slots, finalize-or-cancel the existing poll and start a new one.
Read next
- Booking Links — what the resulting booking looks like
- One-Off Meetings — for "one specific invitee, pick from offered slots" without voting
- Workflows — fire reminders on the booking that resulted from a poll
- Mutual Availability — for invitees who happen to be Workestra users in the same workspace