From when2meet
This skill should be used when the user asks to "create a when2meet", "set up a when2meet poll", "schedule a meeting poll", "pre-fill availability on when2meet", "create a sign-up sheet for meetings", "use when2meet API", "automate when2meet", or needs to programmatically create When2Meet events and fill in availability for participants. Provides the reverse-engineered When2Meet API and a ready-to-run Python script.
npx claudepluginhub varunr89/claude-marketplace --plugin when2meetThis skill uses the workspace's default tool permissions.
Programmatically create When2Meet events and pre-fill participant availability
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Programmatically create When2Meet events and pre-fill participant availability using When2Meet's reverse-engineered HTTP API. This avoids manual data entry when organizers already know some participants' schedules.
Before writing any code, collect from the user:
| Parameter | Example |
|---|---|
| Event name | "Project Meeting Sign-Up" |
| Dates (specific) | Feb 9, 11, 12, 13 2026 |
| Time window | 10:00 AM to 6:00 PM |
| Timezone | America/Los_Angeles |
| Participants + availability | Keith: Mon 11-11:30, Wed 10-10:45... |
POST multipart form data to https://www.when2meet.com/SaveNewEvent.php.
Key fields: NewEventName, DateTypes ("SpecificDates"), PossibleDates
(pipe-delimited YYYY-MM-DD), NoEarlierThan / NoLaterThan (hours 0-23),
TimeZone (IANA name).
The response HTML contains window.location='./?SLUG' with the event slug.
Normalize the relative path (strip leading ./) to build the full URL.
GET the event page at https://www.when2meet.com/?SLUG. Parse
TimeOfSlot[n]=<unix_timestamp>; from the embedded JavaScript. These
timestamps are the canonical slot IDs; never compute them manually.
POST to https://www.when2meet.com/ProcessLogin.php with id (numeric event
ID), name, password ("" for open events), and _ (""). The response body
is the plain-text person ID.
POST to https://www.when2meet.com/SaveTimes.php. Critical: send ALL
event slots in the slots field (each timestamp followed by %), with a
positional availability string of 0s and 1s marking which slots are
available. The server uses position-based mapping, so sending only available
slots will misalign the data.
Fields: person, event, slots, availability, _ ("").
SaveTimes.php maps the
availability string positionally against the full slot list. Sending a
subset causes silent misalignment.requests, use files= parameter with (None, value) tuples../?34954911-FtY36). Strip the
./ prefix before constructing the full URL.TimeOfSlot values from the server
rather than computing timestamps manually. The server handles timezone
conversion when the event specifies a TimeZone field.A complete, tested Python script is available at:
scripts/when2meet_setup.py
To customize for a new event, edit the configuration block at the top of the
script: EVENT_NAME, DATES, NO_EARLIER_THAN, NO_LATER_THAN,
TIMEZONE, and the PARTICIPANTS dictionary.
Run with: python scripts/when2meet_setup.py (requires requests in a venv).
references/api-reference.md: Complete When2Meet API documentation
with all endpoints, field formats, response parsing, and slot timestamp
detailsscripts/when2meet_setup.py: Full working script for creating events
and pre-filling availability. Edit the config block and run.