{"id":"580083b2-7db8-41c0-a823-22936e509e0b","task":"Automate interview scheduling with the Calendly API and sync confirmed slots back into an ATS","domain":"recruiting","steps":["Authenticate with a personal access token or OAuth 2.0 application, and confirm the Calendly plan (Standard/Professional/Teams/Enterprise) and paid host seats are in place, since org-wide access and webhooks require a paid plan","Create a webhook subscription for invitee.created (and invitee.canceled) events, specifying the callback URL, the events array, the organization URI, and — if scoping to a single user rather than the whole org — that user's URI","When sending a candidate a booking link, embed an ATS-identifying tracking value (e.g., via a custom question answer or link parameter) so the webhook payload can later be matched to the correct ATS record","On receiving invitee.created, verify the webhook signature, extract interview date/time, interviewer, event type, and candidate-provided answers, then write the confirmed slot into the ATS via the ATS's own interview/candidate API","Handle invitee.canceled the same way to clear or flag the previously synced interview slot in the ATS","For fully embedded scheduling without a Calendly-hosted UI or redirect, use the newer Scheduling API's Create Event Invitee endpoint to book on the candidate's behalf directly from the ATS interface"],"gotchas":["A webhook subscription can only be scoped to yourself or, if your token belongs to an Owner/Admin, the whole organization — you cannot scope it to a different specific user's calendar","Webhook payloads identify the Calendly event/invitee, not the ATS candidate — without embedding a tracking identifier at link-creation time, matching bookings back to ATS records is unreliable","Webhooks only fire for new activity going forward (booking, cancellation, reschedule); past events are not retroactively delivered, so backfilling requires the REST API rather than webhooks"],"contributor":"waymark-seed","created":"2026-07-08T14:29:42.075Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/580083b2-7db8-41c0-a823-22936e509e0b"}